hotshot_contract_adapter/bindings/
light_client_v3.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
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!(@ name);
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()]
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()]
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///Module containing a contract's types and functions.
2235/**
2236
2237```solidity
2238library LightClient {
2239    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2241}
2242```*/
2243#[allow(
2244    non_camel_case_types,
2245    non_snake_case,
2246    clippy::pub_underscore_fields,
2247    clippy::style,
2248    clippy::empty_structs_with_brackets
2249)]
2250pub mod LightClient {
2251    use super::*;
2252    use alloy::sol_types as alloy_sol_types;
2253    #[derive(serde::Serialize, serde::Deserialize)]
2254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2255    /**```solidity
2256struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2257```*/
2258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2259    #[derive(Clone)]
2260    pub struct LightClientState {
2261        #[allow(missing_docs)]
2262        pub viewNum: u64,
2263        #[allow(missing_docs)]
2264        pub blockHeight: u64,
2265        #[allow(missing_docs)]
2266        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2267    }
2268    #[allow(
2269        non_camel_case_types,
2270        non_snake_case,
2271        clippy::pub_underscore_fields,
2272        clippy::style
2273    )]
2274    const _: () = {
2275        use alloy::sol_types as alloy_sol_types;
2276        #[doc(hidden)]
2277        #[allow(dead_code)]
2278        type UnderlyingSolTuple<'a> = (
2279            alloy::sol_types::sol_data::Uint<64>,
2280            alloy::sol_types::sol_data::Uint<64>,
2281            BN254::ScalarField,
2282        );
2283        #[doc(hidden)]
2284        type UnderlyingRustTuple<'a> = (
2285            u64,
2286            u64,
2287            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2288        );
2289        #[cfg(test)]
2290        #[allow(dead_code, unreachable_patterns)]
2291        fn _type_assertion(
2292            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2293        ) {
2294            match _t {
2295                alloy_sol_types::private::AssertTypeEq::<
2296                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2297                >(_) => {}
2298            }
2299        }
2300        #[automatically_derived]
2301        #[doc(hidden)]
2302        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2303            fn from(value: LightClientState) -> Self {
2304                (value.viewNum, value.blockHeight, value.blockCommRoot)
2305            }
2306        }
2307        #[automatically_derived]
2308        #[doc(hidden)]
2309        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2310            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2311                Self {
2312                    viewNum: tuple.0,
2313                    blockHeight: tuple.1,
2314                    blockCommRoot: tuple.2,
2315                }
2316            }
2317        }
2318        #[automatically_derived]
2319        impl alloy_sol_types::SolValue for LightClientState {
2320            type SolType = Self;
2321        }
2322        #[automatically_derived]
2323        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2324            #[inline]
2325            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2326                (
2327                    <alloy::sol_types::sol_data::Uint<
2328                        64,
2329                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2330                    <alloy::sol_types::sol_data::Uint<
2331                        64,
2332                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2333                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2334                        &self.blockCommRoot,
2335                    ),
2336                )
2337            }
2338            #[inline]
2339            fn stv_abi_encoded_size(&self) -> usize {
2340                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2341                    return size;
2342                }
2343                let tuple = <UnderlyingRustTuple<
2344                    '_,
2345                > as ::core::convert::From<Self>>::from(self.clone());
2346                <UnderlyingSolTuple<
2347                    '_,
2348                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2349            }
2350            #[inline]
2351            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2352                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2353            }
2354            #[inline]
2355            fn stv_abi_encode_packed_to(
2356                &self,
2357                out: &mut alloy_sol_types::private::Vec<u8>,
2358            ) {
2359                let tuple = <UnderlyingRustTuple<
2360                    '_,
2361                > as ::core::convert::From<Self>>::from(self.clone());
2362                <UnderlyingSolTuple<
2363                    '_,
2364                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2365            }
2366            #[inline]
2367            fn stv_abi_packed_encoded_size(&self) -> usize {
2368                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2369                    return size;
2370                }
2371                let tuple = <UnderlyingRustTuple<
2372                    '_,
2373                > as ::core::convert::From<Self>>::from(self.clone());
2374                <UnderlyingSolTuple<
2375                    '_,
2376                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2377            }
2378        }
2379        #[automatically_derived]
2380        impl alloy_sol_types::SolType for LightClientState {
2381            type RustType = Self;
2382            type Token<'a> = <UnderlyingSolTuple<
2383                'a,
2384            > as alloy_sol_types::SolType>::Token<'a>;
2385            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2386            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2387                '_,
2388            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2389            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2390                '_,
2391            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2392            #[inline]
2393            fn valid_token(token: &Self::Token<'_>) -> bool {
2394                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2395            }
2396            #[inline]
2397            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2398                let tuple = <UnderlyingSolTuple<
2399                    '_,
2400                > as alloy_sol_types::SolType>::detokenize(token);
2401                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2402            }
2403        }
2404        #[automatically_derived]
2405        impl alloy_sol_types::SolStruct for LightClientState {
2406            const NAME: &'static str = "LightClientState";
2407            #[inline]
2408            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2409                alloy_sol_types::private::Cow::Borrowed(
2410                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2411                )
2412            }
2413            #[inline]
2414            fn eip712_components() -> alloy_sol_types::private::Vec<
2415                alloy_sol_types::private::Cow<'static, str>,
2416            > {
2417                alloy_sol_types::private::Vec::new()
2418            }
2419            #[inline]
2420            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2421                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2422            }
2423            #[inline]
2424            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2425                [
2426                    <alloy::sol_types::sol_data::Uint<
2427                        64,
2428                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2429                        .0,
2430                    <alloy::sol_types::sol_data::Uint<
2431                        64,
2432                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2433                        .0,
2434                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2435                            &self.blockCommRoot,
2436                        )
2437                        .0,
2438                ]
2439                    .concat()
2440            }
2441        }
2442        #[automatically_derived]
2443        impl alloy_sol_types::EventTopic for LightClientState {
2444            #[inline]
2445            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2446                0usize
2447                    + <alloy::sol_types::sol_data::Uint<
2448                        64,
2449                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2450                        &rust.viewNum,
2451                    )
2452                    + <alloy::sol_types::sol_data::Uint<
2453                        64,
2454                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2455                        &rust.blockHeight,
2456                    )
2457                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2458                        &rust.blockCommRoot,
2459                    )
2460            }
2461            #[inline]
2462            fn encode_topic_preimage(
2463                rust: &Self::RustType,
2464                out: &mut alloy_sol_types::private::Vec<u8>,
2465            ) {
2466                out.reserve(
2467                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2468                );
2469                <alloy::sol_types::sol_data::Uint<
2470                    64,
2471                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2472                    &rust.viewNum,
2473                    out,
2474                );
2475                <alloy::sol_types::sol_data::Uint<
2476                    64,
2477                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2478                    &rust.blockHeight,
2479                    out,
2480                );
2481                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2482                    &rust.blockCommRoot,
2483                    out,
2484                );
2485            }
2486            #[inline]
2487            fn encode_topic(
2488                rust: &Self::RustType,
2489            ) -> alloy_sol_types::abi::token::WordToken {
2490                let mut out = alloy_sol_types::private::Vec::new();
2491                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2492                    rust,
2493                    &mut out,
2494                );
2495                alloy_sol_types::abi::token::WordToken(
2496                    alloy_sol_types::private::keccak256(out),
2497                )
2498            }
2499        }
2500    };
2501    #[derive(serde::Serialize, serde::Deserialize)]
2502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2503    /**```solidity
2504struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2505```*/
2506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2507    #[derive(Clone)]
2508    pub struct StakeTableState {
2509        #[allow(missing_docs)]
2510        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2511        #[allow(missing_docs)]
2512        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2513        #[allow(missing_docs)]
2514        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2515        #[allow(missing_docs)]
2516        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517    }
2518    #[allow(
2519        non_camel_case_types,
2520        non_snake_case,
2521        clippy::pub_underscore_fields,
2522        clippy::style
2523    )]
2524    const _: () = {
2525        use alloy::sol_types as alloy_sol_types;
2526        #[doc(hidden)]
2527        #[allow(dead_code)]
2528        type UnderlyingSolTuple<'a> = (
2529            alloy::sol_types::sol_data::Uint<256>,
2530            BN254::ScalarField,
2531            BN254::ScalarField,
2532            BN254::ScalarField,
2533        );
2534        #[doc(hidden)]
2535        type UnderlyingRustTuple<'a> = (
2536            alloy::sol_types::private::primitives::aliases::U256,
2537            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2538            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2539            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2540        );
2541        #[cfg(test)]
2542        #[allow(dead_code, unreachable_patterns)]
2543        fn _type_assertion(
2544            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2545        ) {
2546            match _t {
2547                alloy_sol_types::private::AssertTypeEq::<
2548                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2549                >(_) => {}
2550            }
2551        }
2552        #[automatically_derived]
2553        #[doc(hidden)]
2554        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2555            fn from(value: StakeTableState) -> Self {
2556                (
2557                    value.threshold,
2558                    value.blsKeyComm,
2559                    value.schnorrKeyComm,
2560                    value.amountComm,
2561                )
2562            }
2563        }
2564        #[automatically_derived]
2565        #[doc(hidden)]
2566        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2567            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2568                Self {
2569                    threshold: tuple.0,
2570                    blsKeyComm: tuple.1,
2571                    schnorrKeyComm: tuple.2,
2572                    amountComm: tuple.3,
2573                }
2574            }
2575        }
2576        #[automatically_derived]
2577        impl alloy_sol_types::SolValue for StakeTableState {
2578            type SolType = Self;
2579        }
2580        #[automatically_derived]
2581        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2582            #[inline]
2583            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2584                (
2585                    <alloy::sol_types::sol_data::Uint<
2586                        256,
2587                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2588                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2589                        &self.blsKeyComm,
2590                    ),
2591                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2592                        &self.schnorrKeyComm,
2593                    ),
2594                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2595                        &self.amountComm,
2596                    ),
2597                )
2598            }
2599            #[inline]
2600            fn stv_abi_encoded_size(&self) -> usize {
2601                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2602                    return size;
2603                }
2604                let tuple = <UnderlyingRustTuple<
2605                    '_,
2606                > as ::core::convert::From<Self>>::from(self.clone());
2607                <UnderlyingSolTuple<
2608                    '_,
2609                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2610            }
2611            #[inline]
2612            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2613                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2614            }
2615            #[inline]
2616            fn stv_abi_encode_packed_to(
2617                &self,
2618                out: &mut alloy_sol_types::private::Vec<u8>,
2619            ) {
2620                let tuple = <UnderlyingRustTuple<
2621                    '_,
2622                > as ::core::convert::From<Self>>::from(self.clone());
2623                <UnderlyingSolTuple<
2624                    '_,
2625                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2626            }
2627            #[inline]
2628            fn stv_abi_packed_encoded_size(&self) -> usize {
2629                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2630                    return size;
2631                }
2632                let tuple = <UnderlyingRustTuple<
2633                    '_,
2634                > as ::core::convert::From<Self>>::from(self.clone());
2635                <UnderlyingSolTuple<
2636                    '_,
2637                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2638            }
2639        }
2640        #[automatically_derived]
2641        impl alloy_sol_types::SolType for StakeTableState {
2642            type RustType = Self;
2643            type Token<'a> = <UnderlyingSolTuple<
2644                'a,
2645            > as alloy_sol_types::SolType>::Token<'a>;
2646            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2647            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2648                '_,
2649            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2650            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2651                '_,
2652            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2653            #[inline]
2654            fn valid_token(token: &Self::Token<'_>) -> bool {
2655                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2656            }
2657            #[inline]
2658            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2659                let tuple = <UnderlyingSolTuple<
2660                    '_,
2661                > as alloy_sol_types::SolType>::detokenize(token);
2662                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2663            }
2664        }
2665        #[automatically_derived]
2666        impl alloy_sol_types::SolStruct for StakeTableState {
2667            const NAME: &'static str = "StakeTableState";
2668            #[inline]
2669            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2670                alloy_sol_types::private::Cow::Borrowed(
2671                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2672                )
2673            }
2674            #[inline]
2675            fn eip712_components() -> alloy_sol_types::private::Vec<
2676                alloy_sol_types::private::Cow<'static, str>,
2677            > {
2678                alloy_sol_types::private::Vec::new()
2679            }
2680            #[inline]
2681            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2682                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2683            }
2684            #[inline]
2685            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2686                [
2687                    <alloy::sol_types::sol_data::Uint<
2688                        256,
2689                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2690                        .0,
2691                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2692                            &self.blsKeyComm,
2693                        )
2694                        .0,
2695                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2696                            &self.schnorrKeyComm,
2697                        )
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.amountComm,
2701                        )
2702                        .0,
2703                ]
2704                    .concat()
2705            }
2706        }
2707        #[automatically_derived]
2708        impl alloy_sol_types::EventTopic for StakeTableState {
2709            #[inline]
2710            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2711                0usize
2712                    + <alloy::sol_types::sol_data::Uint<
2713                        256,
2714                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2715                        &rust.threshold,
2716                    )
2717                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2718                        &rust.blsKeyComm,
2719                    )
2720                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2721                        &rust.schnorrKeyComm,
2722                    )
2723                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.amountComm,
2725                    )
2726            }
2727            #[inline]
2728            fn encode_topic_preimage(
2729                rust: &Self::RustType,
2730                out: &mut alloy_sol_types::private::Vec<u8>,
2731            ) {
2732                out.reserve(
2733                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2734                );
2735                <alloy::sol_types::sol_data::Uint<
2736                    256,
2737                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2738                    &rust.threshold,
2739                    out,
2740                );
2741                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2742                    &rust.blsKeyComm,
2743                    out,
2744                );
2745                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.schnorrKeyComm,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.amountComm,
2751                    out,
2752                );
2753            }
2754            #[inline]
2755            fn encode_topic(
2756                rust: &Self::RustType,
2757            ) -> alloy_sol_types::abi::token::WordToken {
2758                let mut out = alloy_sol_types::private::Vec::new();
2759                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2760                    rust,
2761                    &mut out,
2762                );
2763                alloy_sol_types::abi::token::WordToken(
2764                    alloy_sol_types::private::keccak256(out),
2765                )
2766            }
2767        }
2768    };
2769    use alloy::contract as alloy_contract;
2770    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2771
2772See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2773    #[inline]
2774    pub const fn new<
2775        P: alloy_contract::private::Provider<N>,
2776        N: alloy_contract::private::Network,
2777    >(
2778        address: alloy_sol_types::private::Address,
2779        __provider: P,
2780    ) -> LightClientInstance<P, N> {
2781        LightClientInstance::<P, N>::new(address, __provider)
2782    }
2783    /**A [`LightClient`](self) instance.
2784
2785Contains type-safe methods for interacting with an on-chain instance of the
2786[`LightClient`](self) contract located at a given `address`, using a given
2787provider `P`.
2788
2789If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2790documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2791be used to deploy a new instance of the contract.
2792
2793See the [module-level documentation](self) for all the available methods.*/
2794    #[derive(Clone)]
2795    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2796        address: alloy_sol_types::private::Address,
2797        provider: P,
2798        _network: ::core::marker::PhantomData<N>,
2799    }
2800    #[automatically_derived]
2801    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2802        #[inline]
2803        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2804            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2805        }
2806    }
2807    /// Instantiation and getters/setters.
2808    impl<
2809        P: alloy_contract::private::Provider<N>,
2810        N: alloy_contract::private::Network,
2811    > LightClientInstance<P, N> {
2812        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2813
2814See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2815        #[inline]
2816        pub const fn new(
2817            address: alloy_sol_types::private::Address,
2818            __provider: P,
2819        ) -> Self {
2820            Self {
2821                address,
2822                provider: __provider,
2823                _network: ::core::marker::PhantomData,
2824            }
2825        }
2826        /// Returns a reference to the address.
2827        #[inline]
2828        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2829            &self.address
2830        }
2831        /// Sets the address.
2832        #[inline]
2833        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2834            self.address = address;
2835        }
2836        /// Sets the address and returns `self`.
2837        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2838            self.set_address(address);
2839            self
2840        }
2841        /// Returns a reference to the provider.
2842        #[inline]
2843        pub const fn provider(&self) -> &P {
2844            &self.provider
2845        }
2846    }
2847    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2848        /// Clones the provider and returns a new instance with the cloned provider.
2849        #[inline]
2850        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2851            LightClientInstance {
2852                address: self.address,
2853                provider: ::core::clone::Clone::clone(&self.provider),
2854                _network: ::core::marker::PhantomData,
2855            }
2856        }
2857    }
2858    /// Function calls.
2859    impl<
2860        P: alloy_contract::private::Provider<N>,
2861        N: alloy_contract::private::Network,
2862    > LightClientInstance<P, N> {
2863        /// Creates a new call builder using this contract instance's provider and address.
2864        ///
2865        /// Note that the call can be any function call, not just those defined in this
2866        /// contract. Prefer using the other methods for building type-safe contract calls.
2867        pub fn call_builder<C: alloy_sol_types::SolCall>(
2868            &self,
2869            call: &C,
2870        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2871            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2872        }
2873    }
2874    /// Event filters.
2875    impl<
2876        P: alloy_contract::private::Provider<N>,
2877        N: alloy_contract::private::Network,
2878    > LightClientInstance<P, N> {
2879        /// Creates a new event filter using this contract instance's provider and address.
2880        ///
2881        /// Note that the type can be any event, not just those defined in this contract.
2882        /// Prefer using the other methods for building type-safe event filters.
2883        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2884            &self,
2885        ) -> alloy_contract::Event<&P, E, N> {
2886            alloy_contract::Event::new_sol(&self.provider, &self.address)
2887        }
2888    }
2889}
2890/**
2891
2892Generated by the following Solidity interface...
2893```solidity
2894library BN254 {
2895    type BaseField is uint256;
2896    type ScalarField is uint256;
2897    struct G1Point {
2898        BaseField x;
2899        BaseField y;
2900    }
2901}
2902
2903library IPlonkVerifier {
2904    struct PlonkProof {
2905        BN254.G1Point wire0;
2906        BN254.G1Point wire1;
2907        BN254.G1Point wire2;
2908        BN254.G1Point wire3;
2909        BN254.G1Point wire4;
2910        BN254.G1Point prodPerm;
2911        BN254.G1Point split0;
2912        BN254.G1Point split1;
2913        BN254.G1Point split2;
2914        BN254.G1Point split3;
2915        BN254.G1Point split4;
2916        BN254.G1Point zeta;
2917        BN254.G1Point zetaOmega;
2918        BN254.ScalarField wireEval0;
2919        BN254.ScalarField wireEval1;
2920        BN254.ScalarField wireEval2;
2921        BN254.ScalarField wireEval3;
2922        BN254.ScalarField wireEval4;
2923        BN254.ScalarField sigmaEval0;
2924        BN254.ScalarField sigmaEval1;
2925        BN254.ScalarField sigmaEval2;
2926        BN254.ScalarField sigmaEval3;
2927        BN254.ScalarField prodPermZetaOmegaEval;
2928    }
2929    struct VerifyingKey {
2930        uint256 domainSize;
2931        uint256 numInputs;
2932        BN254.G1Point sigma0;
2933        BN254.G1Point sigma1;
2934        BN254.G1Point sigma2;
2935        BN254.G1Point sigma3;
2936        BN254.G1Point sigma4;
2937        BN254.G1Point q1;
2938        BN254.G1Point q2;
2939        BN254.G1Point q3;
2940        BN254.G1Point q4;
2941        BN254.G1Point qM12;
2942        BN254.G1Point qM34;
2943        BN254.G1Point qO;
2944        BN254.G1Point qC;
2945        BN254.G1Point qH1;
2946        BN254.G1Point qH2;
2947        BN254.G1Point qH3;
2948        BN254.G1Point qH4;
2949        BN254.G1Point qEcc;
2950        bytes32 g2LSB;
2951        bytes32 g2MSB;
2952    }
2953}
2954
2955library LightClient {
2956    struct LightClientState {
2957        uint64 viewNum;
2958        uint64 blockHeight;
2959        BN254.ScalarField blockCommRoot;
2960    }
2961    struct StakeTableState {
2962        uint256 threshold;
2963        BN254.ScalarField blsKeyComm;
2964        BN254.ScalarField schnorrKeyComm;
2965        BN254.ScalarField amountComm;
2966    }
2967}
2968
2969interface LightClientV3 {
2970    error AddressEmptyCode(address target);
2971    error DeprecatedApi();
2972    error ERC1967InvalidImplementation(address implementation);
2973    error ERC1967NonPayable();
2974    error FailedInnerCall();
2975    error InsufficientSnapshotHistory();
2976    error InvalidAddress();
2977    error InvalidArgs();
2978    error InvalidHotShotBlockForCommitmentCheck();
2979    error InvalidInitialization();
2980    error InvalidMaxStateHistory();
2981    error InvalidProof();
2982    error InvalidScalar();
2983    error MissingEpochRootUpdate();
2984    error NoChangeRequired();
2985    error NotInitializing();
2986    error OutdatedState();
2987    error OwnableInvalidOwner(address owner);
2988    error OwnableUnauthorizedAccount(address account);
2989    error OwnershipCannotBeRenounced();
2990    error ProverNotPermissioned();
2991    error UUPSUnauthorizedCallContext();
2992    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2993    error WrongStakeTableUsed();
2994
2995    event Initialized(uint64 version);
2996    event NewEpoch(uint64 epoch);
2997    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2998    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2999    event PermissionedProverNotRequired();
3000    event PermissionedProverRequired(address permissionedProver);
3001    event Upgrade(address implementation);
3002    event Upgraded(address indexed implementation);
3003
3004    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3005    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3006    function authRoot() external view returns (uint256);
3007    function blocksPerEpoch() external view returns (uint64);
3008    function currentBlockNumber() external view returns (uint256);
3009    function currentEpoch() external view returns (uint64);
3010    function disablePermissionedProverMode() external;
3011    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3012    function epochStartBlock() external view returns (uint64);
3013    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3014    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3015    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3016    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3017    function getStateHistoryCount() external view returns (uint256);
3018    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3019    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3020    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3021    function initializeV3() external;
3022    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3023    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3024    function isPermissionedProverEnabled() external view returns (bool);
3025    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3026    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3027    function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
3028    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
3029    function owner() external view returns (address);
3030    function permissionedProver() external view returns (address);
3031    function proxiableUUID() external view returns (bytes32);
3032    function renounceOwnership() external;
3033    function setPermissionedProver(address prover) external;
3034    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3035    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3036    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3037    function stateHistoryFirstIndex() external view returns (uint64);
3038    function stateHistoryRetentionPeriod() external view returns (uint32);
3039    function transferOwnership(address newOwner) external;
3040    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3041    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3042    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3043}
3044```
3045
3046...which was generated by the following JSON ABI:
3047```json
3048[
3049  {
3050    "type": "function",
3051    "name": "UPGRADE_INTERFACE_VERSION",
3052    "inputs": [],
3053    "outputs": [
3054      {
3055        "name": "",
3056        "type": "string",
3057        "internalType": "string"
3058      }
3059    ],
3060    "stateMutability": "view"
3061  },
3062  {
3063    "type": "function",
3064    "name": "_getVk",
3065    "inputs": [],
3066    "outputs": [
3067      {
3068        "name": "vk",
3069        "type": "tuple",
3070        "internalType": "struct IPlonkVerifier.VerifyingKey",
3071        "components": [
3072          {
3073            "name": "domainSize",
3074            "type": "uint256",
3075            "internalType": "uint256"
3076          },
3077          {
3078            "name": "numInputs",
3079            "type": "uint256",
3080            "internalType": "uint256"
3081          },
3082          {
3083            "name": "sigma0",
3084            "type": "tuple",
3085            "internalType": "struct BN254.G1Point",
3086            "components": [
3087              {
3088                "name": "x",
3089                "type": "uint256",
3090                "internalType": "BN254.BaseField"
3091              },
3092              {
3093                "name": "y",
3094                "type": "uint256",
3095                "internalType": "BN254.BaseField"
3096              }
3097            ]
3098          },
3099          {
3100            "name": "sigma1",
3101            "type": "tuple",
3102            "internalType": "struct BN254.G1Point",
3103            "components": [
3104              {
3105                "name": "x",
3106                "type": "uint256",
3107                "internalType": "BN254.BaseField"
3108              },
3109              {
3110                "name": "y",
3111                "type": "uint256",
3112                "internalType": "BN254.BaseField"
3113              }
3114            ]
3115          },
3116          {
3117            "name": "sigma2",
3118            "type": "tuple",
3119            "internalType": "struct BN254.G1Point",
3120            "components": [
3121              {
3122                "name": "x",
3123                "type": "uint256",
3124                "internalType": "BN254.BaseField"
3125              },
3126              {
3127                "name": "y",
3128                "type": "uint256",
3129                "internalType": "BN254.BaseField"
3130              }
3131            ]
3132          },
3133          {
3134            "name": "sigma3",
3135            "type": "tuple",
3136            "internalType": "struct BN254.G1Point",
3137            "components": [
3138              {
3139                "name": "x",
3140                "type": "uint256",
3141                "internalType": "BN254.BaseField"
3142              },
3143              {
3144                "name": "y",
3145                "type": "uint256",
3146                "internalType": "BN254.BaseField"
3147              }
3148            ]
3149          },
3150          {
3151            "name": "sigma4",
3152            "type": "tuple",
3153            "internalType": "struct BN254.G1Point",
3154            "components": [
3155              {
3156                "name": "x",
3157                "type": "uint256",
3158                "internalType": "BN254.BaseField"
3159              },
3160              {
3161                "name": "y",
3162                "type": "uint256",
3163                "internalType": "BN254.BaseField"
3164              }
3165            ]
3166          },
3167          {
3168            "name": "q1",
3169            "type": "tuple",
3170            "internalType": "struct BN254.G1Point",
3171            "components": [
3172              {
3173                "name": "x",
3174                "type": "uint256",
3175                "internalType": "BN254.BaseField"
3176              },
3177              {
3178                "name": "y",
3179                "type": "uint256",
3180                "internalType": "BN254.BaseField"
3181              }
3182            ]
3183          },
3184          {
3185            "name": "q2",
3186            "type": "tuple",
3187            "internalType": "struct BN254.G1Point",
3188            "components": [
3189              {
3190                "name": "x",
3191                "type": "uint256",
3192                "internalType": "BN254.BaseField"
3193              },
3194              {
3195                "name": "y",
3196                "type": "uint256",
3197                "internalType": "BN254.BaseField"
3198              }
3199            ]
3200          },
3201          {
3202            "name": "q3",
3203            "type": "tuple",
3204            "internalType": "struct BN254.G1Point",
3205            "components": [
3206              {
3207                "name": "x",
3208                "type": "uint256",
3209                "internalType": "BN254.BaseField"
3210              },
3211              {
3212                "name": "y",
3213                "type": "uint256",
3214                "internalType": "BN254.BaseField"
3215              }
3216            ]
3217          },
3218          {
3219            "name": "q4",
3220            "type": "tuple",
3221            "internalType": "struct BN254.G1Point",
3222            "components": [
3223              {
3224                "name": "x",
3225                "type": "uint256",
3226                "internalType": "BN254.BaseField"
3227              },
3228              {
3229                "name": "y",
3230                "type": "uint256",
3231                "internalType": "BN254.BaseField"
3232              }
3233            ]
3234          },
3235          {
3236            "name": "qM12",
3237            "type": "tuple",
3238            "internalType": "struct BN254.G1Point",
3239            "components": [
3240              {
3241                "name": "x",
3242                "type": "uint256",
3243                "internalType": "BN254.BaseField"
3244              },
3245              {
3246                "name": "y",
3247                "type": "uint256",
3248                "internalType": "BN254.BaseField"
3249              }
3250            ]
3251          },
3252          {
3253            "name": "qM34",
3254            "type": "tuple",
3255            "internalType": "struct BN254.G1Point",
3256            "components": [
3257              {
3258                "name": "x",
3259                "type": "uint256",
3260                "internalType": "BN254.BaseField"
3261              },
3262              {
3263                "name": "y",
3264                "type": "uint256",
3265                "internalType": "BN254.BaseField"
3266              }
3267            ]
3268          },
3269          {
3270            "name": "qO",
3271            "type": "tuple",
3272            "internalType": "struct BN254.G1Point",
3273            "components": [
3274              {
3275                "name": "x",
3276                "type": "uint256",
3277                "internalType": "BN254.BaseField"
3278              },
3279              {
3280                "name": "y",
3281                "type": "uint256",
3282                "internalType": "BN254.BaseField"
3283              }
3284            ]
3285          },
3286          {
3287            "name": "qC",
3288            "type": "tuple",
3289            "internalType": "struct BN254.G1Point",
3290            "components": [
3291              {
3292                "name": "x",
3293                "type": "uint256",
3294                "internalType": "BN254.BaseField"
3295              },
3296              {
3297                "name": "y",
3298                "type": "uint256",
3299                "internalType": "BN254.BaseField"
3300              }
3301            ]
3302          },
3303          {
3304            "name": "qH1",
3305            "type": "tuple",
3306            "internalType": "struct BN254.G1Point",
3307            "components": [
3308              {
3309                "name": "x",
3310                "type": "uint256",
3311                "internalType": "BN254.BaseField"
3312              },
3313              {
3314                "name": "y",
3315                "type": "uint256",
3316                "internalType": "BN254.BaseField"
3317              }
3318            ]
3319          },
3320          {
3321            "name": "qH2",
3322            "type": "tuple",
3323            "internalType": "struct BN254.G1Point",
3324            "components": [
3325              {
3326                "name": "x",
3327                "type": "uint256",
3328                "internalType": "BN254.BaseField"
3329              },
3330              {
3331                "name": "y",
3332                "type": "uint256",
3333                "internalType": "BN254.BaseField"
3334              }
3335            ]
3336          },
3337          {
3338            "name": "qH3",
3339            "type": "tuple",
3340            "internalType": "struct BN254.G1Point",
3341            "components": [
3342              {
3343                "name": "x",
3344                "type": "uint256",
3345                "internalType": "BN254.BaseField"
3346              },
3347              {
3348                "name": "y",
3349                "type": "uint256",
3350                "internalType": "BN254.BaseField"
3351              }
3352            ]
3353          },
3354          {
3355            "name": "qH4",
3356            "type": "tuple",
3357            "internalType": "struct BN254.G1Point",
3358            "components": [
3359              {
3360                "name": "x",
3361                "type": "uint256",
3362                "internalType": "BN254.BaseField"
3363              },
3364              {
3365                "name": "y",
3366                "type": "uint256",
3367                "internalType": "BN254.BaseField"
3368              }
3369            ]
3370          },
3371          {
3372            "name": "qEcc",
3373            "type": "tuple",
3374            "internalType": "struct BN254.G1Point",
3375            "components": [
3376              {
3377                "name": "x",
3378                "type": "uint256",
3379                "internalType": "BN254.BaseField"
3380              },
3381              {
3382                "name": "y",
3383                "type": "uint256",
3384                "internalType": "BN254.BaseField"
3385              }
3386            ]
3387          },
3388          {
3389            "name": "g2LSB",
3390            "type": "bytes32",
3391            "internalType": "bytes32"
3392          },
3393          {
3394            "name": "g2MSB",
3395            "type": "bytes32",
3396            "internalType": "bytes32"
3397          }
3398        ]
3399      }
3400    ],
3401    "stateMutability": "pure"
3402  },
3403  {
3404    "type": "function",
3405    "name": "authRoot",
3406    "inputs": [],
3407    "outputs": [
3408      {
3409        "name": "",
3410        "type": "uint256",
3411        "internalType": "uint256"
3412      }
3413    ],
3414    "stateMutability": "view"
3415  },
3416  {
3417    "type": "function",
3418    "name": "blocksPerEpoch",
3419    "inputs": [],
3420    "outputs": [
3421      {
3422        "name": "",
3423        "type": "uint64",
3424        "internalType": "uint64"
3425      }
3426    ],
3427    "stateMutability": "view"
3428  },
3429  {
3430    "type": "function",
3431    "name": "currentBlockNumber",
3432    "inputs": [],
3433    "outputs": [
3434      {
3435        "name": "",
3436        "type": "uint256",
3437        "internalType": "uint256"
3438      }
3439    ],
3440    "stateMutability": "view"
3441  },
3442  {
3443    "type": "function",
3444    "name": "currentEpoch",
3445    "inputs": [],
3446    "outputs": [
3447      {
3448        "name": "",
3449        "type": "uint64",
3450        "internalType": "uint64"
3451      }
3452    ],
3453    "stateMutability": "view"
3454  },
3455  {
3456    "type": "function",
3457    "name": "disablePermissionedProverMode",
3458    "inputs": [],
3459    "outputs": [],
3460    "stateMutability": "nonpayable"
3461  },
3462  {
3463    "type": "function",
3464    "name": "epochFromBlockNumber",
3465    "inputs": [
3466      {
3467        "name": "_blockNum",
3468        "type": "uint64",
3469        "internalType": "uint64"
3470      },
3471      {
3472        "name": "_blocksPerEpoch",
3473        "type": "uint64",
3474        "internalType": "uint64"
3475      }
3476    ],
3477    "outputs": [
3478      {
3479        "name": "",
3480        "type": "uint64",
3481        "internalType": "uint64"
3482      }
3483    ],
3484    "stateMutability": "pure"
3485  },
3486  {
3487    "type": "function",
3488    "name": "epochStartBlock",
3489    "inputs": [],
3490    "outputs": [
3491      {
3492        "name": "",
3493        "type": "uint64",
3494        "internalType": "uint64"
3495      }
3496    ],
3497    "stateMutability": "view"
3498  },
3499  {
3500    "type": "function",
3501    "name": "finalizedState",
3502    "inputs": [],
3503    "outputs": [
3504      {
3505        "name": "viewNum",
3506        "type": "uint64",
3507        "internalType": "uint64"
3508      },
3509      {
3510        "name": "blockHeight",
3511        "type": "uint64",
3512        "internalType": "uint64"
3513      },
3514      {
3515        "name": "blockCommRoot",
3516        "type": "uint256",
3517        "internalType": "BN254.ScalarField"
3518      }
3519    ],
3520    "stateMutability": "view"
3521  },
3522  {
3523    "type": "function",
3524    "name": "genesisStakeTableState",
3525    "inputs": [],
3526    "outputs": [
3527      {
3528        "name": "threshold",
3529        "type": "uint256",
3530        "internalType": "uint256"
3531      },
3532      {
3533        "name": "blsKeyComm",
3534        "type": "uint256",
3535        "internalType": "BN254.ScalarField"
3536      },
3537      {
3538        "name": "schnorrKeyComm",
3539        "type": "uint256",
3540        "internalType": "BN254.ScalarField"
3541      },
3542      {
3543        "name": "amountComm",
3544        "type": "uint256",
3545        "internalType": "BN254.ScalarField"
3546      }
3547    ],
3548    "stateMutability": "view"
3549  },
3550  {
3551    "type": "function",
3552    "name": "genesisState",
3553    "inputs": [],
3554    "outputs": [
3555      {
3556        "name": "viewNum",
3557        "type": "uint64",
3558        "internalType": "uint64"
3559      },
3560      {
3561        "name": "blockHeight",
3562        "type": "uint64",
3563        "internalType": "uint64"
3564      },
3565      {
3566        "name": "blockCommRoot",
3567        "type": "uint256",
3568        "internalType": "BN254.ScalarField"
3569      }
3570    ],
3571    "stateMutability": "view"
3572  },
3573  {
3574    "type": "function",
3575    "name": "getHotShotCommitment",
3576    "inputs": [
3577      {
3578        "name": "hotShotBlockHeight",
3579        "type": "uint256",
3580        "internalType": "uint256"
3581      }
3582    ],
3583    "outputs": [
3584      {
3585        "name": "hotShotBlockCommRoot",
3586        "type": "uint256",
3587        "internalType": "BN254.ScalarField"
3588      },
3589      {
3590        "name": "hotshotBlockHeight",
3591        "type": "uint64",
3592        "internalType": "uint64"
3593      }
3594    ],
3595    "stateMutability": "view"
3596  },
3597  {
3598    "type": "function",
3599    "name": "getStateHistoryCount",
3600    "inputs": [],
3601    "outputs": [
3602      {
3603        "name": "",
3604        "type": "uint256",
3605        "internalType": "uint256"
3606      }
3607    ],
3608    "stateMutability": "view"
3609  },
3610  {
3611    "type": "function",
3612    "name": "getVersion",
3613    "inputs": [],
3614    "outputs": [
3615      {
3616        "name": "majorVersion",
3617        "type": "uint8",
3618        "internalType": "uint8"
3619      },
3620      {
3621        "name": "minorVersion",
3622        "type": "uint8",
3623        "internalType": "uint8"
3624      },
3625      {
3626        "name": "patchVersion",
3627        "type": "uint8",
3628        "internalType": "uint8"
3629      }
3630    ],
3631    "stateMutability": "pure"
3632  },
3633  {
3634    "type": "function",
3635    "name": "initialize",
3636    "inputs": [
3637      {
3638        "name": "_genesis",
3639        "type": "tuple",
3640        "internalType": "struct LightClient.LightClientState",
3641        "components": [
3642          {
3643            "name": "viewNum",
3644            "type": "uint64",
3645            "internalType": "uint64"
3646          },
3647          {
3648            "name": "blockHeight",
3649            "type": "uint64",
3650            "internalType": "uint64"
3651          },
3652          {
3653            "name": "blockCommRoot",
3654            "type": "uint256",
3655            "internalType": "BN254.ScalarField"
3656          }
3657        ]
3658      },
3659      {
3660        "name": "_genesisStakeTableState",
3661        "type": "tuple",
3662        "internalType": "struct LightClient.StakeTableState",
3663        "components": [
3664          {
3665            "name": "threshold",
3666            "type": "uint256",
3667            "internalType": "uint256"
3668          },
3669          {
3670            "name": "blsKeyComm",
3671            "type": "uint256",
3672            "internalType": "BN254.ScalarField"
3673          },
3674          {
3675            "name": "schnorrKeyComm",
3676            "type": "uint256",
3677            "internalType": "BN254.ScalarField"
3678          },
3679          {
3680            "name": "amountComm",
3681            "type": "uint256",
3682            "internalType": "BN254.ScalarField"
3683          }
3684        ]
3685      },
3686      {
3687        "name": "_stateHistoryRetentionPeriod",
3688        "type": "uint32",
3689        "internalType": "uint32"
3690      },
3691      {
3692        "name": "owner",
3693        "type": "address",
3694        "internalType": "address"
3695      }
3696    ],
3697    "outputs": [],
3698    "stateMutability": "nonpayable"
3699  },
3700  {
3701    "type": "function",
3702    "name": "initializeV2",
3703    "inputs": [
3704      {
3705        "name": "_blocksPerEpoch",
3706        "type": "uint64",
3707        "internalType": "uint64"
3708      },
3709      {
3710        "name": "_epochStartBlock",
3711        "type": "uint64",
3712        "internalType": "uint64"
3713      }
3714    ],
3715    "outputs": [],
3716    "stateMutability": "nonpayable"
3717  },
3718  {
3719    "type": "function",
3720    "name": "initializeV3",
3721    "inputs": [],
3722    "outputs": [],
3723    "stateMutability": "nonpayable"
3724  },
3725  {
3726    "type": "function",
3727    "name": "isEpochRoot",
3728    "inputs": [
3729      {
3730        "name": "blockHeight",
3731        "type": "uint64",
3732        "internalType": "uint64"
3733      }
3734    ],
3735    "outputs": [
3736      {
3737        "name": "",
3738        "type": "bool",
3739        "internalType": "bool"
3740      }
3741    ],
3742    "stateMutability": "view"
3743  },
3744  {
3745    "type": "function",
3746    "name": "isGtEpochRoot",
3747    "inputs": [
3748      {
3749        "name": "blockHeight",
3750        "type": "uint64",
3751        "internalType": "uint64"
3752      }
3753    ],
3754    "outputs": [
3755      {
3756        "name": "",
3757        "type": "bool",
3758        "internalType": "bool"
3759      }
3760    ],
3761    "stateMutability": "view"
3762  },
3763  {
3764    "type": "function",
3765    "name": "isPermissionedProverEnabled",
3766    "inputs": [],
3767    "outputs": [
3768      {
3769        "name": "",
3770        "type": "bool",
3771        "internalType": "bool"
3772      }
3773    ],
3774    "stateMutability": "view"
3775  },
3776  {
3777    "type": "function",
3778    "name": "lagOverEscapeHatchThreshold",
3779    "inputs": [
3780      {
3781        "name": "blockNumber",
3782        "type": "uint256",
3783        "internalType": "uint256"
3784      },
3785      {
3786        "name": "blockThreshold",
3787        "type": "uint256",
3788        "internalType": "uint256"
3789      }
3790    ],
3791    "outputs": [
3792      {
3793        "name": "",
3794        "type": "bool",
3795        "internalType": "bool"
3796      }
3797    ],
3798    "stateMutability": "view"
3799  },
3800  {
3801    "type": "function",
3802    "name": "newFinalizedState",
3803    "inputs": [
3804      {
3805        "name": "",
3806        "type": "tuple",
3807        "internalType": "struct LightClient.LightClientState",
3808        "components": [
3809          {
3810            "name": "viewNum",
3811            "type": "uint64",
3812            "internalType": "uint64"
3813          },
3814          {
3815            "name": "blockHeight",
3816            "type": "uint64",
3817            "internalType": "uint64"
3818          },
3819          {
3820            "name": "blockCommRoot",
3821            "type": "uint256",
3822            "internalType": "BN254.ScalarField"
3823          }
3824        ]
3825      },
3826      {
3827        "name": "",
3828        "type": "tuple",
3829        "internalType": "struct IPlonkVerifier.PlonkProof",
3830        "components": [
3831          {
3832            "name": "wire0",
3833            "type": "tuple",
3834            "internalType": "struct BN254.G1Point",
3835            "components": [
3836              {
3837                "name": "x",
3838                "type": "uint256",
3839                "internalType": "BN254.BaseField"
3840              },
3841              {
3842                "name": "y",
3843                "type": "uint256",
3844                "internalType": "BN254.BaseField"
3845              }
3846            ]
3847          },
3848          {
3849            "name": "wire1",
3850            "type": "tuple",
3851            "internalType": "struct BN254.G1Point",
3852            "components": [
3853              {
3854                "name": "x",
3855                "type": "uint256",
3856                "internalType": "BN254.BaseField"
3857              },
3858              {
3859                "name": "y",
3860                "type": "uint256",
3861                "internalType": "BN254.BaseField"
3862              }
3863            ]
3864          },
3865          {
3866            "name": "wire2",
3867            "type": "tuple",
3868            "internalType": "struct BN254.G1Point",
3869            "components": [
3870              {
3871                "name": "x",
3872                "type": "uint256",
3873                "internalType": "BN254.BaseField"
3874              },
3875              {
3876                "name": "y",
3877                "type": "uint256",
3878                "internalType": "BN254.BaseField"
3879              }
3880            ]
3881          },
3882          {
3883            "name": "wire3",
3884            "type": "tuple",
3885            "internalType": "struct BN254.G1Point",
3886            "components": [
3887              {
3888                "name": "x",
3889                "type": "uint256",
3890                "internalType": "BN254.BaseField"
3891              },
3892              {
3893                "name": "y",
3894                "type": "uint256",
3895                "internalType": "BN254.BaseField"
3896              }
3897            ]
3898          },
3899          {
3900            "name": "wire4",
3901            "type": "tuple",
3902            "internalType": "struct BN254.G1Point",
3903            "components": [
3904              {
3905                "name": "x",
3906                "type": "uint256",
3907                "internalType": "BN254.BaseField"
3908              },
3909              {
3910                "name": "y",
3911                "type": "uint256",
3912                "internalType": "BN254.BaseField"
3913              }
3914            ]
3915          },
3916          {
3917            "name": "prodPerm",
3918            "type": "tuple",
3919            "internalType": "struct BN254.G1Point",
3920            "components": [
3921              {
3922                "name": "x",
3923                "type": "uint256",
3924                "internalType": "BN254.BaseField"
3925              },
3926              {
3927                "name": "y",
3928                "type": "uint256",
3929                "internalType": "BN254.BaseField"
3930              }
3931            ]
3932          },
3933          {
3934            "name": "split0",
3935            "type": "tuple",
3936            "internalType": "struct BN254.G1Point",
3937            "components": [
3938              {
3939                "name": "x",
3940                "type": "uint256",
3941                "internalType": "BN254.BaseField"
3942              },
3943              {
3944                "name": "y",
3945                "type": "uint256",
3946                "internalType": "BN254.BaseField"
3947              }
3948            ]
3949          },
3950          {
3951            "name": "split1",
3952            "type": "tuple",
3953            "internalType": "struct BN254.G1Point",
3954            "components": [
3955              {
3956                "name": "x",
3957                "type": "uint256",
3958                "internalType": "BN254.BaseField"
3959              },
3960              {
3961                "name": "y",
3962                "type": "uint256",
3963                "internalType": "BN254.BaseField"
3964              }
3965            ]
3966          },
3967          {
3968            "name": "split2",
3969            "type": "tuple",
3970            "internalType": "struct BN254.G1Point",
3971            "components": [
3972              {
3973                "name": "x",
3974                "type": "uint256",
3975                "internalType": "BN254.BaseField"
3976              },
3977              {
3978                "name": "y",
3979                "type": "uint256",
3980                "internalType": "BN254.BaseField"
3981              }
3982            ]
3983          },
3984          {
3985            "name": "split3",
3986            "type": "tuple",
3987            "internalType": "struct BN254.G1Point",
3988            "components": [
3989              {
3990                "name": "x",
3991                "type": "uint256",
3992                "internalType": "BN254.BaseField"
3993              },
3994              {
3995                "name": "y",
3996                "type": "uint256",
3997                "internalType": "BN254.BaseField"
3998              }
3999            ]
4000          },
4001          {
4002            "name": "split4",
4003            "type": "tuple",
4004            "internalType": "struct BN254.G1Point",
4005            "components": [
4006              {
4007                "name": "x",
4008                "type": "uint256",
4009                "internalType": "BN254.BaseField"
4010              },
4011              {
4012                "name": "y",
4013                "type": "uint256",
4014                "internalType": "BN254.BaseField"
4015              }
4016            ]
4017          },
4018          {
4019            "name": "zeta",
4020            "type": "tuple",
4021            "internalType": "struct BN254.G1Point",
4022            "components": [
4023              {
4024                "name": "x",
4025                "type": "uint256",
4026                "internalType": "BN254.BaseField"
4027              },
4028              {
4029                "name": "y",
4030                "type": "uint256",
4031                "internalType": "BN254.BaseField"
4032              }
4033            ]
4034          },
4035          {
4036            "name": "zetaOmega",
4037            "type": "tuple",
4038            "internalType": "struct BN254.G1Point",
4039            "components": [
4040              {
4041                "name": "x",
4042                "type": "uint256",
4043                "internalType": "BN254.BaseField"
4044              },
4045              {
4046                "name": "y",
4047                "type": "uint256",
4048                "internalType": "BN254.BaseField"
4049              }
4050            ]
4051          },
4052          {
4053            "name": "wireEval0",
4054            "type": "uint256",
4055            "internalType": "BN254.ScalarField"
4056          },
4057          {
4058            "name": "wireEval1",
4059            "type": "uint256",
4060            "internalType": "BN254.ScalarField"
4061          },
4062          {
4063            "name": "wireEval2",
4064            "type": "uint256",
4065            "internalType": "BN254.ScalarField"
4066          },
4067          {
4068            "name": "wireEval3",
4069            "type": "uint256",
4070            "internalType": "BN254.ScalarField"
4071          },
4072          {
4073            "name": "wireEval4",
4074            "type": "uint256",
4075            "internalType": "BN254.ScalarField"
4076          },
4077          {
4078            "name": "sigmaEval0",
4079            "type": "uint256",
4080            "internalType": "BN254.ScalarField"
4081          },
4082          {
4083            "name": "sigmaEval1",
4084            "type": "uint256",
4085            "internalType": "BN254.ScalarField"
4086          },
4087          {
4088            "name": "sigmaEval2",
4089            "type": "uint256",
4090            "internalType": "BN254.ScalarField"
4091          },
4092          {
4093            "name": "sigmaEval3",
4094            "type": "uint256",
4095            "internalType": "BN254.ScalarField"
4096          },
4097          {
4098            "name": "prodPermZetaOmegaEval",
4099            "type": "uint256",
4100            "internalType": "BN254.ScalarField"
4101          }
4102        ]
4103      }
4104    ],
4105    "outputs": [],
4106    "stateMutability": "pure"
4107  },
4108  {
4109    "type": "function",
4110    "name": "newFinalizedState",
4111    "inputs": [
4112      {
4113        "name": "",
4114        "type": "tuple",
4115        "internalType": "struct LightClient.LightClientState",
4116        "components": [
4117          {
4118            "name": "viewNum",
4119            "type": "uint64",
4120            "internalType": "uint64"
4121          },
4122          {
4123            "name": "blockHeight",
4124            "type": "uint64",
4125            "internalType": "uint64"
4126          },
4127          {
4128            "name": "blockCommRoot",
4129            "type": "uint256",
4130            "internalType": "BN254.ScalarField"
4131          }
4132        ]
4133      },
4134      {
4135        "name": "",
4136        "type": "tuple",
4137        "internalType": "struct LightClient.StakeTableState",
4138        "components": [
4139          {
4140            "name": "threshold",
4141            "type": "uint256",
4142            "internalType": "uint256"
4143          },
4144          {
4145            "name": "blsKeyComm",
4146            "type": "uint256",
4147            "internalType": "BN254.ScalarField"
4148          },
4149          {
4150            "name": "schnorrKeyComm",
4151            "type": "uint256",
4152            "internalType": "BN254.ScalarField"
4153          },
4154          {
4155            "name": "amountComm",
4156            "type": "uint256",
4157            "internalType": "BN254.ScalarField"
4158          }
4159        ]
4160      },
4161      {
4162        "name": "",
4163        "type": "tuple",
4164        "internalType": "struct IPlonkVerifier.PlonkProof",
4165        "components": [
4166          {
4167            "name": "wire0",
4168            "type": "tuple",
4169            "internalType": "struct BN254.G1Point",
4170            "components": [
4171              {
4172                "name": "x",
4173                "type": "uint256",
4174                "internalType": "BN254.BaseField"
4175              },
4176              {
4177                "name": "y",
4178                "type": "uint256",
4179                "internalType": "BN254.BaseField"
4180              }
4181            ]
4182          },
4183          {
4184            "name": "wire1",
4185            "type": "tuple",
4186            "internalType": "struct BN254.G1Point",
4187            "components": [
4188              {
4189                "name": "x",
4190                "type": "uint256",
4191                "internalType": "BN254.BaseField"
4192              },
4193              {
4194                "name": "y",
4195                "type": "uint256",
4196                "internalType": "BN254.BaseField"
4197              }
4198            ]
4199          },
4200          {
4201            "name": "wire2",
4202            "type": "tuple",
4203            "internalType": "struct BN254.G1Point",
4204            "components": [
4205              {
4206                "name": "x",
4207                "type": "uint256",
4208                "internalType": "BN254.BaseField"
4209              },
4210              {
4211                "name": "y",
4212                "type": "uint256",
4213                "internalType": "BN254.BaseField"
4214              }
4215            ]
4216          },
4217          {
4218            "name": "wire3",
4219            "type": "tuple",
4220            "internalType": "struct BN254.G1Point",
4221            "components": [
4222              {
4223                "name": "x",
4224                "type": "uint256",
4225                "internalType": "BN254.BaseField"
4226              },
4227              {
4228                "name": "y",
4229                "type": "uint256",
4230                "internalType": "BN254.BaseField"
4231              }
4232            ]
4233          },
4234          {
4235            "name": "wire4",
4236            "type": "tuple",
4237            "internalType": "struct BN254.G1Point",
4238            "components": [
4239              {
4240                "name": "x",
4241                "type": "uint256",
4242                "internalType": "BN254.BaseField"
4243              },
4244              {
4245                "name": "y",
4246                "type": "uint256",
4247                "internalType": "BN254.BaseField"
4248              }
4249            ]
4250          },
4251          {
4252            "name": "prodPerm",
4253            "type": "tuple",
4254            "internalType": "struct BN254.G1Point",
4255            "components": [
4256              {
4257                "name": "x",
4258                "type": "uint256",
4259                "internalType": "BN254.BaseField"
4260              },
4261              {
4262                "name": "y",
4263                "type": "uint256",
4264                "internalType": "BN254.BaseField"
4265              }
4266            ]
4267          },
4268          {
4269            "name": "split0",
4270            "type": "tuple",
4271            "internalType": "struct BN254.G1Point",
4272            "components": [
4273              {
4274                "name": "x",
4275                "type": "uint256",
4276                "internalType": "BN254.BaseField"
4277              },
4278              {
4279                "name": "y",
4280                "type": "uint256",
4281                "internalType": "BN254.BaseField"
4282              }
4283            ]
4284          },
4285          {
4286            "name": "split1",
4287            "type": "tuple",
4288            "internalType": "struct BN254.G1Point",
4289            "components": [
4290              {
4291                "name": "x",
4292                "type": "uint256",
4293                "internalType": "BN254.BaseField"
4294              },
4295              {
4296                "name": "y",
4297                "type": "uint256",
4298                "internalType": "BN254.BaseField"
4299              }
4300            ]
4301          },
4302          {
4303            "name": "split2",
4304            "type": "tuple",
4305            "internalType": "struct BN254.G1Point",
4306            "components": [
4307              {
4308                "name": "x",
4309                "type": "uint256",
4310                "internalType": "BN254.BaseField"
4311              },
4312              {
4313                "name": "y",
4314                "type": "uint256",
4315                "internalType": "BN254.BaseField"
4316              }
4317            ]
4318          },
4319          {
4320            "name": "split3",
4321            "type": "tuple",
4322            "internalType": "struct BN254.G1Point",
4323            "components": [
4324              {
4325                "name": "x",
4326                "type": "uint256",
4327                "internalType": "BN254.BaseField"
4328              },
4329              {
4330                "name": "y",
4331                "type": "uint256",
4332                "internalType": "BN254.BaseField"
4333              }
4334            ]
4335          },
4336          {
4337            "name": "split4",
4338            "type": "tuple",
4339            "internalType": "struct BN254.G1Point",
4340            "components": [
4341              {
4342                "name": "x",
4343                "type": "uint256",
4344                "internalType": "BN254.BaseField"
4345              },
4346              {
4347                "name": "y",
4348                "type": "uint256",
4349                "internalType": "BN254.BaseField"
4350              }
4351            ]
4352          },
4353          {
4354            "name": "zeta",
4355            "type": "tuple",
4356            "internalType": "struct BN254.G1Point",
4357            "components": [
4358              {
4359                "name": "x",
4360                "type": "uint256",
4361                "internalType": "BN254.BaseField"
4362              },
4363              {
4364                "name": "y",
4365                "type": "uint256",
4366                "internalType": "BN254.BaseField"
4367              }
4368            ]
4369          },
4370          {
4371            "name": "zetaOmega",
4372            "type": "tuple",
4373            "internalType": "struct BN254.G1Point",
4374            "components": [
4375              {
4376                "name": "x",
4377                "type": "uint256",
4378                "internalType": "BN254.BaseField"
4379              },
4380              {
4381                "name": "y",
4382                "type": "uint256",
4383                "internalType": "BN254.BaseField"
4384              }
4385            ]
4386          },
4387          {
4388            "name": "wireEval0",
4389            "type": "uint256",
4390            "internalType": "BN254.ScalarField"
4391          },
4392          {
4393            "name": "wireEval1",
4394            "type": "uint256",
4395            "internalType": "BN254.ScalarField"
4396          },
4397          {
4398            "name": "wireEval2",
4399            "type": "uint256",
4400            "internalType": "BN254.ScalarField"
4401          },
4402          {
4403            "name": "wireEval3",
4404            "type": "uint256",
4405            "internalType": "BN254.ScalarField"
4406          },
4407          {
4408            "name": "wireEval4",
4409            "type": "uint256",
4410            "internalType": "BN254.ScalarField"
4411          },
4412          {
4413            "name": "sigmaEval0",
4414            "type": "uint256",
4415            "internalType": "BN254.ScalarField"
4416          },
4417          {
4418            "name": "sigmaEval1",
4419            "type": "uint256",
4420            "internalType": "BN254.ScalarField"
4421          },
4422          {
4423            "name": "sigmaEval2",
4424            "type": "uint256",
4425            "internalType": "BN254.ScalarField"
4426          },
4427          {
4428            "name": "sigmaEval3",
4429            "type": "uint256",
4430            "internalType": "BN254.ScalarField"
4431          },
4432          {
4433            "name": "prodPermZetaOmegaEval",
4434            "type": "uint256",
4435            "internalType": "BN254.ScalarField"
4436          }
4437        ]
4438      }
4439    ],
4440    "outputs": [],
4441    "stateMutability": "pure"
4442  },
4443  {
4444    "type": "function",
4445    "name": "newFinalizedState",
4446    "inputs": [
4447      {
4448        "name": "newState",
4449        "type": "tuple",
4450        "internalType": "struct LightClient.LightClientState",
4451        "components": [
4452          {
4453            "name": "viewNum",
4454            "type": "uint64",
4455            "internalType": "uint64"
4456          },
4457          {
4458            "name": "blockHeight",
4459            "type": "uint64",
4460            "internalType": "uint64"
4461          },
4462          {
4463            "name": "blockCommRoot",
4464            "type": "uint256",
4465            "internalType": "BN254.ScalarField"
4466          }
4467        ]
4468      },
4469      {
4470        "name": "nextStakeTable",
4471        "type": "tuple",
4472        "internalType": "struct LightClient.StakeTableState",
4473        "components": [
4474          {
4475            "name": "threshold",
4476            "type": "uint256",
4477            "internalType": "uint256"
4478          },
4479          {
4480            "name": "blsKeyComm",
4481            "type": "uint256",
4482            "internalType": "BN254.ScalarField"
4483          },
4484          {
4485            "name": "schnorrKeyComm",
4486            "type": "uint256",
4487            "internalType": "BN254.ScalarField"
4488          },
4489          {
4490            "name": "amountComm",
4491            "type": "uint256",
4492            "internalType": "BN254.ScalarField"
4493          }
4494        ]
4495      },
4496      {
4497        "name": "newAuthRoot",
4498        "type": "uint256",
4499        "internalType": "uint256"
4500      },
4501      {
4502        "name": "proof",
4503        "type": "tuple",
4504        "internalType": "struct IPlonkVerifier.PlonkProof",
4505        "components": [
4506          {
4507            "name": "wire0",
4508            "type": "tuple",
4509            "internalType": "struct BN254.G1Point",
4510            "components": [
4511              {
4512                "name": "x",
4513                "type": "uint256",
4514                "internalType": "BN254.BaseField"
4515              },
4516              {
4517                "name": "y",
4518                "type": "uint256",
4519                "internalType": "BN254.BaseField"
4520              }
4521            ]
4522          },
4523          {
4524            "name": "wire1",
4525            "type": "tuple",
4526            "internalType": "struct BN254.G1Point",
4527            "components": [
4528              {
4529                "name": "x",
4530                "type": "uint256",
4531                "internalType": "BN254.BaseField"
4532              },
4533              {
4534                "name": "y",
4535                "type": "uint256",
4536                "internalType": "BN254.BaseField"
4537              }
4538            ]
4539          },
4540          {
4541            "name": "wire2",
4542            "type": "tuple",
4543            "internalType": "struct BN254.G1Point",
4544            "components": [
4545              {
4546                "name": "x",
4547                "type": "uint256",
4548                "internalType": "BN254.BaseField"
4549              },
4550              {
4551                "name": "y",
4552                "type": "uint256",
4553                "internalType": "BN254.BaseField"
4554              }
4555            ]
4556          },
4557          {
4558            "name": "wire3",
4559            "type": "tuple",
4560            "internalType": "struct BN254.G1Point",
4561            "components": [
4562              {
4563                "name": "x",
4564                "type": "uint256",
4565                "internalType": "BN254.BaseField"
4566              },
4567              {
4568                "name": "y",
4569                "type": "uint256",
4570                "internalType": "BN254.BaseField"
4571              }
4572            ]
4573          },
4574          {
4575            "name": "wire4",
4576            "type": "tuple",
4577            "internalType": "struct BN254.G1Point",
4578            "components": [
4579              {
4580                "name": "x",
4581                "type": "uint256",
4582                "internalType": "BN254.BaseField"
4583              },
4584              {
4585                "name": "y",
4586                "type": "uint256",
4587                "internalType": "BN254.BaseField"
4588              }
4589            ]
4590          },
4591          {
4592            "name": "prodPerm",
4593            "type": "tuple",
4594            "internalType": "struct BN254.G1Point",
4595            "components": [
4596              {
4597                "name": "x",
4598                "type": "uint256",
4599                "internalType": "BN254.BaseField"
4600              },
4601              {
4602                "name": "y",
4603                "type": "uint256",
4604                "internalType": "BN254.BaseField"
4605              }
4606            ]
4607          },
4608          {
4609            "name": "split0",
4610            "type": "tuple",
4611            "internalType": "struct BN254.G1Point",
4612            "components": [
4613              {
4614                "name": "x",
4615                "type": "uint256",
4616                "internalType": "BN254.BaseField"
4617              },
4618              {
4619                "name": "y",
4620                "type": "uint256",
4621                "internalType": "BN254.BaseField"
4622              }
4623            ]
4624          },
4625          {
4626            "name": "split1",
4627            "type": "tuple",
4628            "internalType": "struct BN254.G1Point",
4629            "components": [
4630              {
4631                "name": "x",
4632                "type": "uint256",
4633                "internalType": "BN254.BaseField"
4634              },
4635              {
4636                "name": "y",
4637                "type": "uint256",
4638                "internalType": "BN254.BaseField"
4639              }
4640            ]
4641          },
4642          {
4643            "name": "split2",
4644            "type": "tuple",
4645            "internalType": "struct BN254.G1Point",
4646            "components": [
4647              {
4648                "name": "x",
4649                "type": "uint256",
4650                "internalType": "BN254.BaseField"
4651              },
4652              {
4653                "name": "y",
4654                "type": "uint256",
4655                "internalType": "BN254.BaseField"
4656              }
4657            ]
4658          },
4659          {
4660            "name": "split3",
4661            "type": "tuple",
4662            "internalType": "struct BN254.G1Point",
4663            "components": [
4664              {
4665                "name": "x",
4666                "type": "uint256",
4667                "internalType": "BN254.BaseField"
4668              },
4669              {
4670                "name": "y",
4671                "type": "uint256",
4672                "internalType": "BN254.BaseField"
4673              }
4674            ]
4675          },
4676          {
4677            "name": "split4",
4678            "type": "tuple",
4679            "internalType": "struct BN254.G1Point",
4680            "components": [
4681              {
4682                "name": "x",
4683                "type": "uint256",
4684                "internalType": "BN254.BaseField"
4685              },
4686              {
4687                "name": "y",
4688                "type": "uint256",
4689                "internalType": "BN254.BaseField"
4690              }
4691            ]
4692          },
4693          {
4694            "name": "zeta",
4695            "type": "tuple",
4696            "internalType": "struct BN254.G1Point",
4697            "components": [
4698              {
4699                "name": "x",
4700                "type": "uint256",
4701                "internalType": "BN254.BaseField"
4702              },
4703              {
4704                "name": "y",
4705                "type": "uint256",
4706                "internalType": "BN254.BaseField"
4707              }
4708            ]
4709          },
4710          {
4711            "name": "zetaOmega",
4712            "type": "tuple",
4713            "internalType": "struct BN254.G1Point",
4714            "components": [
4715              {
4716                "name": "x",
4717                "type": "uint256",
4718                "internalType": "BN254.BaseField"
4719              },
4720              {
4721                "name": "y",
4722                "type": "uint256",
4723                "internalType": "BN254.BaseField"
4724              }
4725            ]
4726          },
4727          {
4728            "name": "wireEval0",
4729            "type": "uint256",
4730            "internalType": "BN254.ScalarField"
4731          },
4732          {
4733            "name": "wireEval1",
4734            "type": "uint256",
4735            "internalType": "BN254.ScalarField"
4736          },
4737          {
4738            "name": "wireEval2",
4739            "type": "uint256",
4740            "internalType": "BN254.ScalarField"
4741          },
4742          {
4743            "name": "wireEval3",
4744            "type": "uint256",
4745            "internalType": "BN254.ScalarField"
4746          },
4747          {
4748            "name": "wireEval4",
4749            "type": "uint256",
4750            "internalType": "BN254.ScalarField"
4751          },
4752          {
4753            "name": "sigmaEval0",
4754            "type": "uint256",
4755            "internalType": "BN254.ScalarField"
4756          },
4757          {
4758            "name": "sigmaEval1",
4759            "type": "uint256",
4760            "internalType": "BN254.ScalarField"
4761          },
4762          {
4763            "name": "sigmaEval2",
4764            "type": "uint256",
4765            "internalType": "BN254.ScalarField"
4766          },
4767          {
4768            "name": "sigmaEval3",
4769            "type": "uint256",
4770            "internalType": "BN254.ScalarField"
4771          },
4772          {
4773            "name": "prodPermZetaOmegaEval",
4774            "type": "uint256",
4775            "internalType": "BN254.ScalarField"
4776          }
4777        ]
4778      }
4779    ],
4780    "outputs": [],
4781    "stateMutability": "nonpayable"
4782  },
4783  {
4784    "type": "function",
4785    "name": "owner",
4786    "inputs": [],
4787    "outputs": [
4788      {
4789        "name": "",
4790        "type": "address",
4791        "internalType": "address"
4792      }
4793    ],
4794    "stateMutability": "view"
4795  },
4796  {
4797    "type": "function",
4798    "name": "permissionedProver",
4799    "inputs": [],
4800    "outputs": [
4801      {
4802        "name": "",
4803        "type": "address",
4804        "internalType": "address"
4805      }
4806    ],
4807    "stateMutability": "view"
4808  },
4809  {
4810    "type": "function",
4811    "name": "proxiableUUID",
4812    "inputs": [],
4813    "outputs": [
4814      {
4815        "name": "",
4816        "type": "bytes32",
4817        "internalType": "bytes32"
4818      }
4819    ],
4820    "stateMutability": "view"
4821  },
4822  {
4823    "type": "function",
4824    "name": "renounceOwnership",
4825    "inputs": [],
4826    "outputs": [],
4827    "stateMutability": "nonpayable"
4828  },
4829  {
4830    "type": "function",
4831    "name": "setPermissionedProver",
4832    "inputs": [
4833      {
4834        "name": "prover",
4835        "type": "address",
4836        "internalType": "address"
4837      }
4838    ],
4839    "outputs": [],
4840    "stateMutability": "nonpayable"
4841  },
4842  {
4843    "type": "function",
4844    "name": "setStateHistoryRetentionPeriod",
4845    "inputs": [
4846      {
4847        "name": "historySeconds",
4848        "type": "uint32",
4849        "internalType": "uint32"
4850      }
4851    ],
4852    "outputs": [],
4853    "stateMutability": "nonpayable"
4854  },
4855  {
4856    "type": "function",
4857    "name": "setstateHistoryRetentionPeriod",
4858    "inputs": [
4859      {
4860        "name": "historySeconds",
4861        "type": "uint32",
4862        "internalType": "uint32"
4863      }
4864    ],
4865    "outputs": [],
4866    "stateMutability": "nonpayable"
4867  },
4868  {
4869    "type": "function",
4870    "name": "stateHistoryCommitments",
4871    "inputs": [
4872      {
4873        "name": "",
4874        "type": "uint256",
4875        "internalType": "uint256"
4876      }
4877    ],
4878    "outputs": [
4879      {
4880        "name": "l1BlockHeight",
4881        "type": "uint64",
4882        "internalType": "uint64"
4883      },
4884      {
4885        "name": "l1BlockTimestamp",
4886        "type": "uint64",
4887        "internalType": "uint64"
4888      },
4889      {
4890        "name": "hotShotBlockHeight",
4891        "type": "uint64",
4892        "internalType": "uint64"
4893      },
4894      {
4895        "name": "hotShotBlockCommRoot",
4896        "type": "uint256",
4897        "internalType": "BN254.ScalarField"
4898      }
4899    ],
4900    "stateMutability": "view"
4901  },
4902  {
4903    "type": "function",
4904    "name": "stateHistoryFirstIndex",
4905    "inputs": [],
4906    "outputs": [
4907      {
4908        "name": "",
4909        "type": "uint64",
4910        "internalType": "uint64"
4911      }
4912    ],
4913    "stateMutability": "view"
4914  },
4915  {
4916    "type": "function",
4917    "name": "stateHistoryRetentionPeriod",
4918    "inputs": [],
4919    "outputs": [
4920      {
4921        "name": "",
4922        "type": "uint32",
4923        "internalType": "uint32"
4924      }
4925    ],
4926    "stateMutability": "view"
4927  },
4928  {
4929    "type": "function",
4930    "name": "transferOwnership",
4931    "inputs": [
4932      {
4933        "name": "newOwner",
4934        "type": "address",
4935        "internalType": "address"
4936      }
4937    ],
4938    "outputs": [],
4939    "stateMutability": "nonpayable"
4940  },
4941  {
4942    "type": "function",
4943    "name": "updateEpochStartBlock",
4944    "inputs": [
4945      {
4946        "name": "newEpochStartBlock",
4947        "type": "uint64",
4948        "internalType": "uint64"
4949      }
4950    ],
4951    "outputs": [],
4952    "stateMutability": "nonpayable"
4953  },
4954  {
4955    "type": "function",
4956    "name": "upgradeToAndCall",
4957    "inputs": [
4958      {
4959        "name": "newImplementation",
4960        "type": "address",
4961        "internalType": "address"
4962      },
4963      {
4964        "name": "data",
4965        "type": "bytes",
4966        "internalType": "bytes"
4967      }
4968    ],
4969    "outputs": [],
4970    "stateMutability": "payable"
4971  },
4972  {
4973    "type": "function",
4974    "name": "votingStakeTableState",
4975    "inputs": [],
4976    "outputs": [
4977      {
4978        "name": "threshold",
4979        "type": "uint256",
4980        "internalType": "uint256"
4981      },
4982      {
4983        "name": "blsKeyComm",
4984        "type": "uint256",
4985        "internalType": "BN254.ScalarField"
4986      },
4987      {
4988        "name": "schnorrKeyComm",
4989        "type": "uint256",
4990        "internalType": "BN254.ScalarField"
4991      },
4992      {
4993        "name": "amountComm",
4994        "type": "uint256",
4995        "internalType": "BN254.ScalarField"
4996      }
4997    ],
4998    "stateMutability": "view"
4999  },
5000  {
5001    "type": "event",
5002    "name": "Initialized",
5003    "inputs": [
5004      {
5005        "name": "version",
5006        "type": "uint64",
5007        "indexed": false,
5008        "internalType": "uint64"
5009      }
5010    ],
5011    "anonymous": false
5012  },
5013  {
5014    "type": "event",
5015    "name": "NewEpoch",
5016    "inputs": [
5017      {
5018        "name": "epoch",
5019        "type": "uint64",
5020        "indexed": false,
5021        "internalType": "uint64"
5022      }
5023    ],
5024    "anonymous": false
5025  },
5026  {
5027    "type": "event",
5028    "name": "NewState",
5029    "inputs": [
5030      {
5031        "name": "viewNum",
5032        "type": "uint64",
5033        "indexed": true,
5034        "internalType": "uint64"
5035      },
5036      {
5037        "name": "blockHeight",
5038        "type": "uint64",
5039        "indexed": true,
5040        "internalType": "uint64"
5041      },
5042      {
5043        "name": "blockCommRoot",
5044        "type": "uint256",
5045        "indexed": false,
5046        "internalType": "BN254.ScalarField"
5047      }
5048    ],
5049    "anonymous": false
5050  },
5051  {
5052    "type": "event",
5053    "name": "OwnershipTransferred",
5054    "inputs": [
5055      {
5056        "name": "previousOwner",
5057        "type": "address",
5058        "indexed": true,
5059        "internalType": "address"
5060      },
5061      {
5062        "name": "newOwner",
5063        "type": "address",
5064        "indexed": true,
5065        "internalType": "address"
5066      }
5067    ],
5068    "anonymous": false
5069  },
5070  {
5071    "type": "event",
5072    "name": "PermissionedProverNotRequired",
5073    "inputs": [],
5074    "anonymous": false
5075  },
5076  {
5077    "type": "event",
5078    "name": "PermissionedProverRequired",
5079    "inputs": [
5080      {
5081        "name": "permissionedProver",
5082        "type": "address",
5083        "indexed": false,
5084        "internalType": "address"
5085      }
5086    ],
5087    "anonymous": false
5088  },
5089  {
5090    "type": "event",
5091    "name": "Upgrade",
5092    "inputs": [
5093      {
5094        "name": "implementation",
5095        "type": "address",
5096        "indexed": false,
5097        "internalType": "address"
5098      }
5099    ],
5100    "anonymous": false
5101  },
5102  {
5103    "type": "event",
5104    "name": "Upgraded",
5105    "inputs": [
5106      {
5107        "name": "implementation",
5108        "type": "address",
5109        "indexed": true,
5110        "internalType": "address"
5111      }
5112    ],
5113    "anonymous": false
5114  },
5115  {
5116    "type": "error",
5117    "name": "AddressEmptyCode",
5118    "inputs": [
5119      {
5120        "name": "target",
5121        "type": "address",
5122        "internalType": "address"
5123      }
5124    ]
5125  },
5126  {
5127    "type": "error",
5128    "name": "DeprecatedApi",
5129    "inputs": []
5130  },
5131  {
5132    "type": "error",
5133    "name": "ERC1967InvalidImplementation",
5134    "inputs": [
5135      {
5136        "name": "implementation",
5137        "type": "address",
5138        "internalType": "address"
5139      }
5140    ]
5141  },
5142  {
5143    "type": "error",
5144    "name": "ERC1967NonPayable",
5145    "inputs": []
5146  },
5147  {
5148    "type": "error",
5149    "name": "FailedInnerCall",
5150    "inputs": []
5151  },
5152  {
5153    "type": "error",
5154    "name": "InsufficientSnapshotHistory",
5155    "inputs": []
5156  },
5157  {
5158    "type": "error",
5159    "name": "InvalidAddress",
5160    "inputs": []
5161  },
5162  {
5163    "type": "error",
5164    "name": "InvalidArgs",
5165    "inputs": []
5166  },
5167  {
5168    "type": "error",
5169    "name": "InvalidHotShotBlockForCommitmentCheck",
5170    "inputs": []
5171  },
5172  {
5173    "type": "error",
5174    "name": "InvalidInitialization",
5175    "inputs": []
5176  },
5177  {
5178    "type": "error",
5179    "name": "InvalidMaxStateHistory",
5180    "inputs": []
5181  },
5182  {
5183    "type": "error",
5184    "name": "InvalidProof",
5185    "inputs": []
5186  },
5187  {
5188    "type": "error",
5189    "name": "InvalidScalar",
5190    "inputs": []
5191  },
5192  {
5193    "type": "error",
5194    "name": "MissingEpochRootUpdate",
5195    "inputs": []
5196  },
5197  {
5198    "type": "error",
5199    "name": "NoChangeRequired",
5200    "inputs": []
5201  },
5202  {
5203    "type": "error",
5204    "name": "NotInitializing",
5205    "inputs": []
5206  },
5207  {
5208    "type": "error",
5209    "name": "OutdatedState",
5210    "inputs": []
5211  },
5212  {
5213    "type": "error",
5214    "name": "OwnableInvalidOwner",
5215    "inputs": [
5216      {
5217        "name": "owner",
5218        "type": "address",
5219        "internalType": "address"
5220      }
5221    ]
5222  },
5223  {
5224    "type": "error",
5225    "name": "OwnableUnauthorizedAccount",
5226    "inputs": [
5227      {
5228        "name": "account",
5229        "type": "address",
5230        "internalType": "address"
5231      }
5232    ]
5233  },
5234  {
5235    "type": "error",
5236    "name": "OwnershipCannotBeRenounced",
5237    "inputs": []
5238  },
5239  {
5240    "type": "error",
5241    "name": "ProverNotPermissioned",
5242    "inputs": []
5243  },
5244  {
5245    "type": "error",
5246    "name": "UUPSUnauthorizedCallContext",
5247    "inputs": []
5248  },
5249  {
5250    "type": "error",
5251    "name": "UUPSUnsupportedProxiableUUID",
5252    "inputs": [
5253      {
5254        "name": "slot",
5255        "type": "bytes32",
5256        "internalType": "bytes32"
5257      }
5258    ]
5259  },
5260  {
5261    "type": "error",
5262    "name": "WrongStakeTableUsed",
5263    "inputs": []
5264  }
5265]
5266```*/
5267#[allow(
5268    non_camel_case_types,
5269    non_snake_case,
5270    clippy::pub_underscore_fields,
5271    clippy::style,
5272    clippy::empty_structs_with_brackets
5273)]
5274pub mod LightClientV3 {
5275    use super::*;
5276    use alloy::sol_types as alloy_sol_types;
5277    /// The creation / init bytecode of the contract.
5278    ///
5279    /// ```text
5280    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516136c86100f95f395f8181611c6b01528181611c940152611e1101526136c85ff3fe608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b610246366004612900565b6107fd565b005b348015610258575f5ffd5b5061026c610267366004612919565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a19190612930565b348015610343575f5ffd5b5061024b610352366004612b47565b61090e565b348015610362575f5ffd5b5061024b610371366004612e09565b610985565b348015610381575f5ffd5b50610395610390366004612b47565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b47565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e50565b610b8c565b61024b6104dd366004612e69565b610ba0565b3480156104ed575f5ffd5b50610447610bbf565b348015610501575f5ffd5b5061024b610bda565b348015610515575f5ffd5b5061024b610c48565b348015610529575f5ffd5b5061024b610371366004612f6c565b348015610543575f5ffd5b506103cb610c69565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a610585366004612919565b610c8e565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612fb0565b610db9565b34801561060d575f5ffd5b5061024b61061c366004612e50565b610e28565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fd8565b610eb1565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461302d565b610fc0565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613071565b348015610711575f5ffd5b5061024b610720366004612fb0565b6112e5565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a63660046130a6565b61143e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e4366004612900565b611596565b3480156107f4575f5ffd5b50600954610447565b6108056115d5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612667565b610909611630565b905090565b6109166115d5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610db9565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130da565b6109eb919061310d565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b03168361310d565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b031661313a565b600a546001600160401b0391821691610a8491168461310d565b6001600160401b0316115b92915050565b610a9d6115d5565b5f51602061369c5f395f51905f52805460039190600160401b900460ff1680610ad3575080546001600160401b03808416911610155b15610af15760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b2b9291810482169116610db9565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b946115d5565b610b9d81610e28565b50565b610ba8611c60565b610bb182611d04565b610bbb8282611d45565b5050565b5f610bc8611e06565b505f51602061367c5f395f51905f5290565b610be26115d5565b6008546001600160a01b031615610c2d57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c506115d5565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91610909916001600160401b03600160401b90920482169116610db9565b600980545f91829190610ca2600183613159565b81548110610cb257610cb261316c565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cf157604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610db2578460098281548110610d2157610d2161316c565b5f918252602090912060029091020154600160801b90046001600160401b03161115610daa5760098181548110610d5a57610d5a61316c565b905f5260205f2090600202016001015460098281548110610d7d57610d7d61316c565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610d05565b5050915091565b5f816001600160401b03165f03610dd157505f610a8f565b826001600160401b03165f03610de957506001610a8f565b610df3828461310d565b6001600160401b03165f03610e1357610e0c8284613180565b9050610a8f565b610e1d8284613180565b610e0c9060016130da565b610e306115d5565b610e108163ffffffff161080610e4f57506301e133808163ffffffff16115b80610e6d575060085463ffffffff600160a01b909104811690821611155b15610e8b576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f51602061369c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610ee25750825b90505f826001600160401b03166001148015610efd5750303b155b905081158015610f0b575080155b15610f295760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f5357845460ff60401b1916600160401b1785555b610f5c86611e4f565b610f64611e60565b610f6f898989611e68565b8315610fb557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fe557506008546001600160a01b03163314155b15611003576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b03918216911611158061103c575060065460208501516001600160401b03600160401b9092048216911611155b1561105a5760405163051c46ef60e01b815260040160405180910390fd5b6110678460400151611f94565b6110748360200151611f94565b6110818360400151611f94565b61108e8360600151611f94565b5f611097610c69565b6020860151600a549192505f916110b791906001600160401b0316610db9565b6010549091506001600160401b03908116908216106110fb576110dd8660200151610a00565b156110fb5760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b0390811690821611156111a757600261111e838361313a565b6001600160401b0316106111455760405163080ae8d960e01b815260040160405180910390fd5b6111508260016130da565b6001600160401b0316816001600160401b0316148015611189575060065461118790600160401b90046001600160401b031661099e565b155b156111a75760405163080ae8d960e01b815260040160405180910390fd5b6111b386868686611fd5565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906112105750611210866020015161099e565b1561127a578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b61125e8260016130da565b6040516001600160401b03909116815260200160405180910390a15b6112854342886121ff565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112d591815260200190565b60405180910390a3505050505050565b6112ed6115d5565b5f51602061369c5f395f51905f52805460029190600160401b900460ff1680611323575080546001600160401b03808416911610155b156113415760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611389576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113d28385610db9565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061144f575080155b806114995750600854600980549091600160c01b90046001600160401b031690811061147d5761147d61316c565b5f9182526020909120600290910201546001600160401b031684105b156114b75760405163b0b4387760e01b815260040160405180910390fd5b5f80806114c5600185613159565b90505b8161156157600854600160c01b90046001600160401b031681106115615786600982815481106114fa576114fa61316c565b5f9182526020909120600290910201546001600160401b03161161154f57600191506009818154811061152f5761152f61316c565b5f9182526020909120600290910201546001600160401b03169250611561565b80611559816131ad565b9150506114c8565b8161157f5760405163b0b4387760e01b815260040160405180910390fd5b8561158a8489613159565b11979650505050505050565b61159e6115d5565b6001600160a01b0381166115cc57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9d816123e8565b336116077f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c465760405163118cdaa760e01b81523360048201526024016115c3565b611638612667565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ce657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cda5f51602061367c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c465760405163703e46dd60e11b815260040160405180910390fd5b611d0c6115d5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d9f575060408051601f3d908101601f19168201909252611d9c918101906131c2565b60015b611dc757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115c3565b5f51602061367c5f395f51905f528114611df757604051632a87526960e21b8152600481018290526024016115c3565b611e018383612458565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c465760405163703e46dd60e11b815260040160405180910390fd5b611e576124ad565b610b9d816124e3565b610c466124ad565b82516001600160401b0316151580611e8c575060208301516001600160401b031615155b80611e9957506020820151155b80611ea657506040820151155b80611eb357506060820151155b80611ebd57508151155b80611ecf5750610e108163ffffffff16105b80611ee357506301e133808163ffffffff16115b15611f01576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bbb5760405163016c173360e21b815260040160405180910390fd5b5f611fde6108f9565b9050611fe86128cc565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120405750612040876020015161099e565b15612089576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a00160405160208183030381529060405290506120c4565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261211591849089906020016131f0565b60408051601f19818403018152919052805160209091012090506121597f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613212565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061219990879087908a90600401613407565b602060405180830381865af41580156121b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d89190613627565b6121f5576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b60095415801590612274575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061223f5761223f61316c565b5f91825260209091206002909102015461226990600160401b90046001600160401b03168461313a565b6001600160401b0316115b1561230757600854600980549091600160c01b90046001600160401b03169081106122a1576122a161316c565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186122e183613646565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612461826124eb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156124a557611e01828261254e565b610bbb6125c0565b5f51602061369c5f395f51905f5254600160401b900460ff16610c4657604051631afcd79f60e31b815260040160405180910390fd5b61159e6124ad565b806001600160a01b03163b5f0361252057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115c3565b5f51602061367c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161256a9190613670565b5f60405180830381855af49150503d805f81146125a2576040519150601f19603f3d011682016040523d82523d5f602084013e6125a7565b606091505b50915091506125b78583836125df565b95945050505050565b3415610c465760405163b398979f60e01b815260040160405180910390fd5b6060826125f4576125ef8261263e565b612637565b815115801561260b57506001600160a01b0384163b155b1561263457604051639996b31560e01b81526001600160a01b03851660048201526024016115c3565b50805b9392505050565b80511561264e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b815260200161277a60405180604001604052805f81526020015f81525090565b815260200161279a60405180604001604052805f81526020015f81525090565b81526020016127ba60405180604001604052805f81526020015f81525090565b81526020016127da60405180604001604052805f81526020015f81525090565b81526020016127fa60405180604001604052805f81526020015f81525090565b815260200161281a60405180604001604052805f81526020015f81525090565b815260200161283a60405180604001604052805f81526020015f81525090565b815260200161285a60405180604001604052805f81526020015f81525090565b815260200161287a60405180604001604052805f81526020015f81525090565b815260200161289a60405180604001604052805f81526020015f81525090565b81526020016128ba60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f60208284031215612910575f5ffd5b612637826128ea565b5f60208284031215612929575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612962604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b57575f5ffd5b61263782612b31565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612b9757612b97612b60565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612bc557612bc5612b60565b604052919050565b5f60608284031215612bdd575f5ffd5b604051606081016001600160401b0381118282101715612bff57612bff612b60565b604052905080612c0e83612b31565b8152612c1c60208401612b31565b6020820152604092830135920191909152919050565b5f60408284031215612c42575f5ffd5b604080519081016001600160401b0381118282101715612c6457612c64612b60565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c8f575f5ffd5b612c97612b74565b9050612ca38383612c32565b8152612cb28360408401612c32565b6020820152612cc48360808401612c32565b6040820152612cd68360c08401612c32565b6060820152612ce9836101008401612c32565b6080820152612cfc836101408401612c32565b60a0820152612d0f836101808401612c32565b60c0820152612d22836101c08401612c32565b60e0820152612d35836102008401612c32565b610100820152612d49836102408401612c32565b610120820152612d5d836102808401612c32565b610140820152612d71836102c08401612c32565b610160820152612d85836103008401612c32565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e1b575f5ffd5b612e258484612bcd565b9150612e348460608501612c7e565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e60575f5ffd5b61263782612e3d565b5f5f60408385031215612e7a575f5ffd5b612e83836128ea565b915060208301356001600160401b03811115612e9d575f5ffd5b8301601f81018513612ead575f5ffd5b80356001600160401b03811115612ec657612ec6612b60565b612ed9601f8201601f1916602001612b9d565b818152866020838501011115612eed575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f1c575f5ffd5b604051608081016001600160401b0381118282101715612f3e57612f3e612b60565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f7f575f5ffd5b612f898585612bcd565b9250612f988560608601612f0c565b9150612fa78560e08601612c7e565b90509250925092565b5f5f60408385031215612fc1575f5ffd5b612fca83612b31565b9150612e3460208401612b31565b5f5f5f5f6101208587031215612fec575f5ffd5b612ff68686612bcd565b93506130058660608701612f0c565b925061301360e08601612e3d565b915061302261010086016128ea565b905092959194509250565b5f5f5f5f6105808587031215613041575f5ffd5b61304b8686612bcd565b935061305a8660608701612f0c565b925060e08501359150613022866101008701612c7e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156130b7575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130c6565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613125576131256130f9565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130c6565b81810381811115610a8f57610a8f6130c6565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613198576131986130f9565b806001600160401b0384160491505092915050565b5f816131bb576131bb6130c6565b505f190190565b5f602082840312156131d2575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6132046131fe83876131d9565b856131d9565b928352505060200192915050565b5f82613220576132206130f9565b500690565b805f5b6005811015613247578151845260209384019390910190600101613228565b50505050565b61326282825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613439604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613611610500830185613225565b61361f6105a083018461324d565b949350505050565b5f60208284031215613637575f5ffd5b81518015158114612637575f5ffd5b5f6001600160401b0382166001600160401b038103613667576136676130c6565b60010192915050565b5f61263782846131d956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5281    /// ```
5282    #[rustfmt::skip]
5283    #[allow(clippy::all)]
5284    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5285        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa6\xC8a\0\xF9_9_\x81\x81a\x1Ck\x01R\x81\x81a\x1C\x94\x01Ra\x1E\x11\x01Ra6\xC8_\xF3\xFE`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a)\0V[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)\x19V[a\x08\xB0V[`@Qa\x02\xA1\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)0V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+GV[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\tV[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+GV[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+GV[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a.PV[a\x0B\x8CV[a\x02Ka\x04\xDD6`\x04a.iV[a\x0B\xA0V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xBFV[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xDAV[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0CHV[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/lV[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CiV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a)\x19V[a\x0C\x8EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\xB0V[a\r\xB9V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a.PV[a\x0E(V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xD8V[a\x0E\xB1V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0-V[a\x0F\xC0V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0qV[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\xB0V[a\x12\xE5V[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\xA6V[a\x14>V[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a)\0V[a\x15\x96V[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x08[W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08\xBFW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\x01a&gV[a\t\ta\x160V[\x90P\x90V[a\t\x16a\x15\xD5V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xB9V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xDAV[a\t\xEB\x91\x90a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1:V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a1\rV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n\x9Da\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xD3WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xF1W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x0B+\x92\x91\x81\x04\x82\x16\x91\x16a\r\xB9V[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[a\x0B\x94a\x15\xD5V[a\x0B\x9D\x81a\x0E(V[PV[a\x0B\xA8a\x1C`V[a\x0B\xB1\x82a\x1D\x04V[a\x0B\xBB\x82\x82a\x1DEV[PPV[_a\x0B\xC8a\x1E\x06V[P_Q` a6|_9_Q\x90_R\x90V[a\x0B\xE2a\x15\xD5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C-W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0CPa\x15\xD5V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xB9V[`\t\x80T_\x91\x82\x91\x90a\x0C\xA2`\x01\x83a1YV[\x81T\x81\x10a\x0C\xB2Wa\x0C\xB2a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xF1W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\r\xB2W\x84`\t\x82\x81T\x81\x10a\r!Wa\r!a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\xAAW`\t\x81\x81T\x81\x10a\rZWa\rZa1lV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\r}Wa\r}a1lV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\r\x05V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xE9WP`\x01a\n\x8FV[a\r\xF3\x82\x84a1\rV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0E\x13Wa\x0E\x0C\x82\x84a1\x80V[\x90Pa\n\x8FV[a\x0E\x1D\x82\x84a1\x80V[a\x0E\x0C\x90`\x01a0\xDAV[a\x0E0a\x15\xD5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0EOWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EmWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0E\x8BW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[_Q` a6\x9C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xE2WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xFDWP0;\x15[\x90P\x81\x15\x80\x15a\x0F\x0BWP\x80\x15[\x15a\x0F)W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0FSW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\\\x86a\x1EOV[a\x0Fda\x1E`V[a\x0Fo\x89\x89\x89a\x1EhV[\x83\x15a\x0F\xB5W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0F\xE5WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x10\x03W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x10<WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10ZW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10g\x84`@\x01Qa\x1F\x94V[a\x10t\x83` \x01Qa\x1F\x94V[a\x10\x81\x83`@\x01Qa\x1F\x94V[a\x10\x8E\x83``\x01Qa\x1F\x94V[_a\x10\x97a\x0CiV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\xB7\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xB9V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xFBWa\x10\xDD\x86` \x01Qa\n\0V[\x15a\x10\xFBW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x11\xA7W`\x02a\x11\x1E\x83\x83a1:V[`\x01`\x01`@\x1B\x03\x16\x10a\x11EW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11P\x82`\x01a0\xDAV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11\x89WP`\x06Ta\x11\x87\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\xA7W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x86\x86\x86\x86a\x1F\xD5V[\x85Q`\x06\x80T` \x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x12\x10WPa\x12\x10\x86` \x01Qa\t\x9EV[\x15a\x12zW\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x12^\x82`\x01a0\xDAV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12\x85CB\x88a!\xFFV[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x12\xD5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x12\xEDa\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13#WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13AW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x13\x89W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\xD2\x83\x85a\r\xB9V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x14OWP\x80\x15[\x80a\x14\x99WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14}Wa\x14}a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\xB7W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xC5`\x01\x85a1YV[\x90P[\x81a\x15aW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15aW\x86`\t\x82\x81T\x81\x10a\x14\xFAWa\x14\xFAa1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15OW`\x01\x91P`\t\x81\x81T\x81\x10a\x15/Wa\x15/a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15aV[\x80a\x15Y\x81a1\xADV[\x91PPa\x14\xC8V[\x81a\x15\x7FW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15\x8A\x84\x89a1YV[\x11\x97\x96PPPPPPPV[a\x15\x9Ea\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x9D\x81a#\xE8V[3a\x16\x07\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0CFW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xC3V[a\x168a&gV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F)I&\r\xC9\xE9b\x1B\xB4\x1D\xCB\x96\xBApT\xB4\xBD^~#\x0F\xDB\xA5\xF3A\x12`@\x1CU\xF5\x9D`@\x82\x01QR\x7F\x05\xD06\x978E\xE2\xE9\xD2\xAD\x9Ay[5\x155\xA2WmQ\xD2\x7F!\xFF\x83r\xBE\x92\xBDo9F` `@\x83\x01Q\x01R\x7F\x0B\xA2\xC5\xAE\x93`\xEF\xEC\x9E9h\xE3?W\xFD3\x05\x9EW8\\\x1E\xA7\xDBd0Bk\x82\xE0\x87\x1A``\x82\x01QR\x7F\x1E3;S\x98\xC9S\x19@vw*\x86\x1B{\xF6\xA4\xC8\x0CJL.T\xEB\x9C\xA6z\xEC_\xF1\x9F\xC9` ``\x83\x01Q\x01R\x7F\r\x9E\x9B\x9F8\xDD\x9F\xBB\xD5\xCD\x8BZ\x1D\x1C\x8A\xA4\xE7w\xE5&\xE0n\xFE94[\xF3\xCEL[\xB4\xAA`\x80\x82\x01QR\x7F\x10A~\xAF\x9B\xA30\xBB\xF5l\xAF3\x1A6!\x14\x15:\x9C\x95\xAE\x91O\xBD\x1F\x99\xCB\x84\xD5\x9F\xBFV` `\x80\x83\x01Q\x01R\x7F\x15]\xFC:\x03\x9F\x16\xAB\x99\xFA\x96cV\x9F\xF0n[\xFD\xA9\x17H\xA7\x98!\xD8\r\xAF\xC7\xF1\xD9.^`\xA0\x82\x01QR\x7F\x15\xDA\xEE\x81\xE8\xFF\xCA\xC8\x86\xBF\x9C\xC7E=e\x9A\x98}\xA1\xFE\xB8\x93\xC1\xFE\x9A\x94X?3\x7Fm\xFA` `\xA0\x83\x01Q\x01R\x7F\x1Co\x99W'\x08?VsJHc\xC3\xBFD3\xB55:\xD8\xD2\x0F\x15\xD5T\xA8\xCD+\xE2\x8E\xF9-`\xC0\x82\x01QR\x7F\x076\xEB\xBF\rs\xD4,B\x8D]\xD6k\xA4\xD9\xD9Q:d-\x94\x14}\xB6)\x96Mm\x03'v\xA8` `\xC0\x83\x01Q\x01R\x7F,J\xA1\xA4-\x17\xF2&S'B\xB7\xDA!\xED\x90\x8E\xE6\xA1\xC1=\x82K&\x9D!\xAB\xCDY\xC8g#`\xE0\x82\x01QR\x7F\x05\xC4\x16<\xA9\xCA\xB2\xE6Z\xBB\xB4\x1BauY\x1C\xF9$`\0\x0C\x96\xFB\x9D\xAA\x1F\x01\xD5\n\xF4\x93l` `\xE0\x83\x01Q\x01R\x7F!^\xCFh<e\xEE=\xCA</\xC0KHd\xB1\xF2\xA58\xEF\x92:\xF68\rB\x0F\xA6\xB5\xA9\xF4\x96a\x01\0\x82\x01QR\x7F\x1D\x03\xC3x\xF3\xD7\x06=\x12\xC4Y\xACe\x9C\xE7\xA2|C\x9C\xD6\xAD\x18L\x17#R\x81_:8\r7` a\x01\0\x83\x01Q\x01R\x7F \xBC)T\x8F\x10\xBD\x07\xFD\xE4\x18\xD4\x9AV\x92\xF8\x91\x96\x94W\x1A\xB6L\x90\xF5\x83\xDCCJ_\xEC\x0Ca\x01 \x82\x01QR\x7F$N_\xCBQ\xC7G\xA5o\xE6\xFD\xB3/\x0B\x01\xEF;\xC5V'\xF6\xF9\xAF\xCD\x98\xDD\xDB\xED\xE5\x03\x08\xA3` a\x01 \x83\x01Q\x01R\x7F\x0E6F\xB3R\xD0\n4\x82\xE8\x98\x11\xF4\x96o\xB6F\x88\x9D\xAD\xB5a\xEB\xB7\xBB|\">\x81\x96\xD5\xB3a\x01@\x82\x01QR\x7F\x1B\x10!\x9Ab\x93\xAB\xAF08\x8F9\xE4\xC7\xB9%\xF8\x9BoW\xCB\x81eN\x1A\xD7U)Ny\x0F\t` a\x01@\x83\x01Q\x01R\x7F+)\xB3l\xD6\xD30b\xA9\xA8n$\xBD\x17\x8Di\xB1\xCE\xBD\xC1\xA3\x9Cyw\xD5G\xE7a{WG\xF9a\x01`\x82\x01QR\x7F\x17\x06!a\xC0\xA6<\xD1|\xEE[\x14\x82\x1Dx \xE7\xFAC##\xB1\"\xBAY\xC4M\xD0\x1Fj\x928` a\x01`\x83\x01Q\x01R\x7F\x11\x98\xDB<\xEC\x1Af\xCC\xDB\x90\x88k\xB9o\xCF\x17S\x16\xC6\xEAx\xF7?#\xF4\xA1\x1B\xCFC \xE1\x1Aa\x01\x80\x82\x01QR\x7F\x06;\x1F\x96>s+\xD2\r\x86\xE1\xFE\xF8Ux\x8C\x1A\xAC\xF2k\xAB\xB5&\xD8N0c:+Z\x94i` a\x01\x80\x83\x01Q\x01R\x7F#\x80\x9Aj[\xB0\xBF\x08\x8F\x97\xEF\xE1Qh\xA3\x94q\xA3\xA4\xE4\x1B\x8Dm\xB0\x10\x0E\x15\xFAh\xB0\x9Fca\x01\xA0\x82\x01QR\x7F\n\xBA{i\xAB\x7F\xDD\xA6\x8D\xAC\x90e\xA5\xEE\x9F\xB5\n\xBF\xE5{\xDBZ\xB3Y\xCC[V\xDF\xF6\\\xBE\xA1` a\x01\xA0\x83\x01Q\x01R\x7F\x1F\x03\x80d\xD3\xCA\x1F7\xC5n\xCF\xE4\x17\x01\xF1ZA,c\xD3\xC9\xADR\xFC\xFD?\xD4\xC6M\xA8\xB5\xF2a\x01\xC0\x82\x01QR\x7F&\x89\xFE\\\xC5\x9EK\xE1\x12\xC2G\x99i\xC2Z\x7F`:]q\xA2\xE7\x92D\x80\xC9\xF4\xEA\xFC,)\x8F` a\x01\xC0\x83\x01Q\x01R\x7F\x110!\xE93(\xA9\x151\xE4\x08qH\x1CG\x14\xE0\xB9\x9Aj\xFB\x10\xC7y\xEE\xB2\xB0zz\xE6\xF4\xE7a\x01\xE0\x82\x01QR\x7F\x1A6\xBB& \xCD\xB4\x0CM\xAD%%w\x16\xA9\xD8\xEB\x1EE\xF7\x15\xAD\xA9\x8EBF\x97\xAA\xF4\xD9\\\x86` a\x01\xE0\x83\x01Q\x01R\x7F\x08\xF3\xF8\x8F\xFB\x9EC&\x12\x94\xB7\xFA\xF5\x82\xC5\x13\xF9\xC7\xD0t\x9D\xB6\xDC\xC44\xD7I;\x8C\x97[/a\x02\0\x82\x01QR\x7F.>\x04Xt\x11\x19\xAD\x14\"\x07+h\x15\xFD\xA8\n8\x96d\x0F\x01\x8D(,\x88\xF1PkT\xE0\xE6` a\x02\0\x83\x01Q\x01R\x7F\x10\n\\\nN\x1A\xC2y\x1D\x1Fh\xBC\x9C%\xB3\x9C\xCF\xBB]b\x8CS\xD5T\x7F\x89\xAA\x0C\xAB\x83$\xD2a\x02 \x82\x01QR\x7F\x05\xBF\x9E\x97B\x8C8\x7F\xBB\xC5\xF9\xCB\xF6\xEF\xFB3\xB5vUIL*\xB9\xF7\xCC]DZ\x0E\xA5k\xEA` a\x02 \x83\x01Q\x01R\x7F\x06\x7F>\x0C\xE6\x9C\xBB\xE3#7\xF0S\x8B\xF6\x11\x9Cr\xF7\xFDM\x92\x85{x\\\xAF\x04\xA2%\xB9MFa\x02@\x82\x01QR\x7F!\x1A\x07bq\x06\x9F\xB1\xFA\xE1R*\xB8\xA4w\x94\x80\xB5\x0E\xD8\xC4d\x8D \x13A\xE4D\xE8\xEE-\x15` a\x02@\x83\x01Q\x01R\x7F\x0B\x93\x1B\x96\x99}\x9D\xB8\xBC\x19\x8Cu\0\x98\xCA\xD2\x96\r\xF4\x07\x88\x0F{,\xB5\x1C\x857m_\xC8Ia\x02`\x82\x01QR\x7F\x0E\x91!\xAFv\xD7\xD9ad2\xDE\xD6\xA4\xDE\x93\xCF\x14o[sS\xA7O\x8Are\xD67\x7F\xD4\xED\xC7` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xE6WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xDA_Q` a6|_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x0Ca\x15\xD5V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08\xA5V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x9FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x9C\x91\x81\x01\x90a1\xC2V[`\x01[a\x1D\xC7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_9_Q\x90_R\x81\x14a\x1D\xF7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xC3V[a\x1E\x01\x83\x83a$XV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1EWa$\xADV[a\x0B\x9D\x81a$\xE3V[a\x0CFa$\xADV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\x8CWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\x99WP` \x82\x01Q\x15[\x80a\x1E\xA6WP`@\x82\x01Q\x15[\x80a\x1E\xB3WP``\x82\x01Q\x15[\x80a\x1E\xBDWP\x81Q\x15[\x80a\x1E\xCFWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1E\xE3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1F\x01W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x0B\xBBW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xDEa\x08\xF9V[\x90Pa\x1F\xE8a(\xCCV[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a @WPa @\x87` \x01Qa\t\x9EV[\x15a \x89W`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa \xC4V[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra!\x15\x91\x84\x90\x89\x90` \x01a1\xF0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!Y\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2\x12V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a!\x99\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4\x07V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a!\xB4W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xD8\x91\x90a6'V[a!\xF5W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"tWP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"?Wa\"?a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"i\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1:V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#\x07W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\xA1Wa\"\xA1a1lV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\"\xE1\x83a6FV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a$a\x82a$\xEBV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a$\xA5Wa\x1E\x01\x82\x82a%NV[a\x0B\xBBa%\xC0V[_Q` a6\x9C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0CFW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x9Ea$\xADV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a% W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa%j\x91\x90a6pV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\xA2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\xA7V[``\x91P[P\x91P\x91Pa%\xB7\x85\x83\x83a%\xDFV[\x95\x94PPPPPV[4\x15a\x0CFW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a%\xF4Wa%\xEF\x82a&>V[a&7V[\x81Q\x15\x80\x15a&\x0BWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&4W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xC3V[P\x80[\x93\x92PPPV[\x80Q\x15a&NW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a)\x10W__\xFD[a&7\x82a(\xEAV[_` \x82\x84\x03\x12\x15a))W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)b`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+WW__\xFD[a&7\x82a+1V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x97Wa+\x97a+`V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xC5Wa+\xC5a+`V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xDDW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xFFWa+\xFFa+`V[`@R\x90P\x80a,\x0E\x83a+1V[\x81Ra,\x1C` \x84\x01a+1V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,BW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,dWa,da+`V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,\x8FW__\xFD[a,\x97a+tV[\x90Pa,\xA3\x83\x83a,2V[\x81Ra,\xB2\x83`@\x84\x01a,2V[` \x82\x01Ra,\xC4\x83`\x80\x84\x01a,2V[`@\x82\x01Ra,\xD6\x83`\xC0\x84\x01a,2V[``\x82\x01Ra,\xE9\x83a\x01\0\x84\x01a,2V[`\x80\x82\x01Ra,\xFC\x83a\x01@\x84\x01a,2V[`\xA0\x82\x01Ra-\x0F\x83a\x01\x80\x84\x01a,2V[`\xC0\x82\x01Ra-\"\x83a\x01\xC0\x84\x01a,2V[`\xE0\x82\x01Ra-5\x83a\x02\0\x84\x01a,2V[a\x01\0\x82\x01Ra-I\x83a\x02@\x84\x01a,2V[a\x01 \x82\x01Ra-]\x83a\x02\x80\x84\x01a,2V[a\x01@\x82\x01Ra-q\x83a\x02\xC0\x84\x01a,2V[a\x01`\x82\x01Ra-\x85\x83a\x03\0\x84\x01a,2V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a.\x1BW__\xFD[a.%\x84\x84a+\xCDV[\x91Pa.4\x84``\x85\x01a,~V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.`W__\xFD[a&7\x82a.=V[__`@\x83\x85\x03\x12\x15a.zW__\xFD[a.\x83\x83a(\xEAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9DW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\xADW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC6Wa.\xC6a+`V[a.\xD9`\x1F\x82\x01`\x1F\x19\x16` \x01a+\x9DV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xEDW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/\x1CW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/>Wa/>a+`V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a/\x7FW__\xFD[a/\x89\x85\x85a+\xCDV[\x92Pa/\x98\x85``\x86\x01a/\x0CV[\x91Pa/\xA7\x85`\xE0\x86\x01a,~V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xC1W__\xFD[a/\xCA\x83a+1V[\x91Pa.4` \x84\x01a+1V[____a\x01 \x85\x87\x03\x12\x15a/\xECW__\xFD[a/\xF6\x86\x86a+\xCDV[\x93Pa0\x05\x86``\x87\x01a/\x0CV[\x92Pa0\x13`\xE0\x86\x01a.=V[\x91Pa0\"a\x01\0\x86\x01a(\xEAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0AW__\xFD[a0K\x86\x86a+\xCDV[\x93Pa0Z\x86``\x87\x01a/\x0CV[\x92P`\xE0\x85\x015\x91Pa0\"\x86a\x01\0\x87\x01a,~V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a0\xB7W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1%Wa1%a0\xF9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x98Wa1\x98a0\xF9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\xBBWa1\xBBa0\xC6V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xD2W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x04a1\xFE\x83\x87a1\xD9V[\x85a1\xD9V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2 Wa2 a0\xF9V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2GW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2(V[PPPPV[a2b\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n \x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa49`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra6\x11a\x05\0\x83\x01\x85a2%V[a6\x1Fa\x05\xA0\x83\x01\x84a2MV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a67W__\xFD[\x81Q\x80\x15\x15\x81\x14a&7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6gWa6ga0\xC6V[`\x01\x01\x92\x91PPV[_a&7\x82\x84a1\xD9V\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5286    );
5287    /// The runtime bytecode of the contract, as deployed on the network.
5288    ///
5289    /// ```text
5290    ///0x608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b610246366004612900565b6107fd565b005b348015610258575f5ffd5b5061026c610267366004612919565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a19190612930565b348015610343575f5ffd5b5061024b610352366004612b47565b61090e565b348015610362575f5ffd5b5061024b610371366004612e09565b610985565b348015610381575f5ffd5b50610395610390366004612b47565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b47565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e50565b610b8c565b61024b6104dd366004612e69565b610ba0565b3480156104ed575f5ffd5b50610447610bbf565b348015610501575f5ffd5b5061024b610bda565b348015610515575f5ffd5b5061024b610c48565b348015610529575f5ffd5b5061024b610371366004612f6c565b348015610543575f5ffd5b506103cb610c69565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a610585366004612919565b610c8e565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612fb0565b610db9565b34801561060d575f5ffd5b5061024b61061c366004612e50565b610e28565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fd8565b610eb1565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461302d565b610fc0565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613071565b348015610711575f5ffd5b5061024b610720366004612fb0565b6112e5565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a63660046130a6565b61143e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e4366004612900565b611596565b3480156107f4575f5ffd5b50600954610447565b6108056115d5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612667565b610909611630565b905090565b6109166115d5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610db9565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130da565b6109eb919061310d565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b03168361310d565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b031661313a565b600a546001600160401b0391821691610a8491168461310d565b6001600160401b0316115b92915050565b610a9d6115d5565b5f51602061369c5f395f51905f52805460039190600160401b900460ff1680610ad3575080546001600160401b03808416911610155b15610af15760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b2b9291810482169116610db9565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b946115d5565b610b9d81610e28565b50565b610ba8611c60565b610bb182611d04565b610bbb8282611d45565b5050565b5f610bc8611e06565b505f51602061367c5f395f51905f5290565b610be26115d5565b6008546001600160a01b031615610c2d57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c506115d5565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91610909916001600160401b03600160401b90920482169116610db9565b600980545f91829190610ca2600183613159565b81548110610cb257610cb261316c565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cf157604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610db2578460098281548110610d2157610d2161316c565b5f918252602090912060029091020154600160801b90046001600160401b03161115610daa5760098181548110610d5a57610d5a61316c565b905f5260205f2090600202016001015460098281548110610d7d57610d7d61316c565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610d05565b5050915091565b5f816001600160401b03165f03610dd157505f610a8f565b826001600160401b03165f03610de957506001610a8f565b610df3828461310d565b6001600160401b03165f03610e1357610e0c8284613180565b9050610a8f565b610e1d8284613180565b610e0c9060016130da565b610e306115d5565b610e108163ffffffff161080610e4f57506301e133808163ffffffff16115b80610e6d575060085463ffffffff600160a01b909104811690821611155b15610e8b576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f51602061369c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610ee25750825b90505f826001600160401b03166001148015610efd5750303b155b905081158015610f0b575080155b15610f295760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f5357845460ff60401b1916600160401b1785555b610f5c86611e4f565b610f64611e60565b610f6f898989611e68565b8315610fb557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fe557506008546001600160a01b03163314155b15611003576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b03918216911611158061103c575060065460208501516001600160401b03600160401b9092048216911611155b1561105a5760405163051c46ef60e01b815260040160405180910390fd5b6110678460400151611f94565b6110748360200151611f94565b6110818360400151611f94565b61108e8360600151611f94565b5f611097610c69565b6020860151600a549192505f916110b791906001600160401b0316610db9565b6010549091506001600160401b03908116908216106110fb576110dd8660200151610a00565b156110fb5760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b0390811690821611156111a757600261111e838361313a565b6001600160401b0316106111455760405163080ae8d960e01b815260040160405180910390fd5b6111508260016130da565b6001600160401b0316816001600160401b0316148015611189575060065461118790600160401b90046001600160401b031661099e565b155b156111a75760405163080ae8d960e01b815260040160405180910390fd5b6111b386868686611fd5565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906112105750611210866020015161099e565b1561127a578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b61125e8260016130da565b6040516001600160401b03909116815260200160405180910390a15b6112854342886121ff565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112d591815260200190565b60405180910390a3505050505050565b6112ed6115d5565b5f51602061369c5f395f51905f52805460029190600160401b900460ff1680611323575080546001600160401b03808416911610155b156113415760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611389576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113d28385610db9565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061144f575080155b806114995750600854600980549091600160c01b90046001600160401b031690811061147d5761147d61316c565b5f9182526020909120600290910201546001600160401b031684105b156114b75760405163b0b4387760e01b815260040160405180910390fd5b5f80806114c5600185613159565b90505b8161156157600854600160c01b90046001600160401b031681106115615786600982815481106114fa576114fa61316c565b5f9182526020909120600290910201546001600160401b03161161154f57600191506009818154811061152f5761152f61316c565b5f9182526020909120600290910201546001600160401b03169250611561565b80611559816131ad565b9150506114c8565b8161157f5760405163b0b4387760e01b815260040160405180910390fd5b8561158a8489613159565b11979650505050505050565b61159e6115d5565b6001600160a01b0381166115cc57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9d816123e8565b336116077f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c465760405163118cdaa760e01b81523360048201526024016115c3565b611638612667565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ce657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cda5f51602061367c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c465760405163703e46dd60e11b815260040160405180910390fd5b611d0c6115d5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d9f575060408051601f3d908101601f19168201909252611d9c918101906131c2565b60015b611dc757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115c3565b5f51602061367c5f395f51905f528114611df757604051632a87526960e21b8152600481018290526024016115c3565b611e018383612458565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c465760405163703e46dd60e11b815260040160405180910390fd5b611e576124ad565b610b9d816124e3565b610c466124ad565b82516001600160401b0316151580611e8c575060208301516001600160401b031615155b80611e9957506020820151155b80611ea657506040820151155b80611eb357506060820151155b80611ebd57508151155b80611ecf5750610e108163ffffffff16105b80611ee357506301e133808163ffffffff16115b15611f01576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bbb5760405163016c173360e21b815260040160405180910390fd5b5f611fde6108f9565b9050611fe86128cc565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120405750612040876020015161099e565b15612089576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a00160405160208183030381529060405290506120c4565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261211591849089906020016131f0565b60408051601f19818403018152919052805160209091012090506121597f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613212565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061219990879087908a90600401613407565b602060405180830381865af41580156121b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d89190613627565b6121f5576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b60095415801590612274575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061223f5761223f61316c565b5f91825260209091206002909102015461226990600160401b90046001600160401b03168461313a565b6001600160401b0316115b1561230757600854600980549091600160c01b90046001600160401b03169081106122a1576122a161316c565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186122e183613646565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612461826124eb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156124a557611e01828261254e565b610bbb6125c0565b5f51602061369c5f395f51905f5254600160401b900460ff16610c4657604051631afcd79f60e31b815260040160405180910390fd5b61159e6124ad565b806001600160a01b03163b5f0361252057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115c3565b5f51602061367c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161256a9190613670565b5f60405180830381855af49150503d805f81146125a2576040519150601f19603f3d011682016040523d82523d5f602084013e6125a7565b606091505b50915091506125b78583836125df565b95945050505050565b3415610c465760405163b398979f60e01b815260040160405180910390fd5b6060826125f4576125ef8261263e565b612637565b815115801561260b57506001600160a01b0384163b155b1561263457604051639996b31560e01b81526001600160a01b03851660048201526024016115c3565b50805b9392505050565b80511561264e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b815260200161277a60405180604001604052805f81526020015f81525090565b815260200161279a60405180604001604052805f81526020015f81525090565b81526020016127ba60405180604001604052805f81526020015f81525090565b81526020016127da60405180604001604052805f81526020015f81525090565b81526020016127fa60405180604001604052805f81526020015f81525090565b815260200161281a60405180604001604052805f81526020015f81525090565b815260200161283a60405180604001604052805f81526020015f81525090565b815260200161285a60405180604001604052805f81526020015f81525090565b815260200161287a60405180604001604052805f81526020015f81525090565b815260200161289a60405180604001604052805f81526020015f81525090565b81526020016128ba60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f60208284031215612910575f5ffd5b612637826128ea565b5f60208284031215612929575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612962604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b57575f5ffd5b61263782612b31565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612b9757612b97612b60565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612bc557612bc5612b60565b604052919050565b5f60608284031215612bdd575f5ffd5b604051606081016001600160401b0381118282101715612bff57612bff612b60565b604052905080612c0e83612b31565b8152612c1c60208401612b31565b6020820152604092830135920191909152919050565b5f60408284031215612c42575f5ffd5b604080519081016001600160401b0381118282101715612c6457612c64612b60565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c8f575f5ffd5b612c97612b74565b9050612ca38383612c32565b8152612cb28360408401612c32565b6020820152612cc48360808401612c32565b6040820152612cd68360c08401612c32565b6060820152612ce9836101008401612c32565b6080820152612cfc836101408401612c32565b60a0820152612d0f836101808401612c32565b60c0820152612d22836101c08401612c32565b60e0820152612d35836102008401612c32565b610100820152612d49836102408401612c32565b610120820152612d5d836102808401612c32565b610140820152612d71836102c08401612c32565b610160820152612d85836103008401612c32565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e1b575f5ffd5b612e258484612bcd565b9150612e348460608501612c7e565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e60575f5ffd5b61263782612e3d565b5f5f60408385031215612e7a575f5ffd5b612e83836128ea565b915060208301356001600160401b03811115612e9d575f5ffd5b8301601f81018513612ead575f5ffd5b80356001600160401b03811115612ec657612ec6612b60565b612ed9601f8201601f1916602001612b9d565b818152866020838501011115612eed575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f1c575f5ffd5b604051608081016001600160401b0381118282101715612f3e57612f3e612b60565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f7f575f5ffd5b612f898585612bcd565b9250612f988560608601612f0c565b9150612fa78560e08601612c7e565b90509250925092565b5f5f60408385031215612fc1575f5ffd5b612fca83612b31565b9150612e3460208401612b31565b5f5f5f5f6101208587031215612fec575f5ffd5b612ff68686612bcd565b93506130058660608701612f0c565b925061301360e08601612e3d565b915061302261010086016128ea565b905092959194509250565b5f5f5f5f6105808587031215613041575f5ffd5b61304b8686612bcd565b935061305a8660608701612f0c565b925060e08501359150613022866101008701612c7e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156130b7575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130c6565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613125576131256130f9565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130c6565b81810381811115610a8f57610a8f6130c6565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613198576131986130f9565b806001600160401b0384160491505092915050565b5f816131bb576131bb6130c6565b505f190190565b5f602082840312156131d2575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6132046131fe83876131d9565b856131d9565b928352505060200192915050565b5f82613220576132206130f9565b500690565b805f5b6005811015613247578151845260209384019390910190600101613228565b50505050565b61326282825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613439604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613611610500830185613225565b61361f6105a083018461324d565b949350505050565b5f60208284031215613637575f5ffd5b81518015158114612637575f5ffd5b5f6001600160401b0382166001600160401b038103613667576136676130c6565b60010192915050565b5f61263782846131d956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5291    /// ```
5292    #[rustfmt::skip]
5293    #[allow(clippy::all)]
5294    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5295        b"`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a)\0V[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)\x19V[a\x08\xB0V[`@Qa\x02\xA1\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)0V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+GV[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\tV[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+GV[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+GV[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a.PV[a\x0B\x8CV[a\x02Ka\x04\xDD6`\x04a.iV[a\x0B\xA0V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xBFV[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xDAV[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0CHV[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/lV[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CiV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a)\x19V[a\x0C\x8EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\xB0V[a\r\xB9V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a.PV[a\x0E(V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xD8V[a\x0E\xB1V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0-V[a\x0F\xC0V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0qV[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\xB0V[a\x12\xE5V[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\xA6V[a\x14>V[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a)\0V[a\x15\x96V[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x08[W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08\xBFW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\x01a&gV[a\t\ta\x160V[\x90P\x90V[a\t\x16a\x15\xD5V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xB9V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xDAV[a\t\xEB\x91\x90a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1:V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a1\rV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n\x9Da\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xD3WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xF1W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x0B+\x92\x91\x81\x04\x82\x16\x91\x16a\r\xB9V[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[a\x0B\x94a\x15\xD5V[a\x0B\x9D\x81a\x0E(V[PV[a\x0B\xA8a\x1C`V[a\x0B\xB1\x82a\x1D\x04V[a\x0B\xBB\x82\x82a\x1DEV[PPV[_a\x0B\xC8a\x1E\x06V[P_Q` a6|_9_Q\x90_R\x90V[a\x0B\xE2a\x15\xD5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C-W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0CPa\x15\xD5V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xB9V[`\t\x80T_\x91\x82\x91\x90a\x0C\xA2`\x01\x83a1YV[\x81T\x81\x10a\x0C\xB2Wa\x0C\xB2a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xF1W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\r\xB2W\x84`\t\x82\x81T\x81\x10a\r!Wa\r!a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\xAAW`\t\x81\x81T\x81\x10a\rZWa\rZa1lV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\r}Wa\r}a1lV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\r\x05V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xE9WP`\x01a\n\x8FV[a\r\xF3\x82\x84a1\rV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0E\x13Wa\x0E\x0C\x82\x84a1\x80V[\x90Pa\n\x8FV[a\x0E\x1D\x82\x84a1\x80V[a\x0E\x0C\x90`\x01a0\xDAV[a\x0E0a\x15\xD5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0EOWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EmWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0E\x8BW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[_Q` a6\x9C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xE2WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xFDWP0;\x15[\x90P\x81\x15\x80\x15a\x0F\x0BWP\x80\x15[\x15a\x0F)W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0FSW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\\\x86a\x1EOV[a\x0Fda\x1E`V[a\x0Fo\x89\x89\x89a\x1EhV[\x83\x15a\x0F\xB5W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0F\xE5WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x10\x03W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x10<WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10ZW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10g\x84`@\x01Qa\x1F\x94V[a\x10t\x83` \x01Qa\x1F\x94V[a\x10\x81\x83`@\x01Qa\x1F\x94V[a\x10\x8E\x83``\x01Qa\x1F\x94V[_a\x10\x97a\x0CiV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\xB7\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xB9V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xFBWa\x10\xDD\x86` \x01Qa\n\0V[\x15a\x10\xFBW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x11\xA7W`\x02a\x11\x1E\x83\x83a1:V[`\x01`\x01`@\x1B\x03\x16\x10a\x11EW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11P\x82`\x01a0\xDAV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11\x89WP`\x06Ta\x11\x87\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\xA7W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x86\x86\x86\x86a\x1F\xD5V[\x85Q`\x06\x80T` \x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x12\x10WPa\x12\x10\x86` \x01Qa\t\x9EV[\x15a\x12zW\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x12^\x82`\x01a0\xDAV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12\x85CB\x88a!\xFFV[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x12\xD5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x12\xEDa\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13#WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13AW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x13\x89W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\xD2\x83\x85a\r\xB9V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x14OWP\x80\x15[\x80a\x14\x99WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14}Wa\x14}a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\xB7W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xC5`\x01\x85a1YV[\x90P[\x81a\x15aW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15aW\x86`\t\x82\x81T\x81\x10a\x14\xFAWa\x14\xFAa1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15OW`\x01\x91P`\t\x81\x81T\x81\x10a\x15/Wa\x15/a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15aV[\x80a\x15Y\x81a1\xADV[\x91PPa\x14\xC8V[\x81a\x15\x7FW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15\x8A\x84\x89a1YV[\x11\x97\x96PPPPPPPV[a\x15\x9Ea\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x9D\x81a#\xE8V[3a\x16\x07\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0CFW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xC3V[a\x168a&gV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F)I&\r\xC9\xE9b\x1B\xB4\x1D\xCB\x96\xBApT\xB4\xBD^~#\x0F\xDB\xA5\xF3A\x12`@\x1CU\xF5\x9D`@\x82\x01QR\x7F\x05\xD06\x978E\xE2\xE9\xD2\xAD\x9Ay[5\x155\xA2WmQ\xD2\x7F!\xFF\x83r\xBE\x92\xBDo9F` `@\x83\x01Q\x01R\x7F\x0B\xA2\xC5\xAE\x93`\xEF\xEC\x9E9h\xE3?W\xFD3\x05\x9EW8\\\x1E\xA7\xDBd0Bk\x82\xE0\x87\x1A``\x82\x01QR\x7F\x1E3;S\x98\xC9S\x19@vw*\x86\x1B{\xF6\xA4\xC8\x0CJL.T\xEB\x9C\xA6z\xEC_\xF1\x9F\xC9` ``\x83\x01Q\x01R\x7F\r\x9E\x9B\x9F8\xDD\x9F\xBB\xD5\xCD\x8BZ\x1D\x1C\x8A\xA4\xE7w\xE5&\xE0n\xFE94[\xF3\xCEL[\xB4\xAA`\x80\x82\x01QR\x7F\x10A~\xAF\x9B\xA30\xBB\xF5l\xAF3\x1A6!\x14\x15:\x9C\x95\xAE\x91O\xBD\x1F\x99\xCB\x84\xD5\x9F\xBFV` `\x80\x83\x01Q\x01R\x7F\x15]\xFC:\x03\x9F\x16\xAB\x99\xFA\x96cV\x9F\xF0n[\xFD\xA9\x17H\xA7\x98!\xD8\r\xAF\xC7\xF1\xD9.^`\xA0\x82\x01QR\x7F\x15\xDA\xEE\x81\xE8\xFF\xCA\xC8\x86\xBF\x9C\xC7E=e\x9A\x98}\xA1\xFE\xB8\x93\xC1\xFE\x9A\x94X?3\x7Fm\xFA` `\xA0\x83\x01Q\x01R\x7F\x1Co\x99W'\x08?VsJHc\xC3\xBFD3\xB55:\xD8\xD2\x0F\x15\xD5T\xA8\xCD+\xE2\x8E\xF9-`\xC0\x82\x01QR\x7F\x076\xEB\xBF\rs\xD4,B\x8D]\xD6k\xA4\xD9\xD9Q:d-\x94\x14}\xB6)\x96Mm\x03'v\xA8` `\xC0\x83\x01Q\x01R\x7F,J\xA1\xA4-\x17\xF2&S'B\xB7\xDA!\xED\x90\x8E\xE6\xA1\xC1=\x82K&\x9D!\xAB\xCDY\xC8g#`\xE0\x82\x01QR\x7F\x05\xC4\x16<\xA9\xCA\xB2\xE6Z\xBB\xB4\x1BauY\x1C\xF9$`\0\x0C\x96\xFB\x9D\xAA\x1F\x01\xD5\n\xF4\x93l` `\xE0\x83\x01Q\x01R\x7F!^\xCFh<e\xEE=\xCA</\xC0KHd\xB1\xF2\xA58\xEF\x92:\xF68\rB\x0F\xA6\xB5\xA9\xF4\x96a\x01\0\x82\x01QR\x7F\x1D\x03\xC3x\xF3\xD7\x06=\x12\xC4Y\xACe\x9C\xE7\xA2|C\x9C\xD6\xAD\x18L\x17#R\x81_:8\r7` a\x01\0\x83\x01Q\x01R\x7F \xBC)T\x8F\x10\xBD\x07\xFD\xE4\x18\xD4\x9AV\x92\xF8\x91\x96\x94W\x1A\xB6L\x90\xF5\x83\xDCCJ_\xEC\x0Ca\x01 \x82\x01QR\x7F$N_\xCBQ\xC7G\xA5o\xE6\xFD\xB3/\x0B\x01\xEF;\xC5V'\xF6\xF9\xAF\xCD\x98\xDD\xDB\xED\xE5\x03\x08\xA3` a\x01 \x83\x01Q\x01R\x7F\x0E6F\xB3R\xD0\n4\x82\xE8\x98\x11\xF4\x96o\xB6F\x88\x9D\xAD\xB5a\xEB\xB7\xBB|\">\x81\x96\xD5\xB3a\x01@\x82\x01QR\x7F\x1B\x10!\x9Ab\x93\xAB\xAF08\x8F9\xE4\xC7\xB9%\xF8\x9BoW\xCB\x81eN\x1A\xD7U)Ny\x0F\t` a\x01@\x83\x01Q\x01R\x7F+)\xB3l\xD6\xD30b\xA9\xA8n$\xBD\x17\x8Di\xB1\xCE\xBD\xC1\xA3\x9Cyw\xD5G\xE7a{WG\xF9a\x01`\x82\x01QR\x7F\x17\x06!a\xC0\xA6<\xD1|\xEE[\x14\x82\x1Dx \xE7\xFAC##\xB1\"\xBAY\xC4M\xD0\x1Fj\x928` a\x01`\x83\x01Q\x01R\x7F\x11\x98\xDB<\xEC\x1Af\xCC\xDB\x90\x88k\xB9o\xCF\x17S\x16\xC6\xEAx\xF7?#\xF4\xA1\x1B\xCFC \xE1\x1Aa\x01\x80\x82\x01QR\x7F\x06;\x1F\x96>s+\xD2\r\x86\xE1\xFE\xF8Ux\x8C\x1A\xAC\xF2k\xAB\xB5&\xD8N0c:+Z\x94i` a\x01\x80\x83\x01Q\x01R\x7F#\x80\x9Aj[\xB0\xBF\x08\x8F\x97\xEF\xE1Qh\xA3\x94q\xA3\xA4\xE4\x1B\x8Dm\xB0\x10\x0E\x15\xFAh\xB0\x9Fca\x01\xA0\x82\x01QR\x7F\n\xBA{i\xAB\x7F\xDD\xA6\x8D\xAC\x90e\xA5\xEE\x9F\xB5\n\xBF\xE5{\xDBZ\xB3Y\xCC[V\xDF\xF6\\\xBE\xA1` a\x01\xA0\x83\x01Q\x01R\x7F\x1F\x03\x80d\xD3\xCA\x1F7\xC5n\xCF\xE4\x17\x01\xF1ZA,c\xD3\xC9\xADR\xFC\xFD?\xD4\xC6M\xA8\xB5\xF2a\x01\xC0\x82\x01QR\x7F&\x89\xFE\\\xC5\x9EK\xE1\x12\xC2G\x99i\xC2Z\x7F`:]q\xA2\xE7\x92D\x80\xC9\xF4\xEA\xFC,)\x8F` a\x01\xC0\x83\x01Q\x01R\x7F\x110!\xE93(\xA9\x151\xE4\x08qH\x1CG\x14\xE0\xB9\x9Aj\xFB\x10\xC7y\xEE\xB2\xB0zz\xE6\xF4\xE7a\x01\xE0\x82\x01QR\x7F\x1A6\xBB& \xCD\xB4\x0CM\xAD%%w\x16\xA9\xD8\xEB\x1EE\xF7\x15\xAD\xA9\x8EBF\x97\xAA\xF4\xD9\\\x86` a\x01\xE0\x83\x01Q\x01R\x7F\x08\xF3\xF8\x8F\xFB\x9EC&\x12\x94\xB7\xFA\xF5\x82\xC5\x13\xF9\xC7\xD0t\x9D\xB6\xDC\xC44\xD7I;\x8C\x97[/a\x02\0\x82\x01QR\x7F.>\x04Xt\x11\x19\xAD\x14\"\x07+h\x15\xFD\xA8\n8\x96d\x0F\x01\x8D(,\x88\xF1PkT\xE0\xE6` a\x02\0\x83\x01Q\x01R\x7F\x10\n\\\nN\x1A\xC2y\x1D\x1Fh\xBC\x9C%\xB3\x9C\xCF\xBB]b\x8CS\xD5T\x7F\x89\xAA\x0C\xAB\x83$\xD2a\x02 \x82\x01QR\x7F\x05\xBF\x9E\x97B\x8C8\x7F\xBB\xC5\xF9\xCB\xF6\xEF\xFB3\xB5vUIL*\xB9\xF7\xCC]DZ\x0E\xA5k\xEA` a\x02 \x83\x01Q\x01R\x7F\x06\x7F>\x0C\xE6\x9C\xBB\xE3#7\xF0S\x8B\xF6\x11\x9Cr\xF7\xFDM\x92\x85{x\\\xAF\x04\xA2%\xB9MFa\x02@\x82\x01QR\x7F!\x1A\x07bq\x06\x9F\xB1\xFA\xE1R*\xB8\xA4w\x94\x80\xB5\x0E\xD8\xC4d\x8D \x13A\xE4D\xE8\xEE-\x15` a\x02@\x83\x01Q\x01R\x7F\x0B\x93\x1B\x96\x99}\x9D\xB8\xBC\x19\x8Cu\0\x98\xCA\xD2\x96\r\xF4\x07\x88\x0F{,\xB5\x1C\x857m_\xC8Ia\x02`\x82\x01QR\x7F\x0E\x91!\xAFv\xD7\xD9ad2\xDE\xD6\xA4\xDE\x93\xCF\x14o[sS\xA7O\x8Are\xD67\x7F\xD4\xED\xC7` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xE6WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xDA_Q` a6|_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x0Ca\x15\xD5V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08\xA5V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x9FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x9C\x91\x81\x01\x90a1\xC2V[`\x01[a\x1D\xC7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_9_Q\x90_R\x81\x14a\x1D\xF7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xC3V[a\x1E\x01\x83\x83a$XV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1EWa$\xADV[a\x0B\x9D\x81a$\xE3V[a\x0CFa$\xADV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\x8CWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\x99WP` \x82\x01Q\x15[\x80a\x1E\xA6WP`@\x82\x01Q\x15[\x80a\x1E\xB3WP``\x82\x01Q\x15[\x80a\x1E\xBDWP\x81Q\x15[\x80a\x1E\xCFWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1E\xE3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1F\x01W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x0B\xBBW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xDEa\x08\xF9V[\x90Pa\x1F\xE8a(\xCCV[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a @WPa @\x87` \x01Qa\t\x9EV[\x15a \x89W`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa \xC4V[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra!\x15\x91\x84\x90\x89\x90` \x01a1\xF0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!Y\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2\x12V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a!\x99\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4\x07V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a!\xB4W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xD8\x91\x90a6'V[a!\xF5W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"tWP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"?Wa\"?a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"i\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1:V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#\x07W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\xA1Wa\"\xA1a1lV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\"\xE1\x83a6FV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a$a\x82a$\xEBV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a$\xA5Wa\x1E\x01\x82\x82a%NV[a\x0B\xBBa%\xC0V[_Q` a6\x9C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0CFW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x9Ea$\xADV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a% W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa%j\x91\x90a6pV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\xA2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\xA7V[``\x91P[P\x91P\x91Pa%\xB7\x85\x83\x83a%\xDFV[\x95\x94PPPPPV[4\x15a\x0CFW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a%\xF4Wa%\xEF\x82a&>V[a&7V[\x81Q\x15\x80\x15a&\x0BWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&4W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xC3V[P\x80[\x93\x92PPPV[\x80Q\x15a&NW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a)\x10W__\xFD[a&7\x82a(\xEAV[_` \x82\x84\x03\x12\x15a))W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)b`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+WW__\xFD[a&7\x82a+1V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x97Wa+\x97a+`V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xC5Wa+\xC5a+`V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xDDW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xFFWa+\xFFa+`V[`@R\x90P\x80a,\x0E\x83a+1V[\x81Ra,\x1C` \x84\x01a+1V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,BW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,dWa,da+`V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,\x8FW__\xFD[a,\x97a+tV[\x90Pa,\xA3\x83\x83a,2V[\x81Ra,\xB2\x83`@\x84\x01a,2V[` \x82\x01Ra,\xC4\x83`\x80\x84\x01a,2V[`@\x82\x01Ra,\xD6\x83`\xC0\x84\x01a,2V[``\x82\x01Ra,\xE9\x83a\x01\0\x84\x01a,2V[`\x80\x82\x01Ra,\xFC\x83a\x01@\x84\x01a,2V[`\xA0\x82\x01Ra-\x0F\x83a\x01\x80\x84\x01a,2V[`\xC0\x82\x01Ra-\"\x83a\x01\xC0\x84\x01a,2V[`\xE0\x82\x01Ra-5\x83a\x02\0\x84\x01a,2V[a\x01\0\x82\x01Ra-I\x83a\x02@\x84\x01a,2V[a\x01 \x82\x01Ra-]\x83a\x02\x80\x84\x01a,2V[a\x01@\x82\x01Ra-q\x83a\x02\xC0\x84\x01a,2V[a\x01`\x82\x01Ra-\x85\x83a\x03\0\x84\x01a,2V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a.\x1BW__\xFD[a.%\x84\x84a+\xCDV[\x91Pa.4\x84``\x85\x01a,~V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.`W__\xFD[a&7\x82a.=V[__`@\x83\x85\x03\x12\x15a.zW__\xFD[a.\x83\x83a(\xEAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9DW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\xADW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC6Wa.\xC6a+`V[a.\xD9`\x1F\x82\x01`\x1F\x19\x16` \x01a+\x9DV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xEDW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/\x1CW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/>Wa/>a+`V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a/\x7FW__\xFD[a/\x89\x85\x85a+\xCDV[\x92Pa/\x98\x85``\x86\x01a/\x0CV[\x91Pa/\xA7\x85`\xE0\x86\x01a,~V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xC1W__\xFD[a/\xCA\x83a+1V[\x91Pa.4` \x84\x01a+1V[____a\x01 \x85\x87\x03\x12\x15a/\xECW__\xFD[a/\xF6\x86\x86a+\xCDV[\x93Pa0\x05\x86``\x87\x01a/\x0CV[\x92Pa0\x13`\xE0\x86\x01a.=V[\x91Pa0\"a\x01\0\x86\x01a(\xEAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0AW__\xFD[a0K\x86\x86a+\xCDV[\x93Pa0Z\x86``\x87\x01a/\x0CV[\x92P`\xE0\x85\x015\x91Pa0\"\x86a\x01\0\x87\x01a,~V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a0\xB7W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1%Wa1%a0\xF9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x98Wa1\x98a0\xF9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\xBBWa1\xBBa0\xC6V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xD2W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x04a1\xFE\x83\x87a1\xD9V[\x85a1\xD9V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2 Wa2 a0\xF9V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2GW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2(V[PPPPV[a2b\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n \x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa49`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra6\x11a\x05\0\x83\x01\x85a2%V[a6\x1Fa\x05\xA0\x83\x01\x84a2MV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a67W__\xFD[\x81Q\x80\x15\x15\x81\x14a&7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6gWa6ga0\xC6V[`\x01\x01\x92\x91PPV[_a&7\x82\x84a1\xD9V\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5296    );
5297    #[derive(serde::Serialize, serde::Deserialize)]
5298    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5299    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5300```solidity
5301error AddressEmptyCode(address target);
5302```*/
5303    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5304    #[derive(Clone)]
5305    pub struct AddressEmptyCode {
5306        #[allow(missing_docs)]
5307        pub target: alloy::sol_types::private::Address,
5308    }
5309    #[allow(
5310        non_camel_case_types,
5311        non_snake_case,
5312        clippy::pub_underscore_fields,
5313        clippy::style
5314    )]
5315    const _: () = {
5316        use alloy::sol_types as alloy_sol_types;
5317        #[doc(hidden)]
5318        #[allow(dead_code)]
5319        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5320        #[doc(hidden)]
5321        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5322        #[cfg(test)]
5323        #[allow(dead_code, unreachable_patterns)]
5324        fn _type_assertion(
5325            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5326        ) {
5327            match _t {
5328                alloy_sol_types::private::AssertTypeEq::<
5329                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5330                >(_) => {}
5331            }
5332        }
5333        #[automatically_derived]
5334        #[doc(hidden)]
5335        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5336            fn from(value: AddressEmptyCode) -> Self {
5337                (value.target,)
5338            }
5339        }
5340        #[automatically_derived]
5341        #[doc(hidden)]
5342        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5343            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5344                Self { target: tuple.0 }
5345            }
5346        }
5347        #[automatically_derived]
5348        impl alloy_sol_types::SolError for AddressEmptyCode {
5349            type Parameters<'a> = UnderlyingSolTuple<'a>;
5350            type Token<'a> = <Self::Parameters<
5351                'a,
5352            > as alloy_sol_types::SolType>::Token<'a>;
5353            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5354            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5355            #[inline]
5356            fn new<'a>(
5357                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5358            ) -> Self {
5359                tuple.into()
5360            }
5361            #[inline]
5362            fn tokenize(&self) -> Self::Token<'_> {
5363                (
5364                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5365                        &self.target,
5366                    ),
5367                )
5368            }
5369            #[inline]
5370            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5371                <Self::Parameters<
5372                    '_,
5373                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5374                    .map(Self::new)
5375            }
5376        }
5377    };
5378    #[derive(serde::Serialize, serde::Deserialize)]
5379    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5380    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5381```solidity
5382error DeprecatedApi();
5383```*/
5384    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5385    #[derive(Clone)]
5386    pub struct DeprecatedApi;
5387    #[allow(
5388        non_camel_case_types,
5389        non_snake_case,
5390        clippy::pub_underscore_fields,
5391        clippy::style
5392    )]
5393    const _: () = {
5394        use alloy::sol_types as alloy_sol_types;
5395        #[doc(hidden)]
5396        #[allow(dead_code)]
5397        type UnderlyingSolTuple<'a> = ();
5398        #[doc(hidden)]
5399        type UnderlyingRustTuple<'a> = ();
5400        #[cfg(test)]
5401        #[allow(dead_code, unreachable_patterns)]
5402        fn _type_assertion(
5403            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5404        ) {
5405            match _t {
5406                alloy_sol_types::private::AssertTypeEq::<
5407                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5408                >(_) => {}
5409            }
5410        }
5411        #[automatically_derived]
5412        #[doc(hidden)]
5413        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5414            fn from(value: DeprecatedApi) -> Self {
5415                ()
5416            }
5417        }
5418        #[automatically_derived]
5419        #[doc(hidden)]
5420        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5421            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5422                Self
5423            }
5424        }
5425        #[automatically_derived]
5426        impl alloy_sol_types::SolError for DeprecatedApi {
5427            type Parameters<'a> = UnderlyingSolTuple<'a>;
5428            type Token<'a> = <Self::Parameters<
5429                'a,
5430            > as alloy_sol_types::SolType>::Token<'a>;
5431            const SIGNATURE: &'static str = "DeprecatedApi()";
5432            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5433            #[inline]
5434            fn new<'a>(
5435                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5436            ) -> Self {
5437                tuple.into()
5438            }
5439            #[inline]
5440            fn tokenize(&self) -> Self::Token<'_> {
5441                ()
5442            }
5443            #[inline]
5444            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5445                <Self::Parameters<
5446                    '_,
5447                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5448                    .map(Self::new)
5449            }
5450        }
5451    };
5452    #[derive(serde::Serialize, serde::Deserialize)]
5453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5454    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5455```solidity
5456error ERC1967InvalidImplementation(address implementation);
5457```*/
5458    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5459    #[derive(Clone)]
5460    pub struct ERC1967InvalidImplementation {
5461        #[allow(missing_docs)]
5462        pub implementation: alloy::sol_types::private::Address,
5463    }
5464    #[allow(
5465        non_camel_case_types,
5466        non_snake_case,
5467        clippy::pub_underscore_fields,
5468        clippy::style
5469    )]
5470    const _: () = {
5471        use alloy::sol_types as alloy_sol_types;
5472        #[doc(hidden)]
5473        #[allow(dead_code)]
5474        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5475        #[doc(hidden)]
5476        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5477        #[cfg(test)]
5478        #[allow(dead_code, unreachable_patterns)]
5479        fn _type_assertion(
5480            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5481        ) {
5482            match _t {
5483                alloy_sol_types::private::AssertTypeEq::<
5484                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5485                >(_) => {}
5486            }
5487        }
5488        #[automatically_derived]
5489        #[doc(hidden)]
5490        impl ::core::convert::From<ERC1967InvalidImplementation>
5491        for UnderlyingRustTuple<'_> {
5492            fn from(value: ERC1967InvalidImplementation) -> Self {
5493                (value.implementation,)
5494            }
5495        }
5496        #[automatically_derived]
5497        #[doc(hidden)]
5498        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5499        for ERC1967InvalidImplementation {
5500            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5501                Self { implementation: tuple.0 }
5502            }
5503        }
5504        #[automatically_derived]
5505        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5506            type Parameters<'a> = UnderlyingSolTuple<'a>;
5507            type Token<'a> = <Self::Parameters<
5508                'a,
5509            > as alloy_sol_types::SolType>::Token<'a>;
5510            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5511            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5512            #[inline]
5513            fn new<'a>(
5514                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5515            ) -> Self {
5516                tuple.into()
5517            }
5518            #[inline]
5519            fn tokenize(&self) -> Self::Token<'_> {
5520                (
5521                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5522                        &self.implementation,
5523                    ),
5524                )
5525            }
5526            #[inline]
5527            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5528                <Self::Parameters<
5529                    '_,
5530                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5531                    .map(Self::new)
5532            }
5533        }
5534    };
5535    #[derive(serde::Serialize, serde::Deserialize)]
5536    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5537    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5538```solidity
5539error ERC1967NonPayable();
5540```*/
5541    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5542    #[derive(Clone)]
5543    pub struct ERC1967NonPayable;
5544    #[allow(
5545        non_camel_case_types,
5546        non_snake_case,
5547        clippy::pub_underscore_fields,
5548        clippy::style
5549    )]
5550    const _: () = {
5551        use alloy::sol_types as alloy_sol_types;
5552        #[doc(hidden)]
5553        #[allow(dead_code)]
5554        type UnderlyingSolTuple<'a> = ();
5555        #[doc(hidden)]
5556        type UnderlyingRustTuple<'a> = ();
5557        #[cfg(test)]
5558        #[allow(dead_code, unreachable_patterns)]
5559        fn _type_assertion(
5560            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5561        ) {
5562            match _t {
5563                alloy_sol_types::private::AssertTypeEq::<
5564                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5565                >(_) => {}
5566            }
5567        }
5568        #[automatically_derived]
5569        #[doc(hidden)]
5570        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5571            fn from(value: ERC1967NonPayable) -> Self {
5572                ()
5573            }
5574        }
5575        #[automatically_derived]
5576        #[doc(hidden)]
5577        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5578            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5579                Self
5580            }
5581        }
5582        #[automatically_derived]
5583        impl alloy_sol_types::SolError for ERC1967NonPayable {
5584            type Parameters<'a> = UnderlyingSolTuple<'a>;
5585            type Token<'a> = <Self::Parameters<
5586                'a,
5587            > as alloy_sol_types::SolType>::Token<'a>;
5588            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5589            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5590            #[inline]
5591            fn new<'a>(
5592                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5593            ) -> Self {
5594                tuple.into()
5595            }
5596            #[inline]
5597            fn tokenize(&self) -> Self::Token<'_> {
5598                ()
5599            }
5600            #[inline]
5601            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5602                <Self::Parameters<
5603                    '_,
5604                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5605                    .map(Self::new)
5606            }
5607        }
5608    };
5609    #[derive(serde::Serialize, serde::Deserialize)]
5610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5611    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5612```solidity
5613error FailedInnerCall();
5614```*/
5615    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5616    #[derive(Clone)]
5617    pub struct FailedInnerCall;
5618    #[allow(
5619        non_camel_case_types,
5620        non_snake_case,
5621        clippy::pub_underscore_fields,
5622        clippy::style
5623    )]
5624    const _: () = {
5625        use alloy::sol_types as alloy_sol_types;
5626        #[doc(hidden)]
5627        #[allow(dead_code)]
5628        type UnderlyingSolTuple<'a> = ();
5629        #[doc(hidden)]
5630        type UnderlyingRustTuple<'a> = ();
5631        #[cfg(test)]
5632        #[allow(dead_code, unreachable_patterns)]
5633        fn _type_assertion(
5634            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5635        ) {
5636            match _t {
5637                alloy_sol_types::private::AssertTypeEq::<
5638                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5639                >(_) => {}
5640            }
5641        }
5642        #[automatically_derived]
5643        #[doc(hidden)]
5644        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5645            fn from(value: FailedInnerCall) -> Self {
5646                ()
5647            }
5648        }
5649        #[automatically_derived]
5650        #[doc(hidden)]
5651        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5652            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5653                Self
5654            }
5655        }
5656        #[automatically_derived]
5657        impl alloy_sol_types::SolError for FailedInnerCall {
5658            type Parameters<'a> = UnderlyingSolTuple<'a>;
5659            type Token<'a> = <Self::Parameters<
5660                'a,
5661            > as alloy_sol_types::SolType>::Token<'a>;
5662            const SIGNATURE: &'static str = "FailedInnerCall()";
5663            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5664            #[inline]
5665            fn new<'a>(
5666                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5667            ) -> Self {
5668                tuple.into()
5669            }
5670            #[inline]
5671            fn tokenize(&self) -> Self::Token<'_> {
5672                ()
5673            }
5674            #[inline]
5675            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5676                <Self::Parameters<
5677                    '_,
5678                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5679                    .map(Self::new)
5680            }
5681        }
5682    };
5683    #[derive(serde::Serialize, serde::Deserialize)]
5684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5685    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5686```solidity
5687error InsufficientSnapshotHistory();
5688```*/
5689    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5690    #[derive(Clone)]
5691    pub struct InsufficientSnapshotHistory;
5692    #[allow(
5693        non_camel_case_types,
5694        non_snake_case,
5695        clippy::pub_underscore_fields,
5696        clippy::style
5697    )]
5698    const _: () = {
5699        use alloy::sol_types as alloy_sol_types;
5700        #[doc(hidden)]
5701        #[allow(dead_code)]
5702        type UnderlyingSolTuple<'a> = ();
5703        #[doc(hidden)]
5704        type UnderlyingRustTuple<'a> = ();
5705        #[cfg(test)]
5706        #[allow(dead_code, unreachable_patterns)]
5707        fn _type_assertion(
5708            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5709        ) {
5710            match _t {
5711                alloy_sol_types::private::AssertTypeEq::<
5712                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5713                >(_) => {}
5714            }
5715        }
5716        #[automatically_derived]
5717        #[doc(hidden)]
5718        impl ::core::convert::From<InsufficientSnapshotHistory>
5719        for UnderlyingRustTuple<'_> {
5720            fn from(value: InsufficientSnapshotHistory) -> Self {
5721                ()
5722            }
5723        }
5724        #[automatically_derived]
5725        #[doc(hidden)]
5726        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5727        for InsufficientSnapshotHistory {
5728            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5729                Self
5730            }
5731        }
5732        #[automatically_derived]
5733        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5734            type Parameters<'a> = UnderlyingSolTuple<'a>;
5735            type Token<'a> = <Self::Parameters<
5736                'a,
5737            > as alloy_sol_types::SolType>::Token<'a>;
5738            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5739            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5740            #[inline]
5741            fn new<'a>(
5742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5743            ) -> Self {
5744                tuple.into()
5745            }
5746            #[inline]
5747            fn tokenize(&self) -> Self::Token<'_> {
5748                ()
5749            }
5750            #[inline]
5751            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5752                <Self::Parameters<
5753                    '_,
5754                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5755                    .map(Self::new)
5756            }
5757        }
5758    };
5759    #[derive(serde::Serialize, serde::Deserialize)]
5760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5761    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5762```solidity
5763error InvalidAddress();
5764```*/
5765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5766    #[derive(Clone)]
5767    pub struct InvalidAddress;
5768    #[allow(
5769        non_camel_case_types,
5770        non_snake_case,
5771        clippy::pub_underscore_fields,
5772        clippy::style
5773    )]
5774    const _: () = {
5775        use alloy::sol_types as alloy_sol_types;
5776        #[doc(hidden)]
5777        #[allow(dead_code)]
5778        type UnderlyingSolTuple<'a> = ();
5779        #[doc(hidden)]
5780        type UnderlyingRustTuple<'a> = ();
5781        #[cfg(test)]
5782        #[allow(dead_code, unreachable_patterns)]
5783        fn _type_assertion(
5784            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5785        ) {
5786            match _t {
5787                alloy_sol_types::private::AssertTypeEq::<
5788                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5789                >(_) => {}
5790            }
5791        }
5792        #[automatically_derived]
5793        #[doc(hidden)]
5794        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5795            fn from(value: InvalidAddress) -> Self {
5796                ()
5797            }
5798        }
5799        #[automatically_derived]
5800        #[doc(hidden)]
5801        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5802            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5803                Self
5804            }
5805        }
5806        #[automatically_derived]
5807        impl alloy_sol_types::SolError for InvalidAddress {
5808            type Parameters<'a> = UnderlyingSolTuple<'a>;
5809            type Token<'a> = <Self::Parameters<
5810                'a,
5811            > as alloy_sol_types::SolType>::Token<'a>;
5812            const SIGNATURE: &'static str = "InvalidAddress()";
5813            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5814            #[inline]
5815            fn new<'a>(
5816                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5817            ) -> Self {
5818                tuple.into()
5819            }
5820            #[inline]
5821            fn tokenize(&self) -> Self::Token<'_> {
5822                ()
5823            }
5824            #[inline]
5825            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5826                <Self::Parameters<
5827                    '_,
5828                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5829                    .map(Self::new)
5830            }
5831        }
5832    };
5833    #[derive(serde::Serialize, serde::Deserialize)]
5834    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5835    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5836```solidity
5837error InvalidArgs();
5838```*/
5839    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5840    #[derive(Clone)]
5841    pub struct InvalidArgs;
5842    #[allow(
5843        non_camel_case_types,
5844        non_snake_case,
5845        clippy::pub_underscore_fields,
5846        clippy::style
5847    )]
5848    const _: () = {
5849        use alloy::sol_types as alloy_sol_types;
5850        #[doc(hidden)]
5851        #[allow(dead_code)]
5852        type UnderlyingSolTuple<'a> = ();
5853        #[doc(hidden)]
5854        type UnderlyingRustTuple<'a> = ();
5855        #[cfg(test)]
5856        #[allow(dead_code, unreachable_patterns)]
5857        fn _type_assertion(
5858            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5859        ) {
5860            match _t {
5861                alloy_sol_types::private::AssertTypeEq::<
5862                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5863                >(_) => {}
5864            }
5865        }
5866        #[automatically_derived]
5867        #[doc(hidden)]
5868        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5869            fn from(value: InvalidArgs) -> Self {
5870                ()
5871            }
5872        }
5873        #[automatically_derived]
5874        #[doc(hidden)]
5875        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5876            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5877                Self
5878            }
5879        }
5880        #[automatically_derived]
5881        impl alloy_sol_types::SolError for InvalidArgs {
5882            type Parameters<'a> = UnderlyingSolTuple<'a>;
5883            type Token<'a> = <Self::Parameters<
5884                'a,
5885            > as alloy_sol_types::SolType>::Token<'a>;
5886            const SIGNATURE: &'static str = "InvalidArgs()";
5887            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5888            #[inline]
5889            fn new<'a>(
5890                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5891            ) -> Self {
5892                tuple.into()
5893            }
5894            #[inline]
5895            fn tokenize(&self) -> Self::Token<'_> {
5896                ()
5897            }
5898            #[inline]
5899            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5900                <Self::Parameters<
5901                    '_,
5902                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5903                    .map(Self::new)
5904            }
5905        }
5906    };
5907    #[derive(serde::Serialize, serde::Deserialize)]
5908    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5909    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5910```solidity
5911error InvalidHotShotBlockForCommitmentCheck();
5912```*/
5913    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5914    #[derive(Clone)]
5915    pub struct InvalidHotShotBlockForCommitmentCheck;
5916    #[allow(
5917        non_camel_case_types,
5918        non_snake_case,
5919        clippy::pub_underscore_fields,
5920        clippy::style
5921    )]
5922    const _: () = {
5923        use alloy::sol_types as alloy_sol_types;
5924        #[doc(hidden)]
5925        #[allow(dead_code)]
5926        type UnderlyingSolTuple<'a> = ();
5927        #[doc(hidden)]
5928        type UnderlyingRustTuple<'a> = ();
5929        #[cfg(test)]
5930        #[allow(dead_code, unreachable_patterns)]
5931        fn _type_assertion(
5932            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5933        ) {
5934            match _t {
5935                alloy_sol_types::private::AssertTypeEq::<
5936                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5937                >(_) => {}
5938            }
5939        }
5940        #[automatically_derived]
5941        #[doc(hidden)]
5942        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5943        for UnderlyingRustTuple<'_> {
5944            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5945                ()
5946            }
5947        }
5948        #[automatically_derived]
5949        #[doc(hidden)]
5950        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5951        for InvalidHotShotBlockForCommitmentCheck {
5952            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5953                Self
5954            }
5955        }
5956        #[automatically_derived]
5957        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5958            type Parameters<'a> = UnderlyingSolTuple<'a>;
5959            type Token<'a> = <Self::Parameters<
5960                'a,
5961            > as alloy_sol_types::SolType>::Token<'a>;
5962            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5963            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5964            #[inline]
5965            fn new<'a>(
5966                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5967            ) -> Self {
5968                tuple.into()
5969            }
5970            #[inline]
5971            fn tokenize(&self) -> Self::Token<'_> {
5972                ()
5973            }
5974            #[inline]
5975            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5976                <Self::Parameters<
5977                    '_,
5978                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5979                    .map(Self::new)
5980            }
5981        }
5982    };
5983    #[derive(serde::Serialize, serde::Deserialize)]
5984    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5985    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5986```solidity
5987error InvalidInitialization();
5988```*/
5989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5990    #[derive(Clone)]
5991    pub struct InvalidInitialization;
5992    #[allow(
5993        non_camel_case_types,
5994        non_snake_case,
5995        clippy::pub_underscore_fields,
5996        clippy::style
5997    )]
5998    const _: () = {
5999        use alloy::sol_types as alloy_sol_types;
6000        #[doc(hidden)]
6001        #[allow(dead_code)]
6002        type UnderlyingSolTuple<'a> = ();
6003        #[doc(hidden)]
6004        type UnderlyingRustTuple<'a> = ();
6005        #[cfg(test)]
6006        #[allow(dead_code, unreachable_patterns)]
6007        fn _type_assertion(
6008            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6009        ) {
6010            match _t {
6011                alloy_sol_types::private::AssertTypeEq::<
6012                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6013                >(_) => {}
6014            }
6015        }
6016        #[automatically_derived]
6017        #[doc(hidden)]
6018        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6019            fn from(value: InvalidInitialization) -> Self {
6020                ()
6021            }
6022        }
6023        #[automatically_derived]
6024        #[doc(hidden)]
6025        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6026            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6027                Self
6028            }
6029        }
6030        #[automatically_derived]
6031        impl alloy_sol_types::SolError for InvalidInitialization {
6032            type Parameters<'a> = UnderlyingSolTuple<'a>;
6033            type Token<'a> = <Self::Parameters<
6034                'a,
6035            > as alloy_sol_types::SolType>::Token<'a>;
6036            const SIGNATURE: &'static str = "InvalidInitialization()";
6037            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6038            #[inline]
6039            fn new<'a>(
6040                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6041            ) -> Self {
6042                tuple.into()
6043            }
6044            #[inline]
6045            fn tokenize(&self) -> Self::Token<'_> {
6046                ()
6047            }
6048            #[inline]
6049            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6050                <Self::Parameters<
6051                    '_,
6052                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6053                    .map(Self::new)
6054            }
6055        }
6056    };
6057    #[derive(serde::Serialize, serde::Deserialize)]
6058    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6059    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6060```solidity
6061error InvalidMaxStateHistory();
6062```*/
6063    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6064    #[derive(Clone)]
6065    pub struct InvalidMaxStateHistory;
6066    #[allow(
6067        non_camel_case_types,
6068        non_snake_case,
6069        clippy::pub_underscore_fields,
6070        clippy::style
6071    )]
6072    const _: () = {
6073        use alloy::sol_types as alloy_sol_types;
6074        #[doc(hidden)]
6075        #[allow(dead_code)]
6076        type UnderlyingSolTuple<'a> = ();
6077        #[doc(hidden)]
6078        type UnderlyingRustTuple<'a> = ();
6079        #[cfg(test)]
6080        #[allow(dead_code, unreachable_patterns)]
6081        fn _type_assertion(
6082            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6083        ) {
6084            match _t {
6085                alloy_sol_types::private::AssertTypeEq::<
6086                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6087                >(_) => {}
6088            }
6089        }
6090        #[automatically_derived]
6091        #[doc(hidden)]
6092        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6093            fn from(value: InvalidMaxStateHistory) -> Self {
6094                ()
6095            }
6096        }
6097        #[automatically_derived]
6098        #[doc(hidden)]
6099        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6100            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6101                Self
6102            }
6103        }
6104        #[automatically_derived]
6105        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6106            type Parameters<'a> = UnderlyingSolTuple<'a>;
6107            type Token<'a> = <Self::Parameters<
6108                'a,
6109            > as alloy_sol_types::SolType>::Token<'a>;
6110            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6111            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6112            #[inline]
6113            fn new<'a>(
6114                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6115            ) -> Self {
6116                tuple.into()
6117            }
6118            #[inline]
6119            fn tokenize(&self) -> Self::Token<'_> {
6120                ()
6121            }
6122            #[inline]
6123            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6124                <Self::Parameters<
6125                    '_,
6126                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6127                    .map(Self::new)
6128            }
6129        }
6130    };
6131    #[derive(serde::Serialize, serde::Deserialize)]
6132    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6133    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6134```solidity
6135error InvalidProof();
6136```*/
6137    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6138    #[derive(Clone)]
6139    pub struct InvalidProof;
6140    #[allow(
6141        non_camel_case_types,
6142        non_snake_case,
6143        clippy::pub_underscore_fields,
6144        clippy::style
6145    )]
6146    const _: () = {
6147        use alloy::sol_types as alloy_sol_types;
6148        #[doc(hidden)]
6149        #[allow(dead_code)]
6150        type UnderlyingSolTuple<'a> = ();
6151        #[doc(hidden)]
6152        type UnderlyingRustTuple<'a> = ();
6153        #[cfg(test)]
6154        #[allow(dead_code, unreachable_patterns)]
6155        fn _type_assertion(
6156            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6157        ) {
6158            match _t {
6159                alloy_sol_types::private::AssertTypeEq::<
6160                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6161                >(_) => {}
6162            }
6163        }
6164        #[automatically_derived]
6165        #[doc(hidden)]
6166        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6167            fn from(value: InvalidProof) -> Self {
6168                ()
6169            }
6170        }
6171        #[automatically_derived]
6172        #[doc(hidden)]
6173        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6174            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6175                Self
6176            }
6177        }
6178        #[automatically_derived]
6179        impl alloy_sol_types::SolError for InvalidProof {
6180            type Parameters<'a> = UnderlyingSolTuple<'a>;
6181            type Token<'a> = <Self::Parameters<
6182                'a,
6183            > as alloy_sol_types::SolType>::Token<'a>;
6184            const SIGNATURE: &'static str = "InvalidProof()";
6185            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6186            #[inline]
6187            fn new<'a>(
6188                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6189            ) -> Self {
6190                tuple.into()
6191            }
6192            #[inline]
6193            fn tokenize(&self) -> Self::Token<'_> {
6194                ()
6195            }
6196            #[inline]
6197            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6198                <Self::Parameters<
6199                    '_,
6200                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6201                    .map(Self::new)
6202            }
6203        }
6204    };
6205    #[derive(serde::Serialize, serde::Deserialize)]
6206    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6207    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6208```solidity
6209error InvalidScalar();
6210```*/
6211    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6212    #[derive(Clone)]
6213    pub struct InvalidScalar;
6214    #[allow(
6215        non_camel_case_types,
6216        non_snake_case,
6217        clippy::pub_underscore_fields,
6218        clippy::style
6219    )]
6220    const _: () = {
6221        use alloy::sol_types as alloy_sol_types;
6222        #[doc(hidden)]
6223        #[allow(dead_code)]
6224        type UnderlyingSolTuple<'a> = ();
6225        #[doc(hidden)]
6226        type UnderlyingRustTuple<'a> = ();
6227        #[cfg(test)]
6228        #[allow(dead_code, unreachable_patterns)]
6229        fn _type_assertion(
6230            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6231        ) {
6232            match _t {
6233                alloy_sol_types::private::AssertTypeEq::<
6234                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6235                >(_) => {}
6236            }
6237        }
6238        #[automatically_derived]
6239        #[doc(hidden)]
6240        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6241            fn from(value: InvalidScalar) -> Self {
6242                ()
6243            }
6244        }
6245        #[automatically_derived]
6246        #[doc(hidden)]
6247        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6248            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6249                Self
6250            }
6251        }
6252        #[automatically_derived]
6253        impl alloy_sol_types::SolError for InvalidScalar {
6254            type Parameters<'a> = UnderlyingSolTuple<'a>;
6255            type Token<'a> = <Self::Parameters<
6256                'a,
6257            > as alloy_sol_types::SolType>::Token<'a>;
6258            const SIGNATURE: &'static str = "InvalidScalar()";
6259            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6260            #[inline]
6261            fn new<'a>(
6262                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6263            ) -> Self {
6264                tuple.into()
6265            }
6266            #[inline]
6267            fn tokenize(&self) -> Self::Token<'_> {
6268                ()
6269            }
6270            #[inline]
6271            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6272                <Self::Parameters<
6273                    '_,
6274                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6275                    .map(Self::new)
6276            }
6277        }
6278    };
6279    #[derive(serde::Serialize, serde::Deserialize)]
6280    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6281    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6282```solidity
6283error MissingEpochRootUpdate();
6284```*/
6285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6286    #[derive(Clone)]
6287    pub struct MissingEpochRootUpdate;
6288    #[allow(
6289        non_camel_case_types,
6290        non_snake_case,
6291        clippy::pub_underscore_fields,
6292        clippy::style
6293    )]
6294    const _: () = {
6295        use alloy::sol_types as alloy_sol_types;
6296        #[doc(hidden)]
6297        #[allow(dead_code)]
6298        type UnderlyingSolTuple<'a> = ();
6299        #[doc(hidden)]
6300        type UnderlyingRustTuple<'a> = ();
6301        #[cfg(test)]
6302        #[allow(dead_code, unreachable_patterns)]
6303        fn _type_assertion(
6304            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6305        ) {
6306            match _t {
6307                alloy_sol_types::private::AssertTypeEq::<
6308                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6309                >(_) => {}
6310            }
6311        }
6312        #[automatically_derived]
6313        #[doc(hidden)]
6314        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6315            fn from(value: MissingEpochRootUpdate) -> Self {
6316                ()
6317            }
6318        }
6319        #[automatically_derived]
6320        #[doc(hidden)]
6321        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6322            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6323                Self
6324            }
6325        }
6326        #[automatically_derived]
6327        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6328            type Parameters<'a> = UnderlyingSolTuple<'a>;
6329            type Token<'a> = <Self::Parameters<
6330                'a,
6331            > as alloy_sol_types::SolType>::Token<'a>;
6332            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6333            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6334            #[inline]
6335            fn new<'a>(
6336                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6337            ) -> Self {
6338                tuple.into()
6339            }
6340            #[inline]
6341            fn tokenize(&self) -> Self::Token<'_> {
6342                ()
6343            }
6344            #[inline]
6345            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6346                <Self::Parameters<
6347                    '_,
6348                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6349                    .map(Self::new)
6350            }
6351        }
6352    };
6353    #[derive(serde::Serialize, serde::Deserialize)]
6354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6355    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6356```solidity
6357error NoChangeRequired();
6358```*/
6359    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6360    #[derive(Clone)]
6361    pub struct NoChangeRequired;
6362    #[allow(
6363        non_camel_case_types,
6364        non_snake_case,
6365        clippy::pub_underscore_fields,
6366        clippy::style
6367    )]
6368    const _: () = {
6369        use alloy::sol_types as alloy_sol_types;
6370        #[doc(hidden)]
6371        #[allow(dead_code)]
6372        type UnderlyingSolTuple<'a> = ();
6373        #[doc(hidden)]
6374        type UnderlyingRustTuple<'a> = ();
6375        #[cfg(test)]
6376        #[allow(dead_code, unreachable_patterns)]
6377        fn _type_assertion(
6378            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6379        ) {
6380            match _t {
6381                alloy_sol_types::private::AssertTypeEq::<
6382                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6383                >(_) => {}
6384            }
6385        }
6386        #[automatically_derived]
6387        #[doc(hidden)]
6388        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6389            fn from(value: NoChangeRequired) -> Self {
6390                ()
6391            }
6392        }
6393        #[automatically_derived]
6394        #[doc(hidden)]
6395        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6396            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6397                Self
6398            }
6399        }
6400        #[automatically_derived]
6401        impl alloy_sol_types::SolError for NoChangeRequired {
6402            type Parameters<'a> = UnderlyingSolTuple<'a>;
6403            type Token<'a> = <Self::Parameters<
6404                'a,
6405            > as alloy_sol_types::SolType>::Token<'a>;
6406            const SIGNATURE: &'static str = "NoChangeRequired()";
6407            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6408            #[inline]
6409            fn new<'a>(
6410                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6411            ) -> Self {
6412                tuple.into()
6413            }
6414            #[inline]
6415            fn tokenize(&self) -> Self::Token<'_> {
6416                ()
6417            }
6418            #[inline]
6419            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6420                <Self::Parameters<
6421                    '_,
6422                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6423                    .map(Self::new)
6424            }
6425        }
6426    };
6427    #[derive(serde::Serialize, serde::Deserialize)]
6428    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6429    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6430```solidity
6431error NotInitializing();
6432```*/
6433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6434    #[derive(Clone)]
6435    pub struct NotInitializing;
6436    #[allow(
6437        non_camel_case_types,
6438        non_snake_case,
6439        clippy::pub_underscore_fields,
6440        clippy::style
6441    )]
6442    const _: () = {
6443        use alloy::sol_types as alloy_sol_types;
6444        #[doc(hidden)]
6445        #[allow(dead_code)]
6446        type UnderlyingSolTuple<'a> = ();
6447        #[doc(hidden)]
6448        type UnderlyingRustTuple<'a> = ();
6449        #[cfg(test)]
6450        #[allow(dead_code, unreachable_patterns)]
6451        fn _type_assertion(
6452            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6453        ) {
6454            match _t {
6455                alloy_sol_types::private::AssertTypeEq::<
6456                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6457                >(_) => {}
6458            }
6459        }
6460        #[automatically_derived]
6461        #[doc(hidden)]
6462        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6463            fn from(value: NotInitializing) -> Self {
6464                ()
6465            }
6466        }
6467        #[automatically_derived]
6468        #[doc(hidden)]
6469        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6470            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6471                Self
6472            }
6473        }
6474        #[automatically_derived]
6475        impl alloy_sol_types::SolError for NotInitializing {
6476            type Parameters<'a> = UnderlyingSolTuple<'a>;
6477            type Token<'a> = <Self::Parameters<
6478                'a,
6479            > as alloy_sol_types::SolType>::Token<'a>;
6480            const SIGNATURE: &'static str = "NotInitializing()";
6481            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6482            #[inline]
6483            fn new<'a>(
6484                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6485            ) -> Self {
6486                tuple.into()
6487            }
6488            #[inline]
6489            fn tokenize(&self) -> Self::Token<'_> {
6490                ()
6491            }
6492            #[inline]
6493            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6494                <Self::Parameters<
6495                    '_,
6496                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6497                    .map(Self::new)
6498            }
6499        }
6500    };
6501    #[derive(serde::Serialize, serde::Deserialize)]
6502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6503    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6504```solidity
6505error OutdatedState();
6506```*/
6507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6508    #[derive(Clone)]
6509    pub struct OutdatedState;
6510    #[allow(
6511        non_camel_case_types,
6512        non_snake_case,
6513        clippy::pub_underscore_fields,
6514        clippy::style
6515    )]
6516    const _: () = {
6517        use alloy::sol_types as alloy_sol_types;
6518        #[doc(hidden)]
6519        #[allow(dead_code)]
6520        type UnderlyingSolTuple<'a> = ();
6521        #[doc(hidden)]
6522        type UnderlyingRustTuple<'a> = ();
6523        #[cfg(test)]
6524        #[allow(dead_code, unreachable_patterns)]
6525        fn _type_assertion(
6526            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6527        ) {
6528            match _t {
6529                alloy_sol_types::private::AssertTypeEq::<
6530                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6531                >(_) => {}
6532            }
6533        }
6534        #[automatically_derived]
6535        #[doc(hidden)]
6536        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6537            fn from(value: OutdatedState) -> Self {
6538                ()
6539            }
6540        }
6541        #[automatically_derived]
6542        #[doc(hidden)]
6543        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6544            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6545                Self
6546            }
6547        }
6548        #[automatically_derived]
6549        impl alloy_sol_types::SolError for OutdatedState {
6550            type Parameters<'a> = UnderlyingSolTuple<'a>;
6551            type Token<'a> = <Self::Parameters<
6552                'a,
6553            > as alloy_sol_types::SolType>::Token<'a>;
6554            const SIGNATURE: &'static str = "OutdatedState()";
6555            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6556            #[inline]
6557            fn new<'a>(
6558                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6559            ) -> Self {
6560                tuple.into()
6561            }
6562            #[inline]
6563            fn tokenize(&self) -> Self::Token<'_> {
6564                ()
6565            }
6566            #[inline]
6567            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6568                <Self::Parameters<
6569                    '_,
6570                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6571                    .map(Self::new)
6572            }
6573        }
6574    };
6575    #[derive(serde::Serialize, serde::Deserialize)]
6576    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6577    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6578```solidity
6579error OwnableInvalidOwner(address owner);
6580```*/
6581    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6582    #[derive(Clone)]
6583    pub struct OwnableInvalidOwner {
6584        #[allow(missing_docs)]
6585        pub owner: alloy::sol_types::private::Address,
6586    }
6587    #[allow(
6588        non_camel_case_types,
6589        non_snake_case,
6590        clippy::pub_underscore_fields,
6591        clippy::style
6592    )]
6593    const _: () = {
6594        use alloy::sol_types as alloy_sol_types;
6595        #[doc(hidden)]
6596        #[allow(dead_code)]
6597        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6598        #[doc(hidden)]
6599        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6600        #[cfg(test)]
6601        #[allow(dead_code, unreachable_patterns)]
6602        fn _type_assertion(
6603            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6604        ) {
6605            match _t {
6606                alloy_sol_types::private::AssertTypeEq::<
6607                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6608                >(_) => {}
6609            }
6610        }
6611        #[automatically_derived]
6612        #[doc(hidden)]
6613        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6614            fn from(value: OwnableInvalidOwner) -> Self {
6615                (value.owner,)
6616            }
6617        }
6618        #[automatically_derived]
6619        #[doc(hidden)]
6620        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6621            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6622                Self { owner: tuple.0 }
6623            }
6624        }
6625        #[automatically_derived]
6626        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6627            type Parameters<'a> = UnderlyingSolTuple<'a>;
6628            type Token<'a> = <Self::Parameters<
6629                'a,
6630            > as alloy_sol_types::SolType>::Token<'a>;
6631            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6632            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6633            #[inline]
6634            fn new<'a>(
6635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6636            ) -> Self {
6637                tuple.into()
6638            }
6639            #[inline]
6640            fn tokenize(&self) -> Self::Token<'_> {
6641                (
6642                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6643                        &self.owner,
6644                    ),
6645                )
6646            }
6647            #[inline]
6648            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6649                <Self::Parameters<
6650                    '_,
6651                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6652                    .map(Self::new)
6653            }
6654        }
6655    };
6656    #[derive(serde::Serialize, serde::Deserialize)]
6657    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6658    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6659```solidity
6660error OwnableUnauthorizedAccount(address account);
6661```*/
6662    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6663    #[derive(Clone)]
6664    pub struct OwnableUnauthorizedAccount {
6665        #[allow(missing_docs)]
6666        pub account: alloy::sol_types::private::Address,
6667    }
6668    #[allow(
6669        non_camel_case_types,
6670        non_snake_case,
6671        clippy::pub_underscore_fields,
6672        clippy::style
6673    )]
6674    const _: () = {
6675        use alloy::sol_types as alloy_sol_types;
6676        #[doc(hidden)]
6677        #[allow(dead_code)]
6678        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6679        #[doc(hidden)]
6680        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6681        #[cfg(test)]
6682        #[allow(dead_code, unreachable_patterns)]
6683        fn _type_assertion(
6684            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6685        ) {
6686            match _t {
6687                alloy_sol_types::private::AssertTypeEq::<
6688                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6689                >(_) => {}
6690            }
6691        }
6692        #[automatically_derived]
6693        #[doc(hidden)]
6694        impl ::core::convert::From<OwnableUnauthorizedAccount>
6695        for UnderlyingRustTuple<'_> {
6696            fn from(value: OwnableUnauthorizedAccount) -> Self {
6697                (value.account,)
6698            }
6699        }
6700        #[automatically_derived]
6701        #[doc(hidden)]
6702        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6703        for OwnableUnauthorizedAccount {
6704            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6705                Self { account: tuple.0 }
6706            }
6707        }
6708        #[automatically_derived]
6709        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6710            type Parameters<'a> = UnderlyingSolTuple<'a>;
6711            type Token<'a> = <Self::Parameters<
6712                'a,
6713            > as alloy_sol_types::SolType>::Token<'a>;
6714            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6715            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6716            #[inline]
6717            fn new<'a>(
6718                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6719            ) -> Self {
6720                tuple.into()
6721            }
6722            #[inline]
6723            fn tokenize(&self) -> Self::Token<'_> {
6724                (
6725                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6726                        &self.account,
6727                    ),
6728                )
6729            }
6730            #[inline]
6731            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6732                <Self::Parameters<
6733                    '_,
6734                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6735                    .map(Self::new)
6736            }
6737        }
6738    };
6739    #[derive(serde::Serialize, serde::Deserialize)]
6740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6741    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6742```solidity
6743error OwnershipCannotBeRenounced();
6744```*/
6745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6746    #[derive(Clone)]
6747    pub struct OwnershipCannotBeRenounced;
6748    #[allow(
6749        non_camel_case_types,
6750        non_snake_case,
6751        clippy::pub_underscore_fields,
6752        clippy::style
6753    )]
6754    const _: () = {
6755        use alloy::sol_types as alloy_sol_types;
6756        #[doc(hidden)]
6757        #[allow(dead_code)]
6758        type UnderlyingSolTuple<'a> = ();
6759        #[doc(hidden)]
6760        type UnderlyingRustTuple<'a> = ();
6761        #[cfg(test)]
6762        #[allow(dead_code, unreachable_patterns)]
6763        fn _type_assertion(
6764            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6765        ) {
6766            match _t {
6767                alloy_sol_types::private::AssertTypeEq::<
6768                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6769                >(_) => {}
6770            }
6771        }
6772        #[automatically_derived]
6773        #[doc(hidden)]
6774        impl ::core::convert::From<OwnershipCannotBeRenounced>
6775        for UnderlyingRustTuple<'_> {
6776            fn from(value: OwnershipCannotBeRenounced) -> Self {
6777                ()
6778            }
6779        }
6780        #[automatically_derived]
6781        #[doc(hidden)]
6782        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6783        for OwnershipCannotBeRenounced {
6784            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6785                Self
6786            }
6787        }
6788        #[automatically_derived]
6789        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6790            type Parameters<'a> = UnderlyingSolTuple<'a>;
6791            type Token<'a> = <Self::Parameters<
6792                'a,
6793            > as alloy_sol_types::SolType>::Token<'a>;
6794            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6795            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6796            #[inline]
6797            fn new<'a>(
6798                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6799            ) -> Self {
6800                tuple.into()
6801            }
6802            #[inline]
6803            fn tokenize(&self) -> Self::Token<'_> {
6804                ()
6805            }
6806            #[inline]
6807            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6808                <Self::Parameters<
6809                    '_,
6810                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6811                    .map(Self::new)
6812            }
6813        }
6814    };
6815    #[derive(serde::Serialize, serde::Deserialize)]
6816    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6817    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6818```solidity
6819error ProverNotPermissioned();
6820```*/
6821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6822    #[derive(Clone)]
6823    pub struct ProverNotPermissioned;
6824    #[allow(
6825        non_camel_case_types,
6826        non_snake_case,
6827        clippy::pub_underscore_fields,
6828        clippy::style
6829    )]
6830    const _: () = {
6831        use alloy::sol_types as alloy_sol_types;
6832        #[doc(hidden)]
6833        #[allow(dead_code)]
6834        type UnderlyingSolTuple<'a> = ();
6835        #[doc(hidden)]
6836        type UnderlyingRustTuple<'a> = ();
6837        #[cfg(test)]
6838        #[allow(dead_code, unreachable_patterns)]
6839        fn _type_assertion(
6840            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6841        ) {
6842            match _t {
6843                alloy_sol_types::private::AssertTypeEq::<
6844                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6845                >(_) => {}
6846            }
6847        }
6848        #[automatically_derived]
6849        #[doc(hidden)]
6850        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6851            fn from(value: ProverNotPermissioned) -> Self {
6852                ()
6853            }
6854        }
6855        #[automatically_derived]
6856        #[doc(hidden)]
6857        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6858            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6859                Self
6860            }
6861        }
6862        #[automatically_derived]
6863        impl alloy_sol_types::SolError for ProverNotPermissioned {
6864            type Parameters<'a> = UnderlyingSolTuple<'a>;
6865            type Token<'a> = <Self::Parameters<
6866                'a,
6867            > as alloy_sol_types::SolType>::Token<'a>;
6868            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6869            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6870            #[inline]
6871            fn new<'a>(
6872                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6873            ) -> Self {
6874                tuple.into()
6875            }
6876            #[inline]
6877            fn tokenize(&self) -> Self::Token<'_> {
6878                ()
6879            }
6880            #[inline]
6881            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6882                <Self::Parameters<
6883                    '_,
6884                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6885                    .map(Self::new)
6886            }
6887        }
6888    };
6889    #[derive(serde::Serialize, serde::Deserialize)]
6890    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6891    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6892```solidity
6893error UUPSUnauthorizedCallContext();
6894```*/
6895    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6896    #[derive(Clone)]
6897    pub struct UUPSUnauthorizedCallContext;
6898    #[allow(
6899        non_camel_case_types,
6900        non_snake_case,
6901        clippy::pub_underscore_fields,
6902        clippy::style
6903    )]
6904    const _: () = {
6905        use alloy::sol_types as alloy_sol_types;
6906        #[doc(hidden)]
6907        #[allow(dead_code)]
6908        type UnderlyingSolTuple<'a> = ();
6909        #[doc(hidden)]
6910        type UnderlyingRustTuple<'a> = ();
6911        #[cfg(test)]
6912        #[allow(dead_code, unreachable_patterns)]
6913        fn _type_assertion(
6914            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6915        ) {
6916            match _t {
6917                alloy_sol_types::private::AssertTypeEq::<
6918                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6919                >(_) => {}
6920            }
6921        }
6922        #[automatically_derived]
6923        #[doc(hidden)]
6924        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6925        for UnderlyingRustTuple<'_> {
6926            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6927                ()
6928            }
6929        }
6930        #[automatically_derived]
6931        #[doc(hidden)]
6932        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6933        for UUPSUnauthorizedCallContext {
6934            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6935                Self
6936            }
6937        }
6938        #[automatically_derived]
6939        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6940            type Parameters<'a> = UnderlyingSolTuple<'a>;
6941            type Token<'a> = <Self::Parameters<
6942                'a,
6943            > as alloy_sol_types::SolType>::Token<'a>;
6944            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6945            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6946            #[inline]
6947            fn new<'a>(
6948                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6949            ) -> Self {
6950                tuple.into()
6951            }
6952            #[inline]
6953            fn tokenize(&self) -> Self::Token<'_> {
6954                ()
6955            }
6956            #[inline]
6957            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6958                <Self::Parameters<
6959                    '_,
6960                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6961                    .map(Self::new)
6962            }
6963        }
6964    };
6965    #[derive(serde::Serialize, serde::Deserialize)]
6966    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6967    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6968```solidity
6969error UUPSUnsupportedProxiableUUID(bytes32 slot);
6970```*/
6971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6972    #[derive(Clone)]
6973    pub struct UUPSUnsupportedProxiableUUID {
6974        #[allow(missing_docs)]
6975        pub slot: alloy::sol_types::private::FixedBytes<32>,
6976    }
6977    #[allow(
6978        non_camel_case_types,
6979        non_snake_case,
6980        clippy::pub_underscore_fields,
6981        clippy::style
6982    )]
6983    const _: () = {
6984        use alloy::sol_types as alloy_sol_types;
6985        #[doc(hidden)]
6986        #[allow(dead_code)]
6987        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6988        #[doc(hidden)]
6989        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6990        #[cfg(test)]
6991        #[allow(dead_code, unreachable_patterns)]
6992        fn _type_assertion(
6993            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6994        ) {
6995            match _t {
6996                alloy_sol_types::private::AssertTypeEq::<
6997                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6998                >(_) => {}
6999            }
7000        }
7001        #[automatically_derived]
7002        #[doc(hidden)]
7003        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7004        for UnderlyingRustTuple<'_> {
7005            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7006                (value.slot,)
7007            }
7008        }
7009        #[automatically_derived]
7010        #[doc(hidden)]
7011        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7012        for UUPSUnsupportedProxiableUUID {
7013            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7014                Self { slot: tuple.0 }
7015            }
7016        }
7017        #[automatically_derived]
7018        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7019            type Parameters<'a> = UnderlyingSolTuple<'a>;
7020            type Token<'a> = <Self::Parameters<
7021                'a,
7022            > as alloy_sol_types::SolType>::Token<'a>;
7023            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7024            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7025            #[inline]
7026            fn new<'a>(
7027                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7028            ) -> Self {
7029                tuple.into()
7030            }
7031            #[inline]
7032            fn tokenize(&self) -> Self::Token<'_> {
7033                (
7034                    <alloy::sol_types::sol_data::FixedBytes<
7035                        32,
7036                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7037                )
7038            }
7039            #[inline]
7040            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7041                <Self::Parameters<
7042                    '_,
7043                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7044                    .map(Self::new)
7045            }
7046        }
7047    };
7048    #[derive(serde::Serialize, serde::Deserialize)]
7049    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7050    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7051```solidity
7052error WrongStakeTableUsed();
7053```*/
7054    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7055    #[derive(Clone)]
7056    pub struct WrongStakeTableUsed;
7057    #[allow(
7058        non_camel_case_types,
7059        non_snake_case,
7060        clippy::pub_underscore_fields,
7061        clippy::style
7062    )]
7063    const _: () = {
7064        use alloy::sol_types as alloy_sol_types;
7065        #[doc(hidden)]
7066        #[allow(dead_code)]
7067        type UnderlyingSolTuple<'a> = ();
7068        #[doc(hidden)]
7069        type UnderlyingRustTuple<'a> = ();
7070        #[cfg(test)]
7071        #[allow(dead_code, unreachable_patterns)]
7072        fn _type_assertion(
7073            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7074        ) {
7075            match _t {
7076                alloy_sol_types::private::AssertTypeEq::<
7077                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7078                >(_) => {}
7079            }
7080        }
7081        #[automatically_derived]
7082        #[doc(hidden)]
7083        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7084            fn from(value: WrongStakeTableUsed) -> Self {
7085                ()
7086            }
7087        }
7088        #[automatically_derived]
7089        #[doc(hidden)]
7090        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7091            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7092                Self
7093            }
7094        }
7095        #[automatically_derived]
7096        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7097            type Parameters<'a> = UnderlyingSolTuple<'a>;
7098            type Token<'a> = <Self::Parameters<
7099                'a,
7100            > as alloy_sol_types::SolType>::Token<'a>;
7101            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7102            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7103            #[inline]
7104            fn new<'a>(
7105                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7106            ) -> Self {
7107                tuple.into()
7108            }
7109            #[inline]
7110            fn tokenize(&self) -> Self::Token<'_> {
7111                ()
7112            }
7113            #[inline]
7114            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7115                <Self::Parameters<
7116                    '_,
7117                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7118                    .map(Self::new)
7119            }
7120        }
7121    };
7122    #[derive(serde::Serialize, serde::Deserialize)]
7123    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7124    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7125```solidity
7126event Initialized(uint64 version);
7127```*/
7128    #[allow(
7129        non_camel_case_types,
7130        non_snake_case,
7131        clippy::pub_underscore_fields,
7132        clippy::style
7133    )]
7134    #[derive(Clone)]
7135    pub struct Initialized {
7136        #[allow(missing_docs)]
7137        pub version: u64,
7138    }
7139    #[allow(
7140        non_camel_case_types,
7141        non_snake_case,
7142        clippy::pub_underscore_fields,
7143        clippy::style
7144    )]
7145    const _: () = {
7146        use alloy::sol_types as alloy_sol_types;
7147        #[automatically_derived]
7148        impl alloy_sol_types::SolEvent for Initialized {
7149            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7150            type DataToken<'a> = <Self::DataTuple<
7151                'a,
7152            > as alloy_sol_types::SolType>::Token<'a>;
7153            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7154            const SIGNATURE: &'static str = "Initialized(uint64)";
7155            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7156                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7157                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7158                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7159            ]);
7160            const ANONYMOUS: bool = false;
7161            #[allow(unused_variables)]
7162            #[inline]
7163            fn new(
7164                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7165                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7166            ) -> Self {
7167                Self { version: data.0 }
7168            }
7169            #[inline]
7170            fn check_signature(
7171                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7172            ) -> alloy_sol_types::Result<()> {
7173                if topics.0 != Self::SIGNATURE_HASH {
7174                    return Err(
7175                        alloy_sol_types::Error::invalid_event_signature_hash(
7176                            Self::SIGNATURE,
7177                            topics.0,
7178                            Self::SIGNATURE_HASH,
7179                        ),
7180                    );
7181                }
7182                Ok(())
7183            }
7184            #[inline]
7185            fn tokenize_body(&self) -> Self::DataToken<'_> {
7186                (
7187                    <alloy::sol_types::sol_data::Uint<
7188                        64,
7189                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7190                )
7191            }
7192            #[inline]
7193            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7194                (Self::SIGNATURE_HASH.into(),)
7195            }
7196            #[inline]
7197            fn encode_topics_raw(
7198                &self,
7199                out: &mut [alloy_sol_types::abi::token::WordToken],
7200            ) -> alloy_sol_types::Result<()> {
7201                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7202                    return Err(alloy_sol_types::Error::Overrun);
7203                }
7204                out[0usize] = alloy_sol_types::abi::token::WordToken(
7205                    Self::SIGNATURE_HASH,
7206                );
7207                Ok(())
7208            }
7209        }
7210        #[automatically_derived]
7211        impl alloy_sol_types::private::IntoLogData for Initialized {
7212            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7213                From::from(self)
7214            }
7215            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7216                From::from(&self)
7217            }
7218        }
7219        #[automatically_derived]
7220        impl From<&Initialized> for alloy_sol_types::private::LogData {
7221            #[inline]
7222            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7223                alloy_sol_types::SolEvent::encode_log_data(this)
7224            }
7225        }
7226    };
7227    #[derive(serde::Serialize, serde::Deserialize)]
7228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7229    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7230```solidity
7231event NewEpoch(uint64 epoch);
7232```*/
7233    #[allow(
7234        non_camel_case_types,
7235        non_snake_case,
7236        clippy::pub_underscore_fields,
7237        clippy::style
7238    )]
7239    #[derive(Clone)]
7240    pub struct NewEpoch {
7241        #[allow(missing_docs)]
7242        pub epoch: u64,
7243    }
7244    #[allow(
7245        non_camel_case_types,
7246        non_snake_case,
7247        clippy::pub_underscore_fields,
7248        clippy::style
7249    )]
7250    const _: () = {
7251        use alloy::sol_types as alloy_sol_types;
7252        #[automatically_derived]
7253        impl alloy_sol_types::SolEvent for NewEpoch {
7254            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7255            type DataToken<'a> = <Self::DataTuple<
7256                'a,
7257            > as alloy_sol_types::SolType>::Token<'a>;
7258            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7259            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7260            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7261                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7262                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7263                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7264            ]);
7265            const ANONYMOUS: bool = false;
7266            #[allow(unused_variables)]
7267            #[inline]
7268            fn new(
7269                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7270                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7271            ) -> Self {
7272                Self { epoch: data.0 }
7273            }
7274            #[inline]
7275            fn check_signature(
7276                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7277            ) -> alloy_sol_types::Result<()> {
7278                if topics.0 != Self::SIGNATURE_HASH {
7279                    return Err(
7280                        alloy_sol_types::Error::invalid_event_signature_hash(
7281                            Self::SIGNATURE,
7282                            topics.0,
7283                            Self::SIGNATURE_HASH,
7284                        ),
7285                    );
7286                }
7287                Ok(())
7288            }
7289            #[inline]
7290            fn tokenize_body(&self) -> Self::DataToken<'_> {
7291                (
7292                    <alloy::sol_types::sol_data::Uint<
7293                        64,
7294                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7295                )
7296            }
7297            #[inline]
7298            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7299                (Self::SIGNATURE_HASH.into(),)
7300            }
7301            #[inline]
7302            fn encode_topics_raw(
7303                &self,
7304                out: &mut [alloy_sol_types::abi::token::WordToken],
7305            ) -> alloy_sol_types::Result<()> {
7306                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7307                    return Err(alloy_sol_types::Error::Overrun);
7308                }
7309                out[0usize] = alloy_sol_types::abi::token::WordToken(
7310                    Self::SIGNATURE_HASH,
7311                );
7312                Ok(())
7313            }
7314        }
7315        #[automatically_derived]
7316        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7317            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7318                From::from(self)
7319            }
7320            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7321                From::from(&self)
7322            }
7323        }
7324        #[automatically_derived]
7325        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7326            #[inline]
7327            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7328                alloy_sol_types::SolEvent::encode_log_data(this)
7329            }
7330        }
7331    };
7332    #[derive(serde::Serialize, serde::Deserialize)]
7333    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7334    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7335```solidity
7336event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7337```*/
7338    #[allow(
7339        non_camel_case_types,
7340        non_snake_case,
7341        clippy::pub_underscore_fields,
7342        clippy::style
7343    )]
7344    #[derive(Clone)]
7345    pub struct NewState {
7346        #[allow(missing_docs)]
7347        pub viewNum: u64,
7348        #[allow(missing_docs)]
7349        pub blockHeight: u64,
7350        #[allow(missing_docs)]
7351        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7352    }
7353    #[allow(
7354        non_camel_case_types,
7355        non_snake_case,
7356        clippy::pub_underscore_fields,
7357        clippy::style
7358    )]
7359    const _: () = {
7360        use alloy::sol_types as alloy_sol_types;
7361        #[automatically_derived]
7362        impl alloy_sol_types::SolEvent for NewState {
7363            type DataTuple<'a> = (BN254::ScalarField,);
7364            type DataToken<'a> = <Self::DataTuple<
7365                'a,
7366            > as alloy_sol_types::SolType>::Token<'a>;
7367            type TopicList = (
7368                alloy_sol_types::sol_data::FixedBytes<32>,
7369                alloy::sol_types::sol_data::Uint<64>,
7370                alloy::sol_types::sol_data::Uint<64>,
7371            );
7372            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7373            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7374                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7375                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7376                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7377            ]);
7378            const ANONYMOUS: bool = false;
7379            #[allow(unused_variables)]
7380            #[inline]
7381            fn new(
7382                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7383                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7384            ) -> Self {
7385                Self {
7386                    viewNum: topics.1,
7387                    blockHeight: topics.2,
7388                    blockCommRoot: data.0,
7389                }
7390            }
7391            #[inline]
7392            fn check_signature(
7393                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7394            ) -> alloy_sol_types::Result<()> {
7395                if topics.0 != Self::SIGNATURE_HASH {
7396                    return Err(
7397                        alloy_sol_types::Error::invalid_event_signature_hash(
7398                            Self::SIGNATURE,
7399                            topics.0,
7400                            Self::SIGNATURE_HASH,
7401                        ),
7402                    );
7403                }
7404                Ok(())
7405            }
7406            #[inline]
7407            fn tokenize_body(&self) -> Self::DataToken<'_> {
7408                (
7409                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7410                        &self.blockCommRoot,
7411                    ),
7412                )
7413            }
7414            #[inline]
7415            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7416                (
7417                    Self::SIGNATURE_HASH.into(),
7418                    self.viewNum.clone(),
7419                    self.blockHeight.clone(),
7420                )
7421            }
7422            #[inline]
7423            fn encode_topics_raw(
7424                &self,
7425                out: &mut [alloy_sol_types::abi::token::WordToken],
7426            ) -> alloy_sol_types::Result<()> {
7427                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7428                    return Err(alloy_sol_types::Error::Overrun);
7429                }
7430                out[0usize] = alloy_sol_types::abi::token::WordToken(
7431                    Self::SIGNATURE_HASH,
7432                );
7433                out[1usize] = <alloy::sol_types::sol_data::Uint<
7434                    64,
7435                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7436                out[2usize] = <alloy::sol_types::sol_data::Uint<
7437                    64,
7438                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7439                Ok(())
7440            }
7441        }
7442        #[automatically_derived]
7443        impl alloy_sol_types::private::IntoLogData for NewState {
7444            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7445                From::from(self)
7446            }
7447            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7448                From::from(&self)
7449            }
7450        }
7451        #[automatically_derived]
7452        impl From<&NewState> for alloy_sol_types::private::LogData {
7453            #[inline]
7454            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7455                alloy_sol_types::SolEvent::encode_log_data(this)
7456            }
7457        }
7458    };
7459    #[derive(serde::Serialize, serde::Deserialize)]
7460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7461    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7462```solidity
7463event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7464```*/
7465    #[allow(
7466        non_camel_case_types,
7467        non_snake_case,
7468        clippy::pub_underscore_fields,
7469        clippy::style
7470    )]
7471    #[derive(Clone)]
7472    pub struct OwnershipTransferred {
7473        #[allow(missing_docs)]
7474        pub previousOwner: alloy::sol_types::private::Address,
7475        #[allow(missing_docs)]
7476        pub newOwner: alloy::sol_types::private::Address,
7477    }
7478    #[allow(
7479        non_camel_case_types,
7480        non_snake_case,
7481        clippy::pub_underscore_fields,
7482        clippy::style
7483    )]
7484    const _: () = {
7485        use alloy::sol_types as alloy_sol_types;
7486        #[automatically_derived]
7487        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7488            type DataTuple<'a> = ();
7489            type DataToken<'a> = <Self::DataTuple<
7490                'a,
7491            > as alloy_sol_types::SolType>::Token<'a>;
7492            type TopicList = (
7493                alloy_sol_types::sol_data::FixedBytes<32>,
7494                alloy::sol_types::sol_data::Address,
7495                alloy::sol_types::sol_data::Address,
7496            );
7497            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7498            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7499                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7500                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7501                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7502            ]);
7503            const ANONYMOUS: bool = false;
7504            #[allow(unused_variables)]
7505            #[inline]
7506            fn new(
7507                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7508                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7509            ) -> Self {
7510                Self {
7511                    previousOwner: topics.1,
7512                    newOwner: topics.2,
7513                }
7514            }
7515            #[inline]
7516            fn check_signature(
7517                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7518            ) -> alloy_sol_types::Result<()> {
7519                if topics.0 != Self::SIGNATURE_HASH {
7520                    return Err(
7521                        alloy_sol_types::Error::invalid_event_signature_hash(
7522                            Self::SIGNATURE,
7523                            topics.0,
7524                            Self::SIGNATURE_HASH,
7525                        ),
7526                    );
7527                }
7528                Ok(())
7529            }
7530            #[inline]
7531            fn tokenize_body(&self) -> Self::DataToken<'_> {
7532                ()
7533            }
7534            #[inline]
7535            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7536                (
7537                    Self::SIGNATURE_HASH.into(),
7538                    self.previousOwner.clone(),
7539                    self.newOwner.clone(),
7540                )
7541            }
7542            #[inline]
7543            fn encode_topics_raw(
7544                &self,
7545                out: &mut [alloy_sol_types::abi::token::WordToken],
7546            ) -> alloy_sol_types::Result<()> {
7547                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7548                    return Err(alloy_sol_types::Error::Overrun);
7549                }
7550                out[0usize] = alloy_sol_types::abi::token::WordToken(
7551                    Self::SIGNATURE_HASH,
7552                );
7553                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7554                    &self.previousOwner,
7555                );
7556                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7557                    &self.newOwner,
7558                );
7559                Ok(())
7560            }
7561        }
7562        #[automatically_derived]
7563        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7564            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7565                From::from(self)
7566            }
7567            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7568                From::from(&self)
7569            }
7570        }
7571        #[automatically_derived]
7572        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7573            #[inline]
7574            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7575                alloy_sol_types::SolEvent::encode_log_data(this)
7576            }
7577        }
7578    };
7579    #[derive(serde::Serialize, serde::Deserialize)]
7580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7581    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7582```solidity
7583event PermissionedProverNotRequired();
7584```*/
7585    #[allow(
7586        non_camel_case_types,
7587        non_snake_case,
7588        clippy::pub_underscore_fields,
7589        clippy::style
7590    )]
7591    #[derive(Clone)]
7592    pub struct PermissionedProverNotRequired;
7593    #[allow(
7594        non_camel_case_types,
7595        non_snake_case,
7596        clippy::pub_underscore_fields,
7597        clippy::style
7598    )]
7599    const _: () = {
7600        use alloy::sol_types as alloy_sol_types;
7601        #[automatically_derived]
7602        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7603            type DataTuple<'a> = ();
7604            type DataToken<'a> = <Self::DataTuple<
7605                'a,
7606            > as alloy_sol_types::SolType>::Token<'a>;
7607            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7608            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7609            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7610                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7611                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7612                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7613            ]);
7614            const ANONYMOUS: bool = false;
7615            #[allow(unused_variables)]
7616            #[inline]
7617            fn new(
7618                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7619                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7620            ) -> Self {
7621                Self {}
7622            }
7623            #[inline]
7624            fn check_signature(
7625                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7626            ) -> alloy_sol_types::Result<()> {
7627                if topics.0 != Self::SIGNATURE_HASH {
7628                    return Err(
7629                        alloy_sol_types::Error::invalid_event_signature_hash(
7630                            Self::SIGNATURE,
7631                            topics.0,
7632                            Self::SIGNATURE_HASH,
7633                        ),
7634                    );
7635                }
7636                Ok(())
7637            }
7638            #[inline]
7639            fn tokenize_body(&self) -> Self::DataToken<'_> {
7640                ()
7641            }
7642            #[inline]
7643            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7644                (Self::SIGNATURE_HASH.into(),)
7645            }
7646            #[inline]
7647            fn encode_topics_raw(
7648                &self,
7649                out: &mut [alloy_sol_types::abi::token::WordToken],
7650            ) -> alloy_sol_types::Result<()> {
7651                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7652                    return Err(alloy_sol_types::Error::Overrun);
7653                }
7654                out[0usize] = alloy_sol_types::abi::token::WordToken(
7655                    Self::SIGNATURE_HASH,
7656                );
7657                Ok(())
7658            }
7659        }
7660        #[automatically_derived]
7661        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7662            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7663                From::from(self)
7664            }
7665            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7666                From::from(&self)
7667            }
7668        }
7669        #[automatically_derived]
7670        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7671            #[inline]
7672            fn from(
7673                this: &PermissionedProverNotRequired,
7674            ) -> alloy_sol_types::private::LogData {
7675                alloy_sol_types::SolEvent::encode_log_data(this)
7676            }
7677        }
7678    };
7679    #[derive(serde::Serialize, serde::Deserialize)]
7680    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7681    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7682```solidity
7683event PermissionedProverRequired(address permissionedProver);
7684```*/
7685    #[allow(
7686        non_camel_case_types,
7687        non_snake_case,
7688        clippy::pub_underscore_fields,
7689        clippy::style
7690    )]
7691    #[derive(Clone)]
7692    pub struct PermissionedProverRequired {
7693        #[allow(missing_docs)]
7694        pub permissionedProver: alloy::sol_types::private::Address,
7695    }
7696    #[allow(
7697        non_camel_case_types,
7698        non_snake_case,
7699        clippy::pub_underscore_fields,
7700        clippy::style
7701    )]
7702    const _: () = {
7703        use alloy::sol_types as alloy_sol_types;
7704        #[automatically_derived]
7705        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7706            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7707            type DataToken<'a> = <Self::DataTuple<
7708                'a,
7709            > as alloy_sol_types::SolType>::Token<'a>;
7710            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7711            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7712            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7713                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7714                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7715                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7716            ]);
7717            const ANONYMOUS: bool = false;
7718            #[allow(unused_variables)]
7719            #[inline]
7720            fn new(
7721                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7722                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7723            ) -> Self {
7724                Self { permissionedProver: data.0 }
7725            }
7726            #[inline]
7727            fn check_signature(
7728                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7729            ) -> alloy_sol_types::Result<()> {
7730                if topics.0 != Self::SIGNATURE_HASH {
7731                    return Err(
7732                        alloy_sol_types::Error::invalid_event_signature_hash(
7733                            Self::SIGNATURE,
7734                            topics.0,
7735                            Self::SIGNATURE_HASH,
7736                        ),
7737                    );
7738                }
7739                Ok(())
7740            }
7741            #[inline]
7742            fn tokenize_body(&self) -> Self::DataToken<'_> {
7743                (
7744                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7745                        &self.permissionedProver,
7746                    ),
7747                )
7748            }
7749            #[inline]
7750            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7751                (Self::SIGNATURE_HASH.into(),)
7752            }
7753            #[inline]
7754            fn encode_topics_raw(
7755                &self,
7756                out: &mut [alloy_sol_types::abi::token::WordToken],
7757            ) -> alloy_sol_types::Result<()> {
7758                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7759                    return Err(alloy_sol_types::Error::Overrun);
7760                }
7761                out[0usize] = alloy_sol_types::abi::token::WordToken(
7762                    Self::SIGNATURE_HASH,
7763                );
7764                Ok(())
7765            }
7766        }
7767        #[automatically_derived]
7768        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7769            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7770                From::from(self)
7771            }
7772            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7773                From::from(&self)
7774            }
7775        }
7776        #[automatically_derived]
7777        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7778            #[inline]
7779            fn from(
7780                this: &PermissionedProverRequired,
7781            ) -> alloy_sol_types::private::LogData {
7782                alloy_sol_types::SolEvent::encode_log_data(this)
7783            }
7784        }
7785    };
7786    #[derive(serde::Serialize, serde::Deserialize)]
7787    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7788    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7789```solidity
7790event Upgrade(address implementation);
7791```*/
7792    #[allow(
7793        non_camel_case_types,
7794        non_snake_case,
7795        clippy::pub_underscore_fields,
7796        clippy::style
7797    )]
7798    #[derive(Clone)]
7799    pub struct Upgrade {
7800        #[allow(missing_docs)]
7801        pub implementation: alloy::sol_types::private::Address,
7802    }
7803    #[allow(
7804        non_camel_case_types,
7805        non_snake_case,
7806        clippy::pub_underscore_fields,
7807        clippy::style
7808    )]
7809    const _: () = {
7810        use alloy::sol_types as alloy_sol_types;
7811        #[automatically_derived]
7812        impl alloy_sol_types::SolEvent for Upgrade {
7813            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7814            type DataToken<'a> = <Self::DataTuple<
7815                'a,
7816            > as alloy_sol_types::SolType>::Token<'a>;
7817            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7818            const SIGNATURE: &'static str = "Upgrade(address)";
7819            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7820                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7821                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7822                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7823            ]);
7824            const ANONYMOUS: bool = false;
7825            #[allow(unused_variables)]
7826            #[inline]
7827            fn new(
7828                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7829                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7830            ) -> Self {
7831                Self { implementation: data.0 }
7832            }
7833            #[inline]
7834            fn check_signature(
7835                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7836            ) -> alloy_sol_types::Result<()> {
7837                if topics.0 != Self::SIGNATURE_HASH {
7838                    return Err(
7839                        alloy_sol_types::Error::invalid_event_signature_hash(
7840                            Self::SIGNATURE,
7841                            topics.0,
7842                            Self::SIGNATURE_HASH,
7843                        ),
7844                    );
7845                }
7846                Ok(())
7847            }
7848            #[inline]
7849            fn tokenize_body(&self) -> Self::DataToken<'_> {
7850                (
7851                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7852                        &self.implementation,
7853                    ),
7854                )
7855            }
7856            #[inline]
7857            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7858                (Self::SIGNATURE_HASH.into(),)
7859            }
7860            #[inline]
7861            fn encode_topics_raw(
7862                &self,
7863                out: &mut [alloy_sol_types::abi::token::WordToken],
7864            ) -> alloy_sol_types::Result<()> {
7865                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7866                    return Err(alloy_sol_types::Error::Overrun);
7867                }
7868                out[0usize] = alloy_sol_types::abi::token::WordToken(
7869                    Self::SIGNATURE_HASH,
7870                );
7871                Ok(())
7872            }
7873        }
7874        #[automatically_derived]
7875        impl alloy_sol_types::private::IntoLogData for Upgrade {
7876            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7877                From::from(self)
7878            }
7879            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7880                From::from(&self)
7881            }
7882        }
7883        #[automatically_derived]
7884        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7885            #[inline]
7886            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7887                alloy_sol_types::SolEvent::encode_log_data(this)
7888            }
7889        }
7890    };
7891    #[derive(serde::Serialize, serde::Deserialize)]
7892    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7893    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7894```solidity
7895event Upgraded(address indexed implementation);
7896```*/
7897    #[allow(
7898        non_camel_case_types,
7899        non_snake_case,
7900        clippy::pub_underscore_fields,
7901        clippy::style
7902    )]
7903    #[derive(Clone)]
7904    pub struct Upgraded {
7905        #[allow(missing_docs)]
7906        pub implementation: alloy::sol_types::private::Address,
7907    }
7908    #[allow(
7909        non_camel_case_types,
7910        non_snake_case,
7911        clippy::pub_underscore_fields,
7912        clippy::style
7913    )]
7914    const _: () = {
7915        use alloy::sol_types as alloy_sol_types;
7916        #[automatically_derived]
7917        impl alloy_sol_types::SolEvent for Upgraded {
7918            type DataTuple<'a> = ();
7919            type DataToken<'a> = <Self::DataTuple<
7920                'a,
7921            > as alloy_sol_types::SolType>::Token<'a>;
7922            type TopicList = (
7923                alloy_sol_types::sol_data::FixedBytes<32>,
7924                alloy::sol_types::sol_data::Address,
7925            );
7926            const SIGNATURE: &'static str = "Upgraded(address)";
7927            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7928                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7929                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7930                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7931            ]);
7932            const ANONYMOUS: bool = false;
7933            #[allow(unused_variables)]
7934            #[inline]
7935            fn new(
7936                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7937                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7938            ) -> Self {
7939                Self { implementation: topics.1 }
7940            }
7941            #[inline]
7942            fn check_signature(
7943                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7944            ) -> alloy_sol_types::Result<()> {
7945                if topics.0 != Self::SIGNATURE_HASH {
7946                    return Err(
7947                        alloy_sol_types::Error::invalid_event_signature_hash(
7948                            Self::SIGNATURE,
7949                            topics.0,
7950                            Self::SIGNATURE_HASH,
7951                        ),
7952                    );
7953                }
7954                Ok(())
7955            }
7956            #[inline]
7957            fn tokenize_body(&self) -> Self::DataToken<'_> {
7958                ()
7959            }
7960            #[inline]
7961            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7962                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7963            }
7964            #[inline]
7965            fn encode_topics_raw(
7966                &self,
7967                out: &mut [alloy_sol_types::abi::token::WordToken],
7968            ) -> alloy_sol_types::Result<()> {
7969                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7970                    return Err(alloy_sol_types::Error::Overrun);
7971                }
7972                out[0usize] = alloy_sol_types::abi::token::WordToken(
7973                    Self::SIGNATURE_HASH,
7974                );
7975                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7976                    &self.implementation,
7977                );
7978                Ok(())
7979            }
7980        }
7981        #[automatically_derived]
7982        impl alloy_sol_types::private::IntoLogData for Upgraded {
7983            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7984                From::from(self)
7985            }
7986            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7987                From::from(&self)
7988            }
7989        }
7990        #[automatically_derived]
7991        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7992            #[inline]
7993            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7994                alloy_sol_types::SolEvent::encode_log_data(this)
7995            }
7996        }
7997    };
7998    #[derive(serde::Serialize, serde::Deserialize)]
7999    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8000    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
8001```solidity
8002function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
8003```*/
8004    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8005    #[derive(Clone)]
8006    pub struct UPGRADE_INTERFACE_VERSIONCall;
8007    #[derive(serde::Serialize, serde::Deserialize)]
8008    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8009    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
8010    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8011    #[derive(Clone)]
8012    pub struct UPGRADE_INTERFACE_VERSIONReturn {
8013        #[allow(missing_docs)]
8014        pub _0: alloy::sol_types::private::String,
8015    }
8016    #[allow(
8017        non_camel_case_types,
8018        non_snake_case,
8019        clippy::pub_underscore_fields,
8020        clippy::style
8021    )]
8022    const _: () = {
8023        use alloy::sol_types as alloy_sol_types;
8024        {
8025            #[doc(hidden)]
8026            #[allow(dead_code)]
8027            type UnderlyingSolTuple<'a> = ();
8028            #[doc(hidden)]
8029            type UnderlyingRustTuple<'a> = ();
8030            #[cfg(test)]
8031            #[allow(dead_code, unreachable_patterns)]
8032            fn _type_assertion(
8033                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8034            ) {
8035                match _t {
8036                    alloy_sol_types::private::AssertTypeEq::<
8037                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8038                    >(_) => {}
8039                }
8040            }
8041            #[automatically_derived]
8042            #[doc(hidden)]
8043            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8044            for UnderlyingRustTuple<'_> {
8045                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8046                    ()
8047                }
8048            }
8049            #[automatically_derived]
8050            #[doc(hidden)]
8051            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8052            for UPGRADE_INTERFACE_VERSIONCall {
8053                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8054                    Self
8055                }
8056            }
8057        }
8058        {
8059            #[doc(hidden)]
8060            #[allow(dead_code)]
8061            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8062            #[doc(hidden)]
8063            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8064            #[cfg(test)]
8065            #[allow(dead_code, unreachable_patterns)]
8066            fn _type_assertion(
8067                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8068            ) {
8069                match _t {
8070                    alloy_sol_types::private::AssertTypeEq::<
8071                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8072                    >(_) => {}
8073                }
8074            }
8075            #[automatically_derived]
8076            #[doc(hidden)]
8077            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8078            for UnderlyingRustTuple<'_> {
8079                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8080                    (value._0,)
8081                }
8082            }
8083            #[automatically_derived]
8084            #[doc(hidden)]
8085            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8086            for UPGRADE_INTERFACE_VERSIONReturn {
8087                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8088                    Self { _0: tuple.0 }
8089                }
8090            }
8091        }
8092        #[automatically_derived]
8093        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8094            type Parameters<'a> = ();
8095            type Token<'a> = <Self::Parameters<
8096                'a,
8097            > as alloy_sol_types::SolType>::Token<'a>;
8098            type Return = alloy::sol_types::private::String;
8099            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8100            type ReturnToken<'a> = <Self::ReturnTuple<
8101                'a,
8102            > as alloy_sol_types::SolType>::Token<'a>;
8103            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8104            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8105            #[inline]
8106            fn new<'a>(
8107                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8108            ) -> Self {
8109                tuple.into()
8110            }
8111            #[inline]
8112            fn tokenize(&self) -> Self::Token<'_> {
8113                ()
8114            }
8115            #[inline]
8116            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8117                (
8118                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8119                        ret,
8120                    ),
8121                )
8122            }
8123            #[inline]
8124            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8125                <Self::ReturnTuple<
8126                    '_,
8127                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8128                    .map(|r| {
8129                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8130                        r._0
8131                    })
8132            }
8133            #[inline]
8134            fn abi_decode_returns_validate(
8135                data: &[u8],
8136            ) -> alloy_sol_types::Result<Self::Return> {
8137                <Self::ReturnTuple<
8138                    '_,
8139                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8140                    .map(|r| {
8141                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8142                        r._0
8143                    })
8144            }
8145        }
8146    };
8147    #[derive(serde::Serialize, serde::Deserialize)]
8148    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8149    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8150```solidity
8151function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8152```*/
8153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8154    #[derive(Clone)]
8155    pub struct _getVkCall;
8156    #[derive(serde::Serialize, serde::Deserialize)]
8157    #[derive()]
8158    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8160    #[derive(Clone)]
8161    pub struct _getVkReturn {
8162        #[allow(missing_docs)]
8163        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8164    }
8165    #[allow(
8166        non_camel_case_types,
8167        non_snake_case,
8168        clippy::pub_underscore_fields,
8169        clippy::style
8170    )]
8171    const _: () = {
8172        use alloy::sol_types as alloy_sol_types;
8173        {
8174            #[doc(hidden)]
8175            #[allow(dead_code)]
8176            type UnderlyingSolTuple<'a> = ();
8177            #[doc(hidden)]
8178            type UnderlyingRustTuple<'a> = ();
8179            #[cfg(test)]
8180            #[allow(dead_code, unreachable_patterns)]
8181            fn _type_assertion(
8182                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8183            ) {
8184                match _t {
8185                    alloy_sol_types::private::AssertTypeEq::<
8186                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8187                    >(_) => {}
8188                }
8189            }
8190            #[automatically_derived]
8191            #[doc(hidden)]
8192            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8193                fn from(value: _getVkCall) -> Self {
8194                    ()
8195                }
8196            }
8197            #[automatically_derived]
8198            #[doc(hidden)]
8199            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8200                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8201                    Self
8202                }
8203            }
8204        }
8205        {
8206            #[doc(hidden)]
8207            #[allow(dead_code)]
8208            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8209            #[doc(hidden)]
8210            type UnderlyingRustTuple<'a> = (
8211                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8212            );
8213            #[cfg(test)]
8214            #[allow(dead_code, unreachable_patterns)]
8215            fn _type_assertion(
8216                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8217            ) {
8218                match _t {
8219                    alloy_sol_types::private::AssertTypeEq::<
8220                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8221                    >(_) => {}
8222                }
8223            }
8224            #[automatically_derived]
8225            #[doc(hidden)]
8226            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8227                fn from(value: _getVkReturn) -> Self {
8228                    (value.vk,)
8229                }
8230            }
8231            #[automatically_derived]
8232            #[doc(hidden)]
8233            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8234                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8235                    Self { vk: tuple.0 }
8236                }
8237            }
8238        }
8239        #[automatically_derived]
8240        impl alloy_sol_types::SolCall for _getVkCall {
8241            type Parameters<'a> = ();
8242            type Token<'a> = <Self::Parameters<
8243                'a,
8244            > as alloy_sol_types::SolType>::Token<'a>;
8245            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8246            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8247            type ReturnToken<'a> = <Self::ReturnTuple<
8248                'a,
8249            > as alloy_sol_types::SolType>::Token<'a>;
8250            const SIGNATURE: &'static str = "_getVk()";
8251            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8252            #[inline]
8253            fn new<'a>(
8254                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8255            ) -> Self {
8256                tuple.into()
8257            }
8258            #[inline]
8259            fn tokenize(&self) -> Self::Token<'_> {
8260                ()
8261            }
8262            #[inline]
8263            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8264                (
8265                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8266                        ret,
8267                    ),
8268                )
8269            }
8270            #[inline]
8271            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8272                <Self::ReturnTuple<
8273                    '_,
8274                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8275                    .map(|r| {
8276                        let r: _getVkReturn = r.into();
8277                        r.vk
8278                    })
8279            }
8280            #[inline]
8281            fn abi_decode_returns_validate(
8282                data: &[u8],
8283            ) -> alloy_sol_types::Result<Self::Return> {
8284                <Self::ReturnTuple<
8285                    '_,
8286                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8287                    .map(|r| {
8288                        let r: _getVkReturn = r.into();
8289                        r.vk
8290                    })
8291            }
8292        }
8293    };
8294    #[derive(serde::Serialize, serde::Deserialize)]
8295    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8296    /**Function with signature `authRoot()` and selector `0x998328e8`.
8297```solidity
8298function authRoot() external view returns (uint256);
8299```*/
8300    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8301    #[derive(Clone)]
8302    pub struct authRootCall;
8303    #[derive(serde::Serialize, serde::Deserialize)]
8304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8305    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
8306    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8307    #[derive(Clone)]
8308    pub struct authRootReturn {
8309        #[allow(missing_docs)]
8310        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8311    }
8312    #[allow(
8313        non_camel_case_types,
8314        non_snake_case,
8315        clippy::pub_underscore_fields,
8316        clippy::style
8317    )]
8318    const _: () = {
8319        use alloy::sol_types as alloy_sol_types;
8320        {
8321            #[doc(hidden)]
8322            #[allow(dead_code)]
8323            type UnderlyingSolTuple<'a> = ();
8324            #[doc(hidden)]
8325            type UnderlyingRustTuple<'a> = ();
8326            #[cfg(test)]
8327            #[allow(dead_code, unreachable_patterns)]
8328            fn _type_assertion(
8329                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8330            ) {
8331                match _t {
8332                    alloy_sol_types::private::AssertTypeEq::<
8333                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8334                    >(_) => {}
8335                }
8336            }
8337            #[automatically_derived]
8338            #[doc(hidden)]
8339            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
8340                fn from(value: authRootCall) -> Self {
8341                    ()
8342                }
8343            }
8344            #[automatically_derived]
8345            #[doc(hidden)]
8346            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
8347                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8348                    Self
8349                }
8350            }
8351        }
8352        {
8353            #[doc(hidden)]
8354            #[allow(dead_code)]
8355            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8356            #[doc(hidden)]
8357            type UnderlyingRustTuple<'a> = (
8358                alloy::sol_types::private::primitives::aliases::U256,
8359            );
8360            #[cfg(test)]
8361            #[allow(dead_code, unreachable_patterns)]
8362            fn _type_assertion(
8363                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8364            ) {
8365                match _t {
8366                    alloy_sol_types::private::AssertTypeEq::<
8367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8368                    >(_) => {}
8369                }
8370            }
8371            #[automatically_derived]
8372            #[doc(hidden)]
8373            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
8374                fn from(value: authRootReturn) -> Self {
8375                    (value._0,)
8376                }
8377            }
8378            #[automatically_derived]
8379            #[doc(hidden)]
8380            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
8381                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8382                    Self { _0: tuple.0 }
8383                }
8384            }
8385        }
8386        #[automatically_derived]
8387        impl alloy_sol_types::SolCall for authRootCall {
8388            type Parameters<'a> = ();
8389            type Token<'a> = <Self::Parameters<
8390                'a,
8391            > as alloy_sol_types::SolType>::Token<'a>;
8392            type Return = alloy::sol_types::private::primitives::aliases::U256;
8393            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8394            type ReturnToken<'a> = <Self::ReturnTuple<
8395                'a,
8396            > as alloy_sol_types::SolType>::Token<'a>;
8397            const SIGNATURE: &'static str = "authRoot()";
8398            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
8399            #[inline]
8400            fn new<'a>(
8401                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8402            ) -> Self {
8403                tuple.into()
8404            }
8405            #[inline]
8406            fn tokenize(&self) -> Self::Token<'_> {
8407                ()
8408            }
8409            #[inline]
8410            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8411                (
8412                    <alloy::sol_types::sol_data::Uint<
8413                        256,
8414                    > as alloy_sol_types::SolType>::tokenize(ret),
8415                )
8416            }
8417            #[inline]
8418            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8419                <Self::ReturnTuple<
8420                    '_,
8421                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8422                    .map(|r| {
8423                        let r: authRootReturn = r.into();
8424                        r._0
8425                    })
8426            }
8427            #[inline]
8428            fn abi_decode_returns_validate(
8429                data: &[u8],
8430            ) -> alloy_sol_types::Result<Self::Return> {
8431                <Self::ReturnTuple<
8432                    '_,
8433                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8434                    .map(|r| {
8435                        let r: authRootReturn = r.into();
8436                        r._0
8437                    })
8438            }
8439        }
8440    };
8441    #[derive(serde::Serialize, serde::Deserialize)]
8442    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8443    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8444```solidity
8445function blocksPerEpoch() external view returns (uint64);
8446```*/
8447    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8448    #[derive(Clone)]
8449    pub struct blocksPerEpochCall;
8450    #[derive(serde::Serialize, serde::Deserialize)]
8451    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8452    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8453    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8454    #[derive(Clone)]
8455    pub struct blocksPerEpochReturn {
8456        #[allow(missing_docs)]
8457        pub _0: u64,
8458    }
8459    #[allow(
8460        non_camel_case_types,
8461        non_snake_case,
8462        clippy::pub_underscore_fields,
8463        clippy::style
8464    )]
8465    const _: () = {
8466        use alloy::sol_types as alloy_sol_types;
8467        {
8468            #[doc(hidden)]
8469            #[allow(dead_code)]
8470            type UnderlyingSolTuple<'a> = ();
8471            #[doc(hidden)]
8472            type UnderlyingRustTuple<'a> = ();
8473            #[cfg(test)]
8474            #[allow(dead_code, unreachable_patterns)]
8475            fn _type_assertion(
8476                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8477            ) {
8478                match _t {
8479                    alloy_sol_types::private::AssertTypeEq::<
8480                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8481                    >(_) => {}
8482                }
8483            }
8484            #[automatically_derived]
8485            #[doc(hidden)]
8486            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8487                fn from(value: blocksPerEpochCall) -> Self {
8488                    ()
8489                }
8490            }
8491            #[automatically_derived]
8492            #[doc(hidden)]
8493            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8494                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8495                    Self
8496                }
8497            }
8498        }
8499        {
8500            #[doc(hidden)]
8501            #[allow(dead_code)]
8502            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8503            #[doc(hidden)]
8504            type UnderlyingRustTuple<'a> = (u64,);
8505            #[cfg(test)]
8506            #[allow(dead_code, unreachable_patterns)]
8507            fn _type_assertion(
8508                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8509            ) {
8510                match _t {
8511                    alloy_sol_types::private::AssertTypeEq::<
8512                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8513                    >(_) => {}
8514                }
8515            }
8516            #[automatically_derived]
8517            #[doc(hidden)]
8518            impl ::core::convert::From<blocksPerEpochReturn>
8519            for UnderlyingRustTuple<'_> {
8520                fn from(value: blocksPerEpochReturn) -> Self {
8521                    (value._0,)
8522                }
8523            }
8524            #[automatically_derived]
8525            #[doc(hidden)]
8526            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8527            for blocksPerEpochReturn {
8528                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8529                    Self { _0: tuple.0 }
8530                }
8531            }
8532        }
8533        #[automatically_derived]
8534        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8535            type Parameters<'a> = ();
8536            type Token<'a> = <Self::Parameters<
8537                'a,
8538            > as alloy_sol_types::SolType>::Token<'a>;
8539            type Return = u64;
8540            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8541            type ReturnToken<'a> = <Self::ReturnTuple<
8542                'a,
8543            > as alloy_sol_types::SolType>::Token<'a>;
8544            const SIGNATURE: &'static str = "blocksPerEpoch()";
8545            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8546            #[inline]
8547            fn new<'a>(
8548                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8549            ) -> Self {
8550                tuple.into()
8551            }
8552            #[inline]
8553            fn tokenize(&self) -> Self::Token<'_> {
8554                ()
8555            }
8556            #[inline]
8557            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8558                (
8559                    <alloy::sol_types::sol_data::Uint<
8560                        64,
8561                    > as alloy_sol_types::SolType>::tokenize(ret),
8562                )
8563            }
8564            #[inline]
8565            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8566                <Self::ReturnTuple<
8567                    '_,
8568                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8569                    .map(|r| {
8570                        let r: blocksPerEpochReturn = r.into();
8571                        r._0
8572                    })
8573            }
8574            #[inline]
8575            fn abi_decode_returns_validate(
8576                data: &[u8],
8577            ) -> alloy_sol_types::Result<Self::Return> {
8578                <Self::ReturnTuple<
8579                    '_,
8580                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8581                    .map(|r| {
8582                        let r: blocksPerEpochReturn = r.into();
8583                        r._0
8584                    })
8585            }
8586        }
8587    };
8588    #[derive(serde::Serialize, serde::Deserialize)]
8589    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8590    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8591```solidity
8592function currentBlockNumber() external view returns (uint256);
8593```*/
8594    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8595    #[derive(Clone)]
8596    pub struct currentBlockNumberCall;
8597    #[derive(serde::Serialize, serde::Deserialize)]
8598    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8599    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8600    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8601    #[derive(Clone)]
8602    pub struct currentBlockNumberReturn {
8603        #[allow(missing_docs)]
8604        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8605    }
8606    #[allow(
8607        non_camel_case_types,
8608        non_snake_case,
8609        clippy::pub_underscore_fields,
8610        clippy::style
8611    )]
8612    const _: () = {
8613        use alloy::sol_types as alloy_sol_types;
8614        {
8615            #[doc(hidden)]
8616            #[allow(dead_code)]
8617            type UnderlyingSolTuple<'a> = ();
8618            #[doc(hidden)]
8619            type UnderlyingRustTuple<'a> = ();
8620            #[cfg(test)]
8621            #[allow(dead_code, unreachable_patterns)]
8622            fn _type_assertion(
8623                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8624            ) {
8625                match _t {
8626                    alloy_sol_types::private::AssertTypeEq::<
8627                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8628                    >(_) => {}
8629                }
8630            }
8631            #[automatically_derived]
8632            #[doc(hidden)]
8633            impl ::core::convert::From<currentBlockNumberCall>
8634            for UnderlyingRustTuple<'_> {
8635                fn from(value: currentBlockNumberCall) -> Self {
8636                    ()
8637                }
8638            }
8639            #[automatically_derived]
8640            #[doc(hidden)]
8641            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8642            for currentBlockNumberCall {
8643                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8644                    Self
8645                }
8646            }
8647        }
8648        {
8649            #[doc(hidden)]
8650            #[allow(dead_code)]
8651            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8652            #[doc(hidden)]
8653            type UnderlyingRustTuple<'a> = (
8654                alloy::sol_types::private::primitives::aliases::U256,
8655            );
8656            #[cfg(test)]
8657            #[allow(dead_code, unreachable_patterns)]
8658            fn _type_assertion(
8659                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8660            ) {
8661                match _t {
8662                    alloy_sol_types::private::AssertTypeEq::<
8663                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8664                    >(_) => {}
8665                }
8666            }
8667            #[automatically_derived]
8668            #[doc(hidden)]
8669            impl ::core::convert::From<currentBlockNumberReturn>
8670            for UnderlyingRustTuple<'_> {
8671                fn from(value: currentBlockNumberReturn) -> Self {
8672                    (value._0,)
8673                }
8674            }
8675            #[automatically_derived]
8676            #[doc(hidden)]
8677            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8678            for currentBlockNumberReturn {
8679                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8680                    Self { _0: tuple.0 }
8681                }
8682            }
8683        }
8684        #[automatically_derived]
8685        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8686            type Parameters<'a> = ();
8687            type Token<'a> = <Self::Parameters<
8688                'a,
8689            > as alloy_sol_types::SolType>::Token<'a>;
8690            type Return = alloy::sol_types::private::primitives::aliases::U256;
8691            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8692            type ReturnToken<'a> = <Self::ReturnTuple<
8693                'a,
8694            > as alloy_sol_types::SolType>::Token<'a>;
8695            const SIGNATURE: &'static str = "currentBlockNumber()";
8696            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8697            #[inline]
8698            fn new<'a>(
8699                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8700            ) -> Self {
8701                tuple.into()
8702            }
8703            #[inline]
8704            fn tokenize(&self) -> Self::Token<'_> {
8705                ()
8706            }
8707            #[inline]
8708            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8709                (
8710                    <alloy::sol_types::sol_data::Uint<
8711                        256,
8712                    > as alloy_sol_types::SolType>::tokenize(ret),
8713                )
8714            }
8715            #[inline]
8716            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8717                <Self::ReturnTuple<
8718                    '_,
8719                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8720                    .map(|r| {
8721                        let r: currentBlockNumberReturn = r.into();
8722                        r._0
8723                    })
8724            }
8725            #[inline]
8726            fn abi_decode_returns_validate(
8727                data: &[u8],
8728            ) -> alloy_sol_types::Result<Self::Return> {
8729                <Self::ReturnTuple<
8730                    '_,
8731                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8732                    .map(|r| {
8733                        let r: currentBlockNumberReturn = r.into();
8734                        r._0
8735                    })
8736            }
8737        }
8738    };
8739    #[derive(serde::Serialize, serde::Deserialize)]
8740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8741    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8742```solidity
8743function currentEpoch() external view returns (uint64);
8744```*/
8745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8746    #[derive(Clone)]
8747    pub struct currentEpochCall;
8748    #[derive(serde::Serialize, serde::Deserialize)]
8749    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8750    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8752    #[derive(Clone)]
8753    pub struct currentEpochReturn {
8754        #[allow(missing_docs)]
8755        pub _0: u64,
8756    }
8757    #[allow(
8758        non_camel_case_types,
8759        non_snake_case,
8760        clippy::pub_underscore_fields,
8761        clippy::style
8762    )]
8763    const _: () = {
8764        use alloy::sol_types as alloy_sol_types;
8765        {
8766            #[doc(hidden)]
8767            #[allow(dead_code)]
8768            type UnderlyingSolTuple<'a> = ();
8769            #[doc(hidden)]
8770            type UnderlyingRustTuple<'a> = ();
8771            #[cfg(test)]
8772            #[allow(dead_code, unreachable_patterns)]
8773            fn _type_assertion(
8774                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8775            ) {
8776                match _t {
8777                    alloy_sol_types::private::AssertTypeEq::<
8778                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8779                    >(_) => {}
8780                }
8781            }
8782            #[automatically_derived]
8783            #[doc(hidden)]
8784            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8785                fn from(value: currentEpochCall) -> Self {
8786                    ()
8787                }
8788            }
8789            #[automatically_derived]
8790            #[doc(hidden)]
8791            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8792                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8793                    Self
8794                }
8795            }
8796        }
8797        {
8798            #[doc(hidden)]
8799            #[allow(dead_code)]
8800            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8801            #[doc(hidden)]
8802            type UnderlyingRustTuple<'a> = (u64,);
8803            #[cfg(test)]
8804            #[allow(dead_code, unreachable_patterns)]
8805            fn _type_assertion(
8806                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8807            ) {
8808                match _t {
8809                    alloy_sol_types::private::AssertTypeEq::<
8810                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8811                    >(_) => {}
8812                }
8813            }
8814            #[automatically_derived]
8815            #[doc(hidden)]
8816            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8817                fn from(value: currentEpochReturn) -> Self {
8818                    (value._0,)
8819                }
8820            }
8821            #[automatically_derived]
8822            #[doc(hidden)]
8823            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8824                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8825                    Self { _0: tuple.0 }
8826                }
8827            }
8828        }
8829        #[automatically_derived]
8830        impl alloy_sol_types::SolCall for currentEpochCall {
8831            type Parameters<'a> = ();
8832            type Token<'a> = <Self::Parameters<
8833                'a,
8834            > as alloy_sol_types::SolType>::Token<'a>;
8835            type Return = u64;
8836            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8837            type ReturnToken<'a> = <Self::ReturnTuple<
8838                'a,
8839            > as alloy_sol_types::SolType>::Token<'a>;
8840            const SIGNATURE: &'static str = "currentEpoch()";
8841            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8842            #[inline]
8843            fn new<'a>(
8844                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8845            ) -> Self {
8846                tuple.into()
8847            }
8848            #[inline]
8849            fn tokenize(&self) -> Self::Token<'_> {
8850                ()
8851            }
8852            #[inline]
8853            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8854                (
8855                    <alloy::sol_types::sol_data::Uint<
8856                        64,
8857                    > as alloy_sol_types::SolType>::tokenize(ret),
8858                )
8859            }
8860            #[inline]
8861            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8862                <Self::ReturnTuple<
8863                    '_,
8864                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8865                    .map(|r| {
8866                        let r: currentEpochReturn = r.into();
8867                        r._0
8868                    })
8869            }
8870            #[inline]
8871            fn abi_decode_returns_validate(
8872                data: &[u8],
8873            ) -> alloy_sol_types::Result<Self::Return> {
8874                <Self::ReturnTuple<
8875                    '_,
8876                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8877                    .map(|r| {
8878                        let r: currentEpochReturn = r.into();
8879                        r._0
8880                    })
8881            }
8882        }
8883    };
8884    #[derive(serde::Serialize, serde::Deserialize)]
8885    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8886    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8887```solidity
8888function disablePermissionedProverMode() external;
8889```*/
8890    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8891    #[derive(Clone)]
8892    pub struct disablePermissionedProverModeCall;
8893    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8894    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8895    #[derive(Clone)]
8896    pub struct disablePermissionedProverModeReturn {}
8897    #[allow(
8898        non_camel_case_types,
8899        non_snake_case,
8900        clippy::pub_underscore_fields,
8901        clippy::style
8902    )]
8903    const _: () = {
8904        use alloy::sol_types as alloy_sol_types;
8905        {
8906            #[doc(hidden)]
8907            #[allow(dead_code)]
8908            type UnderlyingSolTuple<'a> = ();
8909            #[doc(hidden)]
8910            type UnderlyingRustTuple<'a> = ();
8911            #[cfg(test)]
8912            #[allow(dead_code, unreachable_patterns)]
8913            fn _type_assertion(
8914                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8915            ) {
8916                match _t {
8917                    alloy_sol_types::private::AssertTypeEq::<
8918                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8919                    >(_) => {}
8920                }
8921            }
8922            #[automatically_derived]
8923            #[doc(hidden)]
8924            impl ::core::convert::From<disablePermissionedProverModeCall>
8925            for UnderlyingRustTuple<'_> {
8926                fn from(value: disablePermissionedProverModeCall) -> Self {
8927                    ()
8928                }
8929            }
8930            #[automatically_derived]
8931            #[doc(hidden)]
8932            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8933            for disablePermissionedProverModeCall {
8934                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8935                    Self
8936                }
8937            }
8938        }
8939        {
8940            #[doc(hidden)]
8941            #[allow(dead_code)]
8942            type UnderlyingSolTuple<'a> = ();
8943            #[doc(hidden)]
8944            type UnderlyingRustTuple<'a> = ();
8945            #[cfg(test)]
8946            #[allow(dead_code, unreachable_patterns)]
8947            fn _type_assertion(
8948                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8949            ) {
8950                match _t {
8951                    alloy_sol_types::private::AssertTypeEq::<
8952                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8953                    >(_) => {}
8954                }
8955            }
8956            #[automatically_derived]
8957            #[doc(hidden)]
8958            impl ::core::convert::From<disablePermissionedProverModeReturn>
8959            for UnderlyingRustTuple<'_> {
8960                fn from(value: disablePermissionedProverModeReturn) -> Self {
8961                    ()
8962                }
8963            }
8964            #[automatically_derived]
8965            #[doc(hidden)]
8966            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8967            for disablePermissionedProverModeReturn {
8968                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8969                    Self {}
8970                }
8971            }
8972        }
8973        impl disablePermissionedProverModeReturn {
8974            fn _tokenize(
8975                &self,
8976            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8977                '_,
8978            > {
8979                ()
8980            }
8981        }
8982        #[automatically_derived]
8983        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8984            type Parameters<'a> = ();
8985            type Token<'a> = <Self::Parameters<
8986                'a,
8987            > as alloy_sol_types::SolType>::Token<'a>;
8988            type Return = disablePermissionedProverModeReturn;
8989            type ReturnTuple<'a> = ();
8990            type ReturnToken<'a> = <Self::ReturnTuple<
8991                'a,
8992            > as alloy_sol_types::SolType>::Token<'a>;
8993            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8994            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8995            #[inline]
8996            fn new<'a>(
8997                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8998            ) -> Self {
8999                tuple.into()
9000            }
9001            #[inline]
9002            fn tokenize(&self) -> Self::Token<'_> {
9003                ()
9004            }
9005            #[inline]
9006            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9007                disablePermissionedProverModeReturn::_tokenize(ret)
9008            }
9009            #[inline]
9010            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9011                <Self::ReturnTuple<
9012                    '_,
9013                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9014                    .map(Into::into)
9015            }
9016            #[inline]
9017            fn abi_decode_returns_validate(
9018                data: &[u8],
9019            ) -> alloy_sol_types::Result<Self::Return> {
9020                <Self::ReturnTuple<
9021                    '_,
9022                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9023                    .map(Into::into)
9024            }
9025        }
9026    };
9027    #[derive(serde::Serialize, serde::Deserialize)]
9028    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9029    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
9030```solidity
9031function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
9032```*/
9033    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9034    #[derive(Clone)]
9035    pub struct epochFromBlockNumberCall {
9036        #[allow(missing_docs)]
9037        pub _blockNum: u64,
9038        #[allow(missing_docs)]
9039        pub _blocksPerEpoch: u64,
9040    }
9041    #[derive(serde::Serialize, serde::Deserialize)]
9042    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9043    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
9044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9045    #[derive(Clone)]
9046    pub struct epochFromBlockNumberReturn {
9047        #[allow(missing_docs)]
9048        pub _0: u64,
9049    }
9050    #[allow(
9051        non_camel_case_types,
9052        non_snake_case,
9053        clippy::pub_underscore_fields,
9054        clippy::style
9055    )]
9056    const _: () = {
9057        use alloy::sol_types as alloy_sol_types;
9058        {
9059            #[doc(hidden)]
9060            #[allow(dead_code)]
9061            type UnderlyingSolTuple<'a> = (
9062                alloy::sol_types::sol_data::Uint<64>,
9063                alloy::sol_types::sol_data::Uint<64>,
9064            );
9065            #[doc(hidden)]
9066            type UnderlyingRustTuple<'a> = (u64, u64);
9067            #[cfg(test)]
9068            #[allow(dead_code, unreachable_patterns)]
9069            fn _type_assertion(
9070                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9071            ) {
9072                match _t {
9073                    alloy_sol_types::private::AssertTypeEq::<
9074                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9075                    >(_) => {}
9076                }
9077            }
9078            #[automatically_derived]
9079            #[doc(hidden)]
9080            impl ::core::convert::From<epochFromBlockNumberCall>
9081            for UnderlyingRustTuple<'_> {
9082                fn from(value: epochFromBlockNumberCall) -> Self {
9083                    (value._blockNum, value._blocksPerEpoch)
9084                }
9085            }
9086            #[automatically_derived]
9087            #[doc(hidden)]
9088            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9089            for epochFromBlockNumberCall {
9090                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9091                    Self {
9092                        _blockNum: tuple.0,
9093                        _blocksPerEpoch: tuple.1,
9094                    }
9095                }
9096            }
9097        }
9098        {
9099            #[doc(hidden)]
9100            #[allow(dead_code)]
9101            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9102            #[doc(hidden)]
9103            type UnderlyingRustTuple<'a> = (u64,);
9104            #[cfg(test)]
9105            #[allow(dead_code, unreachable_patterns)]
9106            fn _type_assertion(
9107                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9108            ) {
9109                match _t {
9110                    alloy_sol_types::private::AssertTypeEq::<
9111                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9112                    >(_) => {}
9113                }
9114            }
9115            #[automatically_derived]
9116            #[doc(hidden)]
9117            impl ::core::convert::From<epochFromBlockNumberReturn>
9118            for UnderlyingRustTuple<'_> {
9119                fn from(value: epochFromBlockNumberReturn) -> Self {
9120                    (value._0,)
9121                }
9122            }
9123            #[automatically_derived]
9124            #[doc(hidden)]
9125            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9126            for epochFromBlockNumberReturn {
9127                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9128                    Self { _0: tuple.0 }
9129                }
9130            }
9131        }
9132        #[automatically_derived]
9133        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9134            type Parameters<'a> = (
9135                alloy::sol_types::sol_data::Uint<64>,
9136                alloy::sol_types::sol_data::Uint<64>,
9137            );
9138            type Token<'a> = <Self::Parameters<
9139                'a,
9140            > as alloy_sol_types::SolType>::Token<'a>;
9141            type Return = u64;
9142            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9143            type ReturnToken<'a> = <Self::ReturnTuple<
9144                'a,
9145            > as alloy_sol_types::SolType>::Token<'a>;
9146            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9147            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9148            #[inline]
9149            fn new<'a>(
9150                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9151            ) -> Self {
9152                tuple.into()
9153            }
9154            #[inline]
9155            fn tokenize(&self) -> Self::Token<'_> {
9156                (
9157                    <alloy::sol_types::sol_data::Uint<
9158                        64,
9159                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9160                    <alloy::sol_types::sol_data::Uint<
9161                        64,
9162                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9163                )
9164            }
9165            #[inline]
9166            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9167                (
9168                    <alloy::sol_types::sol_data::Uint<
9169                        64,
9170                    > as alloy_sol_types::SolType>::tokenize(ret),
9171                )
9172            }
9173            #[inline]
9174            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9175                <Self::ReturnTuple<
9176                    '_,
9177                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9178                    .map(|r| {
9179                        let r: epochFromBlockNumberReturn = r.into();
9180                        r._0
9181                    })
9182            }
9183            #[inline]
9184            fn abi_decode_returns_validate(
9185                data: &[u8],
9186            ) -> alloy_sol_types::Result<Self::Return> {
9187                <Self::ReturnTuple<
9188                    '_,
9189                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9190                    .map(|r| {
9191                        let r: epochFromBlockNumberReturn = r.into();
9192                        r._0
9193                    })
9194            }
9195        }
9196    };
9197    #[derive(serde::Serialize, serde::Deserialize)]
9198    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9199    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9200```solidity
9201function epochStartBlock() external view returns (uint64);
9202```*/
9203    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9204    #[derive(Clone)]
9205    pub struct epochStartBlockCall;
9206    #[derive(serde::Serialize, serde::Deserialize)]
9207    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9208    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9210    #[derive(Clone)]
9211    pub struct epochStartBlockReturn {
9212        #[allow(missing_docs)]
9213        pub _0: u64,
9214    }
9215    #[allow(
9216        non_camel_case_types,
9217        non_snake_case,
9218        clippy::pub_underscore_fields,
9219        clippy::style
9220    )]
9221    const _: () = {
9222        use alloy::sol_types as alloy_sol_types;
9223        {
9224            #[doc(hidden)]
9225            #[allow(dead_code)]
9226            type UnderlyingSolTuple<'a> = ();
9227            #[doc(hidden)]
9228            type UnderlyingRustTuple<'a> = ();
9229            #[cfg(test)]
9230            #[allow(dead_code, unreachable_patterns)]
9231            fn _type_assertion(
9232                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9233            ) {
9234                match _t {
9235                    alloy_sol_types::private::AssertTypeEq::<
9236                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9237                    >(_) => {}
9238                }
9239            }
9240            #[automatically_derived]
9241            #[doc(hidden)]
9242            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9243                fn from(value: epochStartBlockCall) -> Self {
9244                    ()
9245                }
9246            }
9247            #[automatically_derived]
9248            #[doc(hidden)]
9249            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9250                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9251                    Self
9252                }
9253            }
9254        }
9255        {
9256            #[doc(hidden)]
9257            #[allow(dead_code)]
9258            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9259            #[doc(hidden)]
9260            type UnderlyingRustTuple<'a> = (u64,);
9261            #[cfg(test)]
9262            #[allow(dead_code, unreachable_patterns)]
9263            fn _type_assertion(
9264                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9265            ) {
9266                match _t {
9267                    alloy_sol_types::private::AssertTypeEq::<
9268                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9269                    >(_) => {}
9270                }
9271            }
9272            #[automatically_derived]
9273            #[doc(hidden)]
9274            impl ::core::convert::From<epochStartBlockReturn>
9275            for UnderlyingRustTuple<'_> {
9276                fn from(value: epochStartBlockReturn) -> Self {
9277                    (value._0,)
9278                }
9279            }
9280            #[automatically_derived]
9281            #[doc(hidden)]
9282            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9283            for epochStartBlockReturn {
9284                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9285                    Self { _0: tuple.0 }
9286                }
9287            }
9288        }
9289        #[automatically_derived]
9290        impl alloy_sol_types::SolCall for epochStartBlockCall {
9291            type Parameters<'a> = ();
9292            type Token<'a> = <Self::Parameters<
9293                'a,
9294            > as alloy_sol_types::SolType>::Token<'a>;
9295            type Return = u64;
9296            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9297            type ReturnToken<'a> = <Self::ReturnTuple<
9298                'a,
9299            > as alloy_sol_types::SolType>::Token<'a>;
9300            const SIGNATURE: &'static str = "epochStartBlock()";
9301            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9302            #[inline]
9303            fn new<'a>(
9304                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9305            ) -> Self {
9306                tuple.into()
9307            }
9308            #[inline]
9309            fn tokenize(&self) -> Self::Token<'_> {
9310                ()
9311            }
9312            #[inline]
9313            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9314                (
9315                    <alloy::sol_types::sol_data::Uint<
9316                        64,
9317                    > as alloy_sol_types::SolType>::tokenize(ret),
9318                )
9319            }
9320            #[inline]
9321            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9322                <Self::ReturnTuple<
9323                    '_,
9324                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9325                    .map(|r| {
9326                        let r: epochStartBlockReturn = r.into();
9327                        r._0
9328                    })
9329            }
9330            #[inline]
9331            fn abi_decode_returns_validate(
9332                data: &[u8],
9333            ) -> alloy_sol_types::Result<Self::Return> {
9334                <Self::ReturnTuple<
9335                    '_,
9336                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9337                    .map(|r| {
9338                        let r: epochStartBlockReturn = r.into();
9339                        r._0
9340                    })
9341            }
9342        }
9343    };
9344    #[derive(serde::Serialize, serde::Deserialize)]
9345    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9346    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9347```solidity
9348function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9349```*/
9350    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9351    #[derive(Clone)]
9352    pub struct finalizedStateCall;
9353    #[derive(serde::Serialize, serde::Deserialize)]
9354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9355    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9356    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9357    #[derive(Clone)]
9358    pub struct finalizedStateReturn {
9359        #[allow(missing_docs)]
9360        pub viewNum: u64,
9361        #[allow(missing_docs)]
9362        pub blockHeight: u64,
9363        #[allow(missing_docs)]
9364        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9365    }
9366    #[allow(
9367        non_camel_case_types,
9368        non_snake_case,
9369        clippy::pub_underscore_fields,
9370        clippy::style
9371    )]
9372    const _: () = {
9373        use alloy::sol_types as alloy_sol_types;
9374        {
9375            #[doc(hidden)]
9376            #[allow(dead_code)]
9377            type UnderlyingSolTuple<'a> = ();
9378            #[doc(hidden)]
9379            type UnderlyingRustTuple<'a> = ();
9380            #[cfg(test)]
9381            #[allow(dead_code, unreachable_patterns)]
9382            fn _type_assertion(
9383                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9384            ) {
9385                match _t {
9386                    alloy_sol_types::private::AssertTypeEq::<
9387                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9388                    >(_) => {}
9389                }
9390            }
9391            #[automatically_derived]
9392            #[doc(hidden)]
9393            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9394                fn from(value: finalizedStateCall) -> Self {
9395                    ()
9396                }
9397            }
9398            #[automatically_derived]
9399            #[doc(hidden)]
9400            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9401                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9402                    Self
9403                }
9404            }
9405        }
9406        {
9407            #[doc(hidden)]
9408            #[allow(dead_code)]
9409            type UnderlyingSolTuple<'a> = (
9410                alloy::sol_types::sol_data::Uint<64>,
9411                alloy::sol_types::sol_data::Uint<64>,
9412                BN254::ScalarField,
9413            );
9414            #[doc(hidden)]
9415            type UnderlyingRustTuple<'a> = (
9416                u64,
9417                u64,
9418                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9419            );
9420            #[cfg(test)]
9421            #[allow(dead_code, unreachable_patterns)]
9422            fn _type_assertion(
9423                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9424            ) {
9425                match _t {
9426                    alloy_sol_types::private::AssertTypeEq::<
9427                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9428                    >(_) => {}
9429                }
9430            }
9431            #[automatically_derived]
9432            #[doc(hidden)]
9433            impl ::core::convert::From<finalizedStateReturn>
9434            for UnderlyingRustTuple<'_> {
9435                fn from(value: finalizedStateReturn) -> Self {
9436                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9437                }
9438            }
9439            #[automatically_derived]
9440            #[doc(hidden)]
9441            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9442            for finalizedStateReturn {
9443                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9444                    Self {
9445                        viewNum: tuple.0,
9446                        blockHeight: tuple.1,
9447                        blockCommRoot: tuple.2,
9448                    }
9449                }
9450            }
9451        }
9452        impl finalizedStateReturn {
9453            fn _tokenize(
9454                &self,
9455            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9456                (
9457                    <alloy::sol_types::sol_data::Uint<
9458                        64,
9459                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9460                    <alloy::sol_types::sol_data::Uint<
9461                        64,
9462                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9463                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9464                        &self.blockCommRoot,
9465                    ),
9466                )
9467            }
9468        }
9469        #[automatically_derived]
9470        impl alloy_sol_types::SolCall for finalizedStateCall {
9471            type Parameters<'a> = ();
9472            type Token<'a> = <Self::Parameters<
9473                'a,
9474            > as alloy_sol_types::SolType>::Token<'a>;
9475            type Return = finalizedStateReturn;
9476            type ReturnTuple<'a> = (
9477                alloy::sol_types::sol_data::Uint<64>,
9478                alloy::sol_types::sol_data::Uint<64>,
9479                BN254::ScalarField,
9480            );
9481            type ReturnToken<'a> = <Self::ReturnTuple<
9482                'a,
9483            > as alloy_sol_types::SolType>::Token<'a>;
9484            const SIGNATURE: &'static str = "finalizedState()";
9485            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9486            #[inline]
9487            fn new<'a>(
9488                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9489            ) -> Self {
9490                tuple.into()
9491            }
9492            #[inline]
9493            fn tokenize(&self) -> Self::Token<'_> {
9494                ()
9495            }
9496            #[inline]
9497            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9498                finalizedStateReturn::_tokenize(ret)
9499            }
9500            #[inline]
9501            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9502                <Self::ReturnTuple<
9503                    '_,
9504                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9505                    .map(Into::into)
9506            }
9507            #[inline]
9508            fn abi_decode_returns_validate(
9509                data: &[u8],
9510            ) -> alloy_sol_types::Result<Self::Return> {
9511                <Self::ReturnTuple<
9512                    '_,
9513                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9514                    .map(Into::into)
9515            }
9516        }
9517    };
9518    #[derive(serde::Serialize, serde::Deserialize)]
9519    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9520    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9521```solidity
9522function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9523```*/
9524    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9525    #[derive(Clone)]
9526    pub struct genesisStakeTableStateCall;
9527    #[derive(serde::Serialize, serde::Deserialize)]
9528    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9529    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9530    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9531    #[derive(Clone)]
9532    pub struct genesisStakeTableStateReturn {
9533        #[allow(missing_docs)]
9534        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9535        #[allow(missing_docs)]
9536        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9537        #[allow(missing_docs)]
9538        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9539        #[allow(missing_docs)]
9540        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9541    }
9542    #[allow(
9543        non_camel_case_types,
9544        non_snake_case,
9545        clippy::pub_underscore_fields,
9546        clippy::style
9547    )]
9548    const _: () = {
9549        use alloy::sol_types as alloy_sol_types;
9550        {
9551            #[doc(hidden)]
9552            #[allow(dead_code)]
9553            type UnderlyingSolTuple<'a> = ();
9554            #[doc(hidden)]
9555            type UnderlyingRustTuple<'a> = ();
9556            #[cfg(test)]
9557            #[allow(dead_code, unreachable_patterns)]
9558            fn _type_assertion(
9559                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9560            ) {
9561                match _t {
9562                    alloy_sol_types::private::AssertTypeEq::<
9563                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9564                    >(_) => {}
9565                }
9566            }
9567            #[automatically_derived]
9568            #[doc(hidden)]
9569            impl ::core::convert::From<genesisStakeTableStateCall>
9570            for UnderlyingRustTuple<'_> {
9571                fn from(value: genesisStakeTableStateCall) -> Self {
9572                    ()
9573                }
9574            }
9575            #[automatically_derived]
9576            #[doc(hidden)]
9577            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9578            for genesisStakeTableStateCall {
9579                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9580                    Self
9581                }
9582            }
9583        }
9584        {
9585            #[doc(hidden)]
9586            #[allow(dead_code)]
9587            type UnderlyingSolTuple<'a> = (
9588                alloy::sol_types::sol_data::Uint<256>,
9589                BN254::ScalarField,
9590                BN254::ScalarField,
9591                BN254::ScalarField,
9592            );
9593            #[doc(hidden)]
9594            type UnderlyingRustTuple<'a> = (
9595                alloy::sol_types::private::primitives::aliases::U256,
9596                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9597                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9598                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9599            );
9600            #[cfg(test)]
9601            #[allow(dead_code, unreachable_patterns)]
9602            fn _type_assertion(
9603                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9604            ) {
9605                match _t {
9606                    alloy_sol_types::private::AssertTypeEq::<
9607                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9608                    >(_) => {}
9609                }
9610            }
9611            #[automatically_derived]
9612            #[doc(hidden)]
9613            impl ::core::convert::From<genesisStakeTableStateReturn>
9614            for UnderlyingRustTuple<'_> {
9615                fn from(value: genesisStakeTableStateReturn) -> Self {
9616                    (
9617                        value.threshold,
9618                        value.blsKeyComm,
9619                        value.schnorrKeyComm,
9620                        value.amountComm,
9621                    )
9622                }
9623            }
9624            #[automatically_derived]
9625            #[doc(hidden)]
9626            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9627            for genesisStakeTableStateReturn {
9628                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9629                    Self {
9630                        threshold: tuple.0,
9631                        blsKeyComm: tuple.1,
9632                        schnorrKeyComm: tuple.2,
9633                        amountComm: tuple.3,
9634                    }
9635                }
9636            }
9637        }
9638        impl genesisStakeTableStateReturn {
9639            fn _tokenize(
9640                &self,
9641            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9642                '_,
9643            > {
9644                (
9645                    <alloy::sol_types::sol_data::Uint<
9646                        256,
9647                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9648                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9649                        &self.blsKeyComm,
9650                    ),
9651                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9652                        &self.schnorrKeyComm,
9653                    ),
9654                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9655                        &self.amountComm,
9656                    ),
9657                )
9658            }
9659        }
9660        #[automatically_derived]
9661        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9662            type Parameters<'a> = ();
9663            type Token<'a> = <Self::Parameters<
9664                'a,
9665            > as alloy_sol_types::SolType>::Token<'a>;
9666            type Return = genesisStakeTableStateReturn;
9667            type ReturnTuple<'a> = (
9668                alloy::sol_types::sol_data::Uint<256>,
9669                BN254::ScalarField,
9670                BN254::ScalarField,
9671                BN254::ScalarField,
9672            );
9673            type ReturnToken<'a> = <Self::ReturnTuple<
9674                'a,
9675            > as alloy_sol_types::SolType>::Token<'a>;
9676            const SIGNATURE: &'static str = "genesisStakeTableState()";
9677            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9678            #[inline]
9679            fn new<'a>(
9680                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9681            ) -> Self {
9682                tuple.into()
9683            }
9684            #[inline]
9685            fn tokenize(&self) -> Self::Token<'_> {
9686                ()
9687            }
9688            #[inline]
9689            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9690                genesisStakeTableStateReturn::_tokenize(ret)
9691            }
9692            #[inline]
9693            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9694                <Self::ReturnTuple<
9695                    '_,
9696                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9697                    .map(Into::into)
9698            }
9699            #[inline]
9700            fn abi_decode_returns_validate(
9701                data: &[u8],
9702            ) -> alloy_sol_types::Result<Self::Return> {
9703                <Self::ReturnTuple<
9704                    '_,
9705                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9706                    .map(Into::into)
9707            }
9708        }
9709    };
9710    #[derive(serde::Serialize, serde::Deserialize)]
9711    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9712    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9713```solidity
9714function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9715```*/
9716    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9717    #[derive(Clone)]
9718    pub struct genesisStateCall;
9719    #[derive(serde::Serialize, serde::Deserialize)]
9720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9721    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9722    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9723    #[derive(Clone)]
9724    pub struct genesisStateReturn {
9725        #[allow(missing_docs)]
9726        pub viewNum: u64,
9727        #[allow(missing_docs)]
9728        pub blockHeight: u64,
9729        #[allow(missing_docs)]
9730        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9731    }
9732    #[allow(
9733        non_camel_case_types,
9734        non_snake_case,
9735        clippy::pub_underscore_fields,
9736        clippy::style
9737    )]
9738    const _: () = {
9739        use alloy::sol_types as alloy_sol_types;
9740        {
9741            #[doc(hidden)]
9742            #[allow(dead_code)]
9743            type UnderlyingSolTuple<'a> = ();
9744            #[doc(hidden)]
9745            type UnderlyingRustTuple<'a> = ();
9746            #[cfg(test)]
9747            #[allow(dead_code, unreachable_patterns)]
9748            fn _type_assertion(
9749                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9750            ) {
9751                match _t {
9752                    alloy_sol_types::private::AssertTypeEq::<
9753                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9754                    >(_) => {}
9755                }
9756            }
9757            #[automatically_derived]
9758            #[doc(hidden)]
9759            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9760                fn from(value: genesisStateCall) -> Self {
9761                    ()
9762                }
9763            }
9764            #[automatically_derived]
9765            #[doc(hidden)]
9766            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9767                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9768                    Self
9769                }
9770            }
9771        }
9772        {
9773            #[doc(hidden)]
9774            #[allow(dead_code)]
9775            type UnderlyingSolTuple<'a> = (
9776                alloy::sol_types::sol_data::Uint<64>,
9777                alloy::sol_types::sol_data::Uint<64>,
9778                BN254::ScalarField,
9779            );
9780            #[doc(hidden)]
9781            type UnderlyingRustTuple<'a> = (
9782                u64,
9783                u64,
9784                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9785            );
9786            #[cfg(test)]
9787            #[allow(dead_code, unreachable_patterns)]
9788            fn _type_assertion(
9789                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9790            ) {
9791                match _t {
9792                    alloy_sol_types::private::AssertTypeEq::<
9793                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9794                    >(_) => {}
9795                }
9796            }
9797            #[automatically_derived]
9798            #[doc(hidden)]
9799            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9800                fn from(value: genesisStateReturn) -> Self {
9801                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9802                }
9803            }
9804            #[automatically_derived]
9805            #[doc(hidden)]
9806            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9807                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9808                    Self {
9809                        viewNum: tuple.0,
9810                        blockHeight: tuple.1,
9811                        blockCommRoot: tuple.2,
9812                    }
9813                }
9814            }
9815        }
9816        impl genesisStateReturn {
9817            fn _tokenize(
9818                &self,
9819            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9820                (
9821                    <alloy::sol_types::sol_data::Uint<
9822                        64,
9823                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9824                    <alloy::sol_types::sol_data::Uint<
9825                        64,
9826                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9827                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9828                        &self.blockCommRoot,
9829                    ),
9830                )
9831            }
9832        }
9833        #[automatically_derived]
9834        impl alloy_sol_types::SolCall for genesisStateCall {
9835            type Parameters<'a> = ();
9836            type Token<'a> = <Self::Parameters<
9837                'a,
9838            > as alloy_sol_types::SolType>::Token<'a>;
9839            type Return = genesisStateReturn;
9840            type ReturnTuple<'a> = (
9841                alloy::sol_types::sol_data::Uint<64>,
9842                alloy::sol_types::sol_data::Uint<64>,
9843                BN254::ScalarField,
9844            );
9845            type ReturnToken<'a> = <Self::ReturnTuple<
9846                'a,
9847            > as alloy_sol_types::SolType>::Token<'a>;
9848            const SIGNATURE: &'static str = "genesisState()";
9849            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9850            #[inline]
9851            fn new<'a>(
9852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9853            ) -> Self {
9854                tuple.into()
9855            }
9856            #[inline]
9857            fn tokenize(&self) -> Self::Token<'_> {
9858                ()
9859            }
9860            #[inline]
9861            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9862                genesisStateReturn::_tokenize(ret)
9863            }
9864            #[inline]
9865            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9866                <Self::ReturnTuple<
9867                    '_,
9868                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9869                    .map(Into::into)
9870            }
9871            #[inline]
9872            fn abi_decode_returns_validate(
9873                data: &[u8],
9874            ) -> alloy_sol_types::Result<Self::Return> {
9875                <Self::ReturnTuple<
9876                    '_,
9877                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9878                    .map(Into::into)
9879            }
9880        }
9881    };
9882    #[derive(serde::Serialize, serde::Deserialize)]
9883    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9884    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9885```solidity
9886function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9887```*/
9888    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9889    #[derive(Clone)]
9890    pub struct getHotShotCommitmentCall {
9891        #[allow(missing_docs)]
9892        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9893    }
9894    #[derive(serde::Serialize, serde::Deserialize)]
9895    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9896    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9897    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9898    #[derive(Clone)]
9899    pub struct getHotShotCommitmentReturn {
9900        #[allow(missing_docs)]
9901        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9902        #[allow(missing_docs)]
9903        pub hotshotBlockHeight: u64,
9904    }
9905    #[allow(
9906        non_camel_case_types,
9907        non_snake_case,
9908        clippy::pub_underscore_fields,
9909        clippy::style
9910    )]
9911    const _: () = {
9912        use alloy::sol_types as alloy_sol_types;
9913        {
9914            #[doc(hidden)]
9915            #[allow(dead_code)]
9916            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9917            #[doc(hidden)]
9918            type UnderlyingRustTuple<'a> = (
9919                alloy::sol_types::private::primitives::aliases::U256,
9920            );
9921            #[cfg(test)]
9922            #[allow(dead_code, unreachable_patterns)]
9923            fn _type_assertion(
9924                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9925            ) {
9926                match _t {
9927                    alloy_sol_types::private::AssertTypeEq::<
9928                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9929                    >(_) => {}
9930                }
9931            }
9932            #[automatically_derived]
9933            #[doc(hidden)]
9934            impl ::core::convert::From<getHotShotCommitmentCall>
9935            for UnderlyingRustTuple<'_> {
9936                fn from(value: getHotShotCommitmentCall) -> Self {
9937                    (value.hotShotBlockHeight,)
9938                }
9939            }
9940            #[automatically_derived]
9941            #[doc(hidden)]
9942            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9943            for getHotShotCommitmentCall {
9944                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9945                    Self {
9946                        hotShotBlockHeight: tuple.0,
9947                    }
9948                }
9949            }
9950        }
9951        {
9952            #[doc(hidden)]
9953            #[allow(dead_code)]
9954            type UnderlyingSolTuple<'a> = (
9955                BN254::ScalarField,
9956                alloy::sol_types::sol_data::Uint<64>,
9957            );
9958            #[doc(hidden)]
9959            type UnderlyingRustTuple<'a> = (
9960                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9961                u64,
9962            );
9963            #[cfg(test)]
9964            #[allow(dead_code, unreachable_patterns)]
9965            fn _type_assertion(
9966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9967            ) {
9968                match _t {
9969                    alloy_sol_types::private::AssertTypeEq::<
9970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9971                    >(_) => {}
9972                }
9973            }
9974            #[automatically_derived]
9975            #[doc(hidden)]
9976            impl ::core::convert::From<getHotShotCommitmentReturn>
9977            for UnderlyingRustTuple<'_> {
9978                fn from(value: getHotShotCommitmentReturn) -> Self {
9979                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9980                }
9981            }
9982            #[automatically_derived]
9983            #[doc(hidden)]
9984            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9985            for getHotShotCommitmentReturn {
9986                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9987                    Self {
9988                        hotShotBlockCommRoot: tuple.0,
9989                        hotshotBlockHeight: tuple.1,
9990                    }
9991                }
9992            }
9993        }
9994        impl getHotShotCommitmentReturn {
9995            fn _tokenize(
9996                &self,
9997            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
9998                '_,
9999            > {
10000                (
10001                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10002                        &self.hotShotBlockCommRoot,
10003                    ),
10004                    <alloy::sol_types::sol_data::Uint<
10005                        64,
10006                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10007                )
10008            }
10009        }
10010        #[automatically_derived]
10011        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10012            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10013            type Token<'a> = <Self::Parameters<
10014                'a,
10015            > as alloy_sol_types::SolType>::Token<'a>;
10016            type Return = getHotShotCommitmentReturn;
10017            type ReturnTuple<'a> = (
10018                BN254::ScalarField,
10019                alloy::sol_types::sol_data::Uint<64>,
10020            );
10021            type ReturnToken<'a> = <Self::ReturnTuple<
10022                'a,
10023            > as alloy_sol_types::SolType>::Token<'a>;
10024            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10025            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10026            #[inline]
10027            fn new<'a>(
10028                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10029            ) -> Self {
10030                tuple.into()
10031            }
10032            #[inline]
10033            fn tokenize(&self) -> Self::Token<'_> {
10034                (
10035                    <alloy::sol_types::sol_data::Uint<
10036                        256,
10037                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10038                )
10039            }
10040            #[inline]
10041            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10042                getHotShotCommitmentReturn::_tokenize(ret)
10043            }
10044            #[inline]
10045            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10046                <Self::ReturnTuple<
10047                    '_,
10048                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10049                    .map(Into::into)
10050            }
10051            #[inline]
10052            fn abi_decode_returns_validate(
10053                data: &[u8],
10054            ) -> alloy_sol_types::Result<Self::Return> {
10055                <Self::ReturnTuple<
10056                    '_,
10057                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10058                    .map(Into::into)
10059            }
10060        }
10061    };
10062    #[derive(serde::Serialize, serde::Deserialize)]
10063    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10064    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10065```solidity
10066function getStateHistoryCount() external view returns (uint256);
10067```*/
10068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10069    #[derive(Clone)]
10070    pub struct getStateHistoryCountCall;
10071    #[derive(serde::Serialize, serde::Deserialize)]
10072    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10073    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10074    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10075    #[derive(Clone)]
10076    pub struct getStateHistoryCountReturn {
10077        #[allow(missing_docs)]
10078        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10079    }
10080    #[allow(
10081        non_camel_case_types,
10082        non_snake_case,
10083        clippy::pub_underscore_fields,
10084        clippy::style
10085    )]
10086    const _: () = {
10087        use alloy::sol_types as alloy_sol_types;
10088        {
10089            #[doc(hidden)]
10090            #[allow(dead_code)]
10091            type UnderlyingSolTuple<'a> = ();
10092            #[doc(hidden)]
10093            type UnderlyingRustTuple<'a> = ();
10094            #[cfg(test)]
10095            #[allow(dead_code, unreachable_patterns)]
10096            fn _type_assertion(
10097                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10098            ) {
10099                match _t {
10100                    alloy_sol_types::private::AssertTypeEq::<
10101                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10102                    >(_) => {}
10103                }
10104            }
10105            #[automatically_derived]
10106            #[doc(hidden)]
10107            impl ::core::convert::From<getStateHistoryCountCall>
10108            for UnderlyingRustTuple<'_> {
10109                fn from(value: getStateHistoryCountCall) -> Self {
10110                    ()
10111                }
10112            }
10113            #[automatically_derived]
10114            #[doc(hidden)]
10115            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10116            for getStateHistoryCountCall {
10117                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10118                    Self
10119                }
10120            }
10121        }
10122        {
10123            #[doc(hidden)]
10124            #[allow(dead_code)]
10125            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10126            #[doc(hidden)]
10127            type UnderlyingRustTuple<'a> = (
10128                alloy::sol_types::private::primitives::aliases::U256,
10129            );
10130            #[cfg(test)]
10131            #[allow(dead_code, unreachable_patterns)]
10132            fn _type_assertion(
10133                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10134            ) {
10135                match _t {
10136                    alloy_sol_types::private::AssertTypeEq::<
10137                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10138                    >(_) => {}
10139                }
10140            }
10141            #[automatically_derived]
10142            #[doc(hidden)]
10143            impl ::core::convert::From<getStateHistoryCountReturn>
10144            for UnderlyingRustTuple<'_> {
10145                fn from(value: getStateHistoryCountReturn) -> Self {
10146                    (value._0,)
10147                }
10148            }
10149            #[automatically_derived]
10150            #[doc(hidden)]
10151            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10152            for getStateHistoryCountReturn {
10153                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10154                    Self { _0: tuple.0 }
10155                }
10156            }
10157        }
10158        #[automatically_derived]
10159        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10160            type Parameters<'a> = ();
10161            type Token<'a> = <Self::Parameters<
10162                'a,
10163            > as alloy_sol_types::SolType>::Token<'a>;
10164            type Return = alloy::sol_types::private::primitives::aliases::U256;
10165            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10166            type ReturnToken<'a> = <Self::ReturnTuple<
10167                'a,
10168            > as alloy_sol_types::SolType>::Token<'a>;
10169            const SIGNATURE: &'static str = "getStateHistoryCount()";
10170            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10171            #[inline]
10172            fn new<'a>(
10173                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10174            ) -> Self {
10175                tuple.into()
10176            }
10177            #[inline]
10178            fn tokenize(&self) -> Self::Token<'_> {
10179                ()
10180            }
10181            #[inline]
10182            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10183                (
10184                    <alloy::sol_types::sol_data::Uint<
10185                        256,
10186                    > as alloy_sol_types::SolType>::tokenize(ret),
10187                )
10188            }
10189            #[inline]
10190            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10191                <Self::ReturnTuple<
10192                    '_,
10193                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10194                    .map(|r| {
10195                        let r: getStateHistoryCountReturn = r.into();
10196                        r._0
10197                    })
10198            }
10199            #[inline]
10200            fn abi_decode_returns_validate(
10201                data: &[u8],
10202            ) -> alloy_sol_types::Result<Self::Return> {
10203                <Self::ReturnTuple<
10204                    '_,
10205                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10206                    .map(|r| {
10207                        let r: getStateHistoryCountReturn = r.into();
10208                        r._0
10209                    })
10210            }
10211        }
10212    };
10213    #[derive(serde::Serialize, serde::Deserialize)]
10214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10215    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10216```solidity
10217function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10218```*/
10219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10220    #[derive(Clone)]
10221    pub struct getVersionCall;
10222    #[derive(serde::Serialize, serde::Deserialize)]
10223    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10224    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10225    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10226    #[derive(Clone)]
10227    pub struct getVersionReturn {
10228        #[allow(missing_docs)]
10229        pub majorVersion: u8,
10230        #[allow(missing_docs)]
10231        pub minorVersion: u8,
10232        #[allow(missing_docs)]
10233        pub patchVersion: u8,
10234    }
10235    #[allow(
10236        non_camel_case_types,
10237        non_snake_case,
10238        clippy::pub_underscore_fields,
10239        clippy::style
10240    )]
10241    const _: () = {
10242        use alloy::sol_types as alloy_sol_types;
10243        {
10244            #[doc(hidden)]
10245            #[allow(dead_code)]
10246            type UnderlyingSolTuple<'a> = ();
10247            #[doc(hidden)]
10248            type UnderlyingRustTuple<'a> = ();
10249            #[cfg(test)]
10250            #[allow(dead_code, unreachable_patterns)]
10251            fn _type_assertion(
10252                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10253            ) {
10254                match _t {
10255                    alloy_sol_types::private::AssertTypeEq::<
10256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10257                    >(_) => {}
10258                }
10259            }
10260            #[automatically_derived]
10261            #[doc(hidden)]
10262            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10263                fn from(value: getVersionCall) -> Self {
10264                    ()
10265                }
10266            }
10267            #[automatically_derived]
10268            #[doc(hidden)]
10269            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10270                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10271                    Self
10272                }
10273            }
10274        }
10275        {
10276            #[doc(hidden)]
10277            #[allow(dead_code)]
10278            type UnderlyingSolTuple<'a> = (
10279                alloy::sol_types::sol_data::Uint<8>,
10280                alloy::sol_types::sol_data::Uint<8>,
10281                alloy::sol_types::sol_data::Uint<8>,
10282            );
10283            #[doc(hidden)]
10284            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10285            #[cfg(test)]
10286            #[allow(dead_code, unreachable_patterns)]
10287            fn _type_assertion(
10288                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10289            ) {
10290                match _t {
10291                    alloy_sol_types::private::AssertTypeEq::<
10292                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10293                    >(_) => {}
10294                }
10295            }
10296            #[automatically_derived]
10297            #[doc(hidden)]
10298            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10299                fn from(value: getVersionReturn) -> Self {
10300                    (value.majorVersion, value.minorVersion, value.patchVersion)
10301                }
10302            }
10303            #[automatically_derived]
10304            #[doc(hidden)]
10305            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10307                    Self {
10308                        majorVersion: tuple.0,
10309                        minorVersion: tuple.1,
10310                        patchVersion: tuple.2,
10311                    }
10312                }
10313            }
10314        }
10315        impl getVersionReturn {
10316            fn _tokenize(
10317                &self,
10318            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10319                (
10320                    <alloy::sol_types::sol_data::Uint<
10321                        8,
10322                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10323                    <alloy::sol_types::sol_data::Uint<
10324                        8,
10325                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10326                    <alloy::sol_types::sol_data::Uint<
10327                        8,
10328                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10329                )
10330            }
10331        }
10332        #[automatically_derived]
10333        impl alloy_sol_types::SolCall for getVersionCall {
10334            type Parameters<'a> = ();
10335            type Token<'a> = <Self::Parameters<
10336                'a,
10337            > as alloy_sol_types::SolType>::Token<'a>;
10338            type Return = getVersionReturn;
10339            type ReturnTuple<'a> = (
10340                alloy::sol_types::sol_data::Uint<8>,
10341                alloy::sol_types::sol_data::Uint<8>,
10342                alloy::sol_types::sol_data::Uint<8>,
10343            );
10344            type ReturnToken<'a> = <Self::ReturnTuple<
10345                'a,
10346            > as alloy_sol_types::SolType>::Token<'a>;
10347            const SIGNATURE: &'static str = "getVersion()";
10348            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10349            #[inline]
10350            fn new<'a>(
10351                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10352            ) -> Self {
10353                tuple.into()
10354            }
10355            #[inline]
10356            fn tokenize(&self) -> Self::Token<'_> {
10357                ()
10358            }
10359            #[inline]
10360            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10361                getVersionReturn::_tokenize(ret)
10362            }
10363            #[inline]
10364            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10365                <Self::ReturnTuple<
10366                    '_,
10367                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10368                    .map(Into::into)
10369            }
10370            #[inline]
10371            fn abi_decode_returns_validate(
10372                data: &[u8],
10373            ) -> alloy_sol_types::Result<Self::Return> {
10374                <Self::ReturnTuple<
10375                    '_,
10376                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10377                    .map(Into::into)
10378            }
10379        }
10380    };
10381    #[derive(serde::Serialize, serde::Deserialize)]
10382    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10383    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10384```solidity
10385function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10386```*/
10387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10388    #[derive(Clone)]
10389    pub struct initializeCall {
10390        #[allow(missing_docs)]
10391        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10392        #[allow(missing_docs)]
10393        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10394        #[allow(missing_docs)]
10395        pub _stateHistoryRetentionPeriod: u32,
10396        #[allow(missing_docs)]
10397        pub owner: alloy::sol_types::private::Address,
10398    }
10399    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10400    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10401    #[derive(Clone)]
10402    pub struct initializeReturn {}
10403    #[allow(
10404        non_camel_case_types,
10405        non_snake_case,
10406        clippy::pub_underscore_fields,
10407        clippy::style
10408    )]
10409    const _: () = {
10410        use alloy::sol_types as alloy_sol_types;
10411        {
10412            #[doc(hidden)]
10413            #[allow(dead_code)]
10414            type UnderlyingSolTuple<'a> = (
10415                LightClient::LightClientState,
10416                LightClient::StakeTableState,
10417                alloy::sol_types::sol_data::Uint<32>,
10418                alloy::sol_types::sol_data::Address,
10419            );
10420            #[doc(hidden)]
10421            type UnderlyingRustTuple<'a> = (
10422                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10423                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10424                u32,
10425                alloy::sol_types::private::Address,
10426            );
10427            #[cfg(test)]
10428            #[allow(dead_code, unreachable_patterns)]
10429            fn _type_assertion(
10430                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10431            ) {
10432                match _t {
10433                    alloy_sol_types::private::AssertTypeEq::<
10434                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10435                    >(_) => {}
10436                }
10437            }
10438            #[automatically_derived]
10439            #[doc(hidden)]
10440            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10441                fn from(value: initializeCall) -> Self {
10442                    (
10443                        value._genesis,
10444                        value._genesisStakeTableState,
10445                        value._stateHistoryRetentionPeriod,
10446                        value.owner,
10447                    )
10448                }
10449            }
10450            #[automatically_derived]
10451            #[doc(hidden)]
10452            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10453                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10454                    Self {
10455                        _genesis: tuple.0,
10456                        _genesisStakeTableState: tuple.1,
10457                        _stateHistoryRetentionPeriod: tuple.2,
10458                        owner: tuple.3,
10459                    }
10460                }
10461            }
10462        }
10463        {
10464            #[doc(hidden)]
10465            #[allow(dead_code)]
10466            type UnderlyingSolTuple<'a> = ();
10467            #[doc(hidden)]
10468            type UnderlyingRustTuple<'a> = ();
10469            #[cfg(test)]
10470            #[allow(dead_code, unreachable_patterns)]
10471            fn _type_assertion(
10472                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10473            ) {
10474                match _t {
10475                    alloy_sol_types::private::AssertTypeEq::<
10476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10477                    >(_) => {}
10478                }
10479            }
10480            #[automatically_derived]
10481            #[doc(hidden)]
10482            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10483                fn from(value: initializeReturn) -> Self {
10484                    ()
10485                }
10486            }
10487            #[automatically_derived]
10488            #[doc(hidden)]
10489            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10490                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10491                    Self {}
10492                }
10493            }
10494        }
10495        impl initializeReturn {
10496            fn _tokenize(
10497                &self,
10498            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10499                ()
10500            }
10501        }
10502        #[automatically_derived]
10503        impl alloy_sol_types::SolCall for initializeCall {
10504            type Parameters<'a> = (
10505                LightClient::LightClientState,
10506                LightClient::StakeTableState,
10507                alloy::sol_types::sol_data::Uint<32>,
10508                alloy::sol_types::sol_data::Address,
10509            );
10510            type Token<'a> = <Self::Parameters<
10511                'a,
10512            > as alloy_sol_types::SolType>::Token<'a>;
10513            type Return = initializeReturn;
10514            type ReturnTuple<'a> = ();
10515            type ReturnToken<'a> = <Self::ReturnTuple<
10516                'a,
10517            > as alloy_sol_types::SolType>::Token<'a>;
10518            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10519            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10520            #[inline]
10521            fn new<'a>(
10522                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10523            ) -> Self {
10524                tuple.into()
10525            }
10526            #[inline]
10527            fn tokenize(&self) -> Self::Token<'_> {
10528                (
10529                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10530                        &self._genesis,
10531                    ),
10532                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10533                        &self._genesisStakeTableState,
10534                    ),
10535                    <alloy::sol_types::sol_data::Uint<
10536                        32,
10537                    > as alloy_sol_types::SolType>::tokenize(
10538                        &self._stateHistoryRetentionPeriod,
10539                    ),
10540                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10541                        &self.owner,
10542                    ),
10543                )
10544            }
10545            #[inline]
10546            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10547                initializeReturn::_tokenize(ret)
10548            }
10549            #[inline]
10550            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10551                <Self::ReturnTuple<
10552                    '_,
10553                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10554                    .map(Into::into)
10555            }
10556            #[inline]
10557            fn abi_decode_returns_validate(
10558                data: &[u8],
10559            ) -> alloy_sol_types::Result<Self::Return> {
10560                <Self::ReturnTuple<
10561                    '_,
10562                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10563                    .map(Into::into)
10564            }
10565        }
10566    };
10567    #[derive(serde::Serialize, serde::Deserialize)]
10568    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10569    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10570```solidity
10571function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10572```*/
10573    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10574    #[derive(Clone)]
10575    pub struct initializeV2Call {
10576        #[allow(missing_docs)]
10577        pub _blocksPerEpoch: u64,
10578        #[allow(missing_docs)]
10579        pub _epochStartBlock: u64,
10580    }
10581    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10583    #[derive(Clone)]
10584    pub struct initializeV2Return {}
10585    #[allow(
10586        non_camel_case_types,
10587        non_snake_case,
10588        clippy::pub_underscore_fields,
10589        clippy::style
10590    )]
10591    const _: () = {
10592        use alloy::sol_types as alloy_sol_types;
10593        {
10594            #[doc(hidden)]
10595            #[allow(dead_code)]
10596            type UnderlyingSolTuple<'a> = (
10597                alloy::sol_types::sol_data::Uint<64>,
10598                alloy::sol_types::sol_data::Uint<64>,
10599            );
10600            #[doc(hidden)]
10601            type UnderlyingRustTuple<'a> = (u64, u64);
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<initializeV2Call> for UnderlyingRustTuple<'_> {
10616                fn from(value: initializeV2Call) -> Self {
10617                    (value._blocksPerEpoch, value._epochStartBlock)
10618                }
10619            }
10620            #[automatically_derived]
10621            #[doc(hidden)]
10622            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10623                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10624                    Self {
10625                        _blocksPerEpoch: tuple.0,
10626                        _epochStartBlock: tuple.1,
10627                    }
10628                }
10629            }
10630        }
10631        {
10632            #[doc(hidden)]
10633            #[allow(dead_code)]
10634            type UnderlyingSolTuple<'a> = ();
10635            #[doc(hidden)]
10636            type UnderlyingRustTuple<'a> = ();
10637            #[cfg(test)]
10638            #[allow(dead_code, unreachable_patterns)]
10639            fn _type_assertion(
10640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10641            ) {
10642                match _t {
10643                    alloy_sol_types::private::AssertTypeEq::<
10644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10645                    >(_) => {}
10646                }
10647            }
10648            #[automatically_derived]
10649            #[doc(hidden)]
10650            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10651                fn from(value: initializeV2Return) -> Self {
10652                    ()
10653                }
10654            }
10655            #[automatically_derived]
10656            #[doc(hidden)]
10657            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10659                    Self {}
10660                }
10661            }
10662        }
10663        impl initializeV2Return {
10664            fn _tokenize(
10665                &self,
10666            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10667                ()
10668            }
10669        }
10670        #[automatically_derived]
10671        impl alloy_sol_types::SolCall for initializeV2Call {
10672            type Parameters<'a> = (
10673                alloy::sol_types::sol_data::Uint<64>,
10674                alloy::sol_types::sol_data::Uint<64>,
10675            );
10676            type Token<'a> = <Self::Parameters<
10677                'a,
10678            > as alloy_sol_types::SolType>::Token<'a>;
10679            type Return = initializeV2Return;
10680            type ReturnTuple<'a> = ();
10681            type ReturnToken<'a> = <Self::ReturnTuple<
10682                'a,
10683            > as alloy_sol_types::SolType>::Token<'a>;
10684            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10685            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10686            #[inline]
10687            fn new<'a>(
10688                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10689            ) -> Self {
10690                tuple.into()
10691            }
10692            #[inline]
10693            fn tokenize(&self) -> Self::Token<'_> {
10694                (
10695                    <alloy::sol_types::sol_data::Uint<
10696                        64,
10697                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10698                    <alloy::sol_types::sol_data::Uint<
10699                        64,
10700                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10701                )
10702            }
10703            #[inline]
10704            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10705                initializeV2Return::_tokenize(ret)
10706            }
10707            #[inline]
10708            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10709                <Self::ReturnTuple<
10710                    '_,
10711                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10712                    .map(Into::into)
10713            }
10714            #[inline]
10715            fn abi_decode_returns_validate(
10716                data: &[u8],
10717            ) -> alloy_sol_types::Result<Self::Return> {
10718                <Self::ReturnTuple<
10719                    '_,
10720                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10721                    .map(Into::into)
10722            }
10723        }
10724    };
10725    #[derive(serde::Serialize, serde::Deserialize)]
10726    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10727    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
10728```solidity
10729function initializeV3() external;
10730```*/
10731    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10732    #[derive(Clone)]
10733    pub struct initializeV3Call;
10734    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
10735    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10736    #[derive(Clone)]
10737    pub struct initializeV3Return {}
10738    #[allow(
10739        non_camel_case_types,
10740        non_snake_case,
10741        clippy::pub_underscore_fields,
10742        clippy::style
10743    )]
10744    const _: () = {
10745        use alloy::sol_types as alloy_sol_types;
10746        {
10747            #[doc(hidden)]
10748            #[allow(dead_code)]
10749            type UnderlyingSolTuple<'a> = ();
10750            #[doc(hidden)]
10751            type UnderlyingRustTuple<'a> = ();
10752            #[cfg(test)]
10753            #[allow(dead_code, unreachable_patterns)]
10754            fn _type_assertion(
10755                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10756            ) {
10757                match _t {
10758                    alloy_sol_types::private::AssertTypeEq::<
10759                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10760                    >(_) => {}
10761                }
10762            }
10763            #[automatically_derived]
10764            #[doc(hidden)]
10765            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
10766                fn from(value: initializeV3Call) -> Self {
10767                    ()
10768                }
10769            }
10770            #[automatically_derived]
10771            #[doc(hidden)]
10772            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
10773                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10774                    Self
10775                }
10776            }
10777        }
10778        {
10779            #[doc(hidden)]
10780            #[allow(dead_code)]
10781            type UnderlyingSolTuple<'a> = ();
10782            #[doc(hidden)]
10783            type UnderlyingRustTuple<'a> = ();
10784            #[cfg(test)]
10785            #[allow(dead_code, unreachable_patterns)]
10786            fn _type_assertion(
10787                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10788            ) {
10789                match _t {
10790                    alloy_sol_types::private::AssertTypeEq::<
10791                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10792                    >(_) => {}
10793                }
10794            }
10795            #[automatically_derived]
10796            #[doc(hidden)]
10797            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
10798                fn from(value: initializeV3Return) -> Self {
10799                    ()
10800                }
10801            }
10802            #[automatically_derived]
10803            #[doc(hidden)]
10804            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
10805                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10806                    Self {}
10807                }
10808            }
10809        }
10810        impl initializeV3Return {
10811            fn _tokenize(
10812                &self,
10813            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10814                ()
10815            }
10816        }
10817        #[automatically_derived]
10818        impl alloy_sol_types::SolCall for initializeV3Call {
10819            type Parameters<'a> = ();
10820            type Token<'a> = <Self::Parameters<
10821                'a,
10822            > as alloy_sol_types::SolType>::Token<'a>;
10823            type Return = initializeV3Return;
10824            type ReturnTuple<'a> = ();
10825            type ReturnToken<'a> = <Self::ReturnTuple<
10826                'a,
10827            > as alloy_sol_types::SolType>::Token<'a>;
10828            const SIGNATURE: &'static str = "initializeV3()";
10829            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
10830            #[inline]
10831            fn new<'a>(
10832                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10833            ) -> Self {
10834                tuple.into()
10835            }
10836            #[inline]
10837            fn tokenize(&self) -> Self::Token<'_> {
10838                ()
10839            }
10840            #[inline]
10841            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10842                initializeV3Return::_tokenize(ret)
10843            }
10844            #[inline]
10845            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10846                <Self::ReturnTuple<
10847                    '_,
10848                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10849                    .map(Into::into)
10850            }
10851            #[inline]
10852            fn abi_decode_returns_validate(
10853                data: &[u8],
10854            ) -> alloy_sol_types::Result<Self::Return> {
10855                <Self::ReturnTuple<
10856                    '_,
10857                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10858                    .map(Into::into)
10859            }
10860        }
10861    };
10862    #[derive(serde::Serialize, serde::Deserialize)]
10863    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10864    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10865```solidity
10866function isEpochRoot(uint64 blockHeight) external view returns (bool);
10867```*/
10868    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10869    #[derive(Clone)]
10870    pub struct isEpochRootCall {
10871        #[allow(missing_docs)]
10872        pub blockHeight: u64,
10873    }
10874    #[derive(serde::Serialize, serde::Deserialize)]
10875    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10876    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10878    #[derive(Clone)]
10879    pub struct isEpochRootReturn {
10880        #[allow(missing_docs)]
10881        pub _0: bool,
10882    }
10883    #[allow(
10884        non_camel_case_types,
10885        non_snake_case,
10886        clippy::pub_underscore_fields,
10887        clippy::style
10888    )]
10889    const _: () = {
10890        use alloy::sol_types as alloy_sol_types;
10891        {
10892            #[doc(hidden)]
10893            #[allow(dead_code)]
10894            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10895            #[doc(hidden)]
10896            type UnderlyingRustTuple<'a> = (u64,);
10897            #[cfg(test)]
10898            #[allow(dead_code, unreachable_patterns)]
10899            fn _type_assertion(
10900                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10901            ) {
10902                match _t {
10903                    alloy_sol_types::private::AssertTypeEq::<
10904                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10905                    >(_) => {}
10906                }
10907            }
10908            #[automatically_derived]
10909            #[doc(hidden)]
10910            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10911                fn from(value: isEpochRootCall) -> Self {
10912                    (value.blockHeight,)
10913                }
10914            }
10915            #[automatically_derived]
10916            #[doc(hidden)]
10917            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10918                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10919                    Self { blockHeight: tuple.0 }
10920                }
10921            }
10922        }
10923        {
10924            #[doc(hidden)]
10925            #[allow(dead_code)]
10926            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10927            #[doc(hidden)]
10928            type UnderlyingRustTuple<'a> = (bool,);
10929            #[cfg(test)]
10930            #[allow(dead_code, unreachable_patterns)]
10931            fn _type_assertion(
10932                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10933            ) {
10934                match _t {
10935                    alloy_sol_types::private::AssertTypeEq::<
10936                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10937                    >(_) => {}
10938                }
10939            }
10940            #[automatically_derived]
10941            #[doc(hidden)]
10942            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10943                fn from(value: isEpochRootReturn) -> Self {
10944                    (value._0,)
10945                }
10946            }
10947            #[automatically_derived]
10948            #[doc(hidden)]
10949            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10950                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10951                    Self { _0: tuple.0 }
10952                }
10953            }
10954        }
10955        #[automatically_derived]
10956        impl alloy_sol_types::SolCall for isEpochRootCall {
10957            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10958            type Token<'a> = <Self::Parameters<
10959                'a,
10960            > as alloy_sol_types::SolType>::Token<'a>;
10961            type Return = bool;
10962            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10963            type ReturnToken<'a> = <Self::ReturnTuple<
10964                'a,
10965            > as alloy_sol_types::SolType>::Token<'a>;
10966            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10967            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10968            #[inline]
10969            fn new<'a>(
10970                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10971            ) -> Self {
10972                tuple.into()
10973            }
10974            #[inline]
10975            fn tokenize(&self) -> Self::Token<'_> {
10976                (
10977                    <alloy::sol_types::sol_data::Uint<
10978                        64,
10979                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10980                )
10981            }
10982            #[inline]
10983            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10984                (
10985                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10986                        ret,
10987                    ),
10988                )
10989            }
10990            #[inline]
10991            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10992                <Self::ReturnTuple<
10993                    '_,
10994                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10995                    .map(|r| {
10996                        let r: isEpochRootReturn = r.into();
10997                        r._0
10998                    })
10999            }
11000            #[inline]
11001            fn abi_decode_returns_validate(
11002                data: &[u8],
11003            ) -> alloy_sol_types::Result<Self::Return> {
11004                <Self::ReturnTuple<
11005                    '_,
11006                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11007                    .map(|r| {
11008                        let r: isEpochRootReturn = r.into();
11009                        r._0
11010                    })
11011            }
11012        }
11013    };
11014    #[derive(serde::Serialize, serde::Deserialize)]
11015    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11016    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
11017```solidity
11018function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
11019```*/
11020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11021    #[derive(Clone)]
11022    pub struct isGtEpochRootCall {
11023        #[allow(missing_docs)]
11024        pub blockHeight: u64,
11025    }
11026    #[derive(serde::Serialize, serde::Deserialize)]
11027    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11028    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
11029    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11030    #[derive(Clone)]
11031    pub struct isGtEpochRootReturn {
11032        #[allow(missing_docs)]
11033        pub _0: bool,
11034    }
11035    #[allow(
11036        non_camel_case_types,
11037        non_snake_case,
11038        clippy::pub_underscore_fields,
11039        clippy::style
11040    )]
11041    const _: () = {
11042        use alloy::sol_types as alloy_sol_types;
11043        {
11044            #[doc(hidden)]
11045            #[allow(dead_code)]
11046            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11047            #[doc(hidden)]
11048            type UnderlyingRustTuple<'a> = (u64,);
11049            #[cfg(test)]
11050            #[allow(dead_code, unreachable_patterns)]
11051            fn _type_assertion(
11052                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11053            ) {
11054                match _t {
11055                    alloy_sol_types::private::AssertTypeEq::<
11056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11057                    >(_) => {}
11058                }
11059            }
11060            #[automatically_derived]
11061            #[doc(hidden)]
11062            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
11063                fn from(value: isGtEpochRootCall) -> Self {
11064                    (value.blockHeight,)
11065                }
11066            }
11067            #[automatically_derived]
11068            #[doc(hidden)]
11069            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
11070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11071                    Self { blockHeight: tuple.0 }
11072                }
11073            }
11074        }
11075        {
11076            #[doc(hidden)]
11077            #[allow(dead_code)]
11078            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11079            #[doc(hidden)]
11080            type UnderlyingRustTuple<'a> = (bool,);
11081            #[cfg(test)]
11082            #[allow(dead_code, unreachable_patterns)]
11083            fn _type_assertion(
11084                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11085            ) {
11086                match _t {
11087                    alloy_sol_types::private::AssertTypeEq::<
11088                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11089                    >(_) => {}
11090                }
11091            }
11092            #[automatically_derived]
11093            #[doc(hidden)]
11094            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11095                fn from(value: isGtEpochRootReturn) -> Self {
11096                    (value._0,)
11097                }
11098            }
11099            #[automatically_derived]
11100            #[doc(hidden)]
11101            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11102                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11103                    Self { _0: tuple.0 }
11104                }
11105            }
11106        }
11107        #[automatically_derived]
11108        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11109            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11110            type Token<'a> = <Self::Parameters<
11111                'a,
11112            > as alloy_sol_types::SolType>::Token<'a>;
11113            type Return = bool;
11114            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11115            type ReturnToken<'a> = <Self::ReturnTuple<
11116                'a,
11117            > as alloy_sol_types::SolType>::Token<'a>;
11118            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11119            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11120            #[inline]
11121            fn new<'a>(
11122                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11123            ) -> Self {
11124                tuple.into()
11125            }
11126            #[inline]
11127            fn tokenize(&self) -> Self::Token<'_> {
11128                (
11129                    <alloy::sol_types::sol_data::Uint<
11130                        64,
11131                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11132                )
11133            }
11134            #[inline]
11135            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11136                (
11137                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11138                        ret,
11139                    ),
11140                )
11141            }
11142            #[inline]
11143            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11144                <Self::ReturnTuple<
11145                    '_,
11146                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11147                    .map(|r| {
11148                        let r: isGtEpochRootReturn = r.into();
11149                        r._0
11150                    })
11151            }
11152            #[inline]
11153            fn abi_decode_returns_validate(
11154                data: &[u8],
11155            ) -> alloy_sol_types::Result<Self::Return> {
11156                <Self::ReturnTuple<
11157                    '_,
11158                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11159                    .map(|r| {
11160                        let r: isGtEpochRootReturn = r.into();
11161                        r._0
11162                    })
11163            }
11164        }
11165    };
11166    #[derive(serde::Serialize, serde::Deserialize)]
11167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11168    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11169```solidity
11170function isPermissionedProverEnabled() external view returns (bool);
11171```*/
11172    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11173    #[derive(Clone)]
11174    pub struct isPermissionedProverEnabledCall;
11175    #[derive(serde::Serialize, serde::Deserialize)]
11176    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11177    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11179    #[derive(Clone)]
11180    pub struct isPermissionedProverEnabledReturn {
11181        #[allow(missing_docs)]
11182        pub _0: bool,
11183    }
11184    #[allow(
11185        non_camel_case_types,
11186        non_snake_case,
11187        clippy::pub_underscore_fields,
11188        clippy::style
11189    )]
11190    const _: () = {
11191        use alloy::sol_types as alloy_sol_types;
11192        {
11193            #[doc(hidden)]
11194            #[allow(dead_code)]
11195            type UnderlyingSolTuple<'a> = ();
11196            #[doc(hidden)]
11197            type UnderlyingRustTuple<'a> = ();
11198            #[cfg(test)]
11199            #[allow(dead_code, unreachable_patterns)]
11200            fn _type_assertion(
11201                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11202            ) {
11203                match _t {
11204                    alloy_sol_types::private::AssertTypeEq::<
11205                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11206                    >(_) => {}
11207                }
11208            }
11209            #[automatically_derived]
11210            #[doc(hidden)]
11211            impl ::core::convert::From<isPermissionedProverEnabledCall>
11212            for UnderlyingRustTuple<'_> {
11213                fn from(value: isPermissionedProverEnabledCall) -> Self {
11214                    ()
11215                }
11216            }
11217            #[automatically_derived]
11218            #[doc(hidden)]
11219            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11220            for isPermissionedProverEnabledCall {
11221                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11222                    Self
11223                }
11224            }
11225        }
11226        {
11227            #[doc(hidden)]
11228            #[allow(dead_code)]
11229            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11230            #[doc(hidden)]
11231            type UnderlyingRustTuple<'a> = (bool,);
11232            #[cfg(test)]
11233            #[allow(dead_code, unreachable_patterns)]
11234            fn _type_assertion(
11235                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11236            ) {
11237                match _t {
11238                    alloy_sol_types::private::AssertTypeEq::<
11239                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11240                    >(_) => {}
11241                }
11242            }
11243            #[automatically_derived]
11244            #[doc(hidden)]
11245            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11246            for UnderlyingRustTuple<'_> {
11247                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11248                    (value._0,)
11249                }
11250            }
11251            #[automatically_derived]
11252            #[doc(hidden)]
11253            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11254            for isPermissionedProverEnabledReturn {
11255                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11256                    Self { _0: tuple.0 }
11257                }
11258            }
11259        }
11260        #[automatically_derived]
11261        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11262            type Parameters<'a> = ();
11263            type Token<'a> = <Self::Parameters<
11264                'a,
11265            > as alloy_sol_types::SolType>::Token<'a>;
11266            type Return = bool;
11267            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11268            type ReturnToken<'a> = <Self::ReturnTuple<
11269                'a,
11270            > as alloy_sol_types::SolType>::Token<'a>;
11271            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11272            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11273            #[inline]
11274            fn new<'a>(
11275                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11276            ) -> Self {
11277                tuple.into()
11278            }
11279            #[inline]
11280            fn tokenize(&self) -> Self::Token<'_> {
11281                ()
11282            }
11283            #[inline]
11284            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11285                (
11286                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11287                        ret,
11288                    ),
11289                )
11290            }
11291            #[inline]
11292            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11293                <Self::ReturnTuple<
11294                    '_,
11295                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11296                    .map(|r| {
11297                        let r: isPermissionedProverEnabledReturn = r.into();
11298                        r._0
11299                    })
11300            }
11301            #[inline]
11302            fn abi_decode_returns_validate(
11303                data: &[u8],
11304            ) -> alloy_sol_types::Result<Self::Return> {
11305                <Self::ReturnTuple<
11306                    '_,
11307                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11308                    .map(|r| {
11309                        let r: isPermissionedProverEnabledReturn = r.into();
11310                        r._0
11311                    })
11312            }
11313        }
11314    };
11315    #[derive(serde::Serialize, serde::Deserialize)]
11316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11317    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11318```solidity
11319function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
11320```*/
11321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11322    #[derive(Clone)]
11323    pub struct lagOverEscapeHatchThresholdCall {
11324        #[allow(missing_docs)]
11325        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11326        #[allow(missing_docs)]
11327        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
11328    }
11329    #[derive(serde::Serialize, serde::Deserialize)]
11330    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11331    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11332    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11333    #[derive(Clone)]
11334    pub struct lagOverEscapeHatchThresholdReturn {
11335        #[allow(missing_docs)]
11336        pub _0: bool,
11337    }
11338    #[allow(
11339        non_camel_case_types,
11340        non_snake_case,
11341        clippy::pub_underscore_fields,
11342        clippy::style
11343    )]
11344    const _: () = {
11345        use alloy::sol_types as alloy_sol_types;
11346        {
11347            #[doc(hidden)]
11348            #[allow(dead_code)]
11349            type UnderlyingSolTuple<'a> = (
11350                alloy::sol_types::sol_data::Uint<256>,
11351                alloy::sol_types::sol_data::Uint<256>,
11352            );
11353            #[doc(hidden)]
11354            type UnderlyingRustTuple<'a> = (
11355                alloy::sol_types::private::primitives::aliases::U256,
11356                alloy::sol_types::private::primitives::aliases::U256,
11357            );
11358            #[cfg(test)]
11359            #[allow(dead_code, unreachable_patterns)]
11360            fn _type_assertion(
11361                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11362            ) {
11363                match _t {
11364                    alloy_sol_types::private::AssertTypeEq::<
11365                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11366                    >(_) => {}
11367                }
11368            }
11369            #[automatically_derived]
11370            #[doc(hidden)]
11371            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11372            for UnderlyingRustTuple<'_> {
11373                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11374                    (value.blockNumber, value.blockThreshold)
11375                }
11376            }
11377            #[automatically_derived]
11378            #[doc(hidden)]
11379            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11380            for lagOverEscapeHatchThresholdCall {
11381                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11382                    Self {
11383                        blockNumber: tuple.0,
11384                        blockThreshold: tuple.1,
11385                    }
11386                }
11387            }
11388        }
11389        {
11390            #[doc(hidden)]
11391            #[allow(dead_code)]
11392            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11393            #[doc(hidden)]
11394            type UnderlyingRustTuple<'a> = (bool,);
11395            #[cfg(test)]
11396            #[allow(dead_code, unreachable_patterns)]
11397            fn _type_assertion(
11398                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11399            ) {
11400                match _t {
11401                    alloy_sol_types::private::AssertTypeEq::<
11402                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11403                    >(_) => {}
11404                }
11405            }
11406            #[automatically_derived]
11407            #[doc(hidden)]
11408            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11409            for UnderlyingRustTuple<'_> {
11410                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11411                    (value._0,)
11412                }
11413            }
11414            #[automatically_derived]
11415            #[doc(hidden)]
11416            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11417            for lagOverEscapeHatchThresholdReturn {
11418                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11419                    Self { _0: tuple.0 }
11420                }
11421            }
11422        }
11423        #[automatically_derived]
11424        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11425            type Parameters<'a> = (
11426                alloy::sol_types::sol_data::Uint<256>,
11427                alloy::sol_types::sol_data::Uint<256>,
11428            );
11429            type Token<'a> = <Self::Parameters<
11430                'a,
11431            > as alloy_sol_types::SolType>::Token<'a>;
11432            type Return = bool;
11433            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11434            type ReturnToken<'a> = <Self::ReturnTuple<
11435                'a,
11436            > as alloy_sol_types::SolType>::Token<'a>;
11437            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11438            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11439            #[inline]
11440            fn new<'a>(
11441                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11442            ) -> Self {
11443                tuple.into()
11444            }
11445            #[inline]
11446            fn tokenize(&self) -> Self::Token<'_> {
11447                (
11448                    <alloy::sol_types::sol_data::Uint<
11449                        256,
11450                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11451                    <alloy::sol_types::sol_data::Uint<
11452                        256,
11453                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
11454                )
11455            }
11456            #[inline]
11457            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11458                (
11459                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11460                        ret,
11461                    ),
11462                )
11463            }
11464            #[inline]
11465            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11466                <Self::ReturnTuple<
11467                    '_,
11468                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11469                    .map(|r| {
11470                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11471                        r._0
11472                    })
11473            }
11474            #[inline]
11475            fn abi_decode_returns_validate(
11476                data: &[u8],
11477            ) -> alloy_sol_types::Result<Self::Return> {
11478                <Self::ReturnTuple<
11479                    '_,
11480                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11481                    .map(|r| {
11482                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11483                        r._0
11484                    })
11485            }
11486        }
11487    };
11488    #[derive(serde::Serialize, serde::Deserialize)]
11489    #[derive()]
11490    /**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`.
11491```solidity
11492function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11493```*/
11494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11495    #[derive(Clone)]
11496    pub struct newFinalizedState_0Call {
11497        #[allow(missing_docs)]
11498        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11499        #[allow(missing_docs)]
11500        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11501    }
11502    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_0Call) function.
11503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11504    #[derive(Clone)]
11505    pub struct newFinalizedState_0Return {}
11506    #[allow(
11507        non_camel_case_types,
11508        non_snake_case,
11509        clippy::pub_underscore_fields,
11510        clippy::style
11511    )]
11512    const _: () = {
11513        use alloy::sol_types as alloy_sol_types;
11514        {
11515            #[doc(hidden)]
11516            #[allow(dead_code)]
11517            type UnderlyingSolTuple<'a> = (
11518                LightClient::LightClientState,
11519                IPlonkVerifier::PlonkProof,
11520            );
11521            #[doc(hidden)]
11522            type UnderlyingRustTuple<'a> = (
11523                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11524                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11525            );
11526            #[cfg(test)]
11527            #[allow(dead_code, unreachable_patterns)]
11528            fn _type_assertion(
11529                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11530            ) {
11531                match _t {
11532                    alloy_sol_types::private::AssertTypeEq::<
11533                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11534                    >(_) => {}
11535                }
11536            }
11537            #[automatically_derived]
11538            #[doc(hidden)]
11539            impl ::core::convert::From<newFinalizedState_0Call>
11540            for UnderlyingRustTuple<'_> {
11541                fn from(value: newFinalizedState_0Call) -> Self {
11542                    (value._0, value._1)
11543                }
11544            }
11545            #[automatically_derived]
11546            #[doc(hidden)]
11547            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11548            for newFinalizedState_0Call {
11549                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11550                    Self { _0: tuple.0, _1: tuple.1 }
11551                }
11552            }
11553        }
11554        {
11555            #[doc(hidden)]
11556            #[allow(dead_code)]
11557            type UnderlyingSolTuple<'a> = ();
11558            #[doc(hidden)]
11559            type UnderlyingRustTuple<'a> = ();
11560            #[cfg(test)]
11561            #[allow(dead_code, unreachable_patterns)]
11562            fn _type_assertion(
11563                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11564            ) {
11565                match _t {
11566                    alloy_sol_types::private::AssertTypeEq::<
11567                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11568                    >(_) => {}
11569                }
11570            }
11571            #[automatically_derived]
11572            #[doc(hidden)]
11573            impl ::core::convert::From<newFinalizedState_0Return>
11574            for UnderlyingRustTuple<'_> {
11575                fn from(value: newFinalizedState_0Return) -> Self {
11576                    ()
11577                }
11578            }
11579            #[automatically_derived]
11580            #[doc(hidden)]
11581            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11582            for newFinalizedState_0Return {
11583                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11584                    Self {}
11585                }
11586            }
11587        }
11588        impl newFinalizedState_0Return {
11589            fn _tokenize(
11590                &self,
11591            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11592                ()
11593            }
11594        }
11595        #[automatically_derived]
11596        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11597            type Parameters<'a> = (
11598                LightClient::LightClientState,
11599                IPlonkVerifier::PlonkProof,
11600            );
11601            type Token<'a> = <Self::Parameters<
11602                'a,
11603            > as alloy_sol_types::SolType>::Token<'a>;
11604            type Return = newFinalizedState_0Return;
11605            type ReturnTuple<'a> = ();
11606            type ReturnToken<'a> = <Self::ReturnTuple<
11607                'a,
11608            > as alloy_sol_types::SolType>::Token<'a>;
11609            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))";
11610            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11611            #[inline]
11612            fn new<'a>(
11613                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11614            ) -> Self {
11615                tuple.into()
11616            }
11617            #[inline]
11618            fn tokenize(&self) -> Self::Token<'_> {
11619                (
11620                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11621                        &self._0,
11622                    ),
11623                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11624                        &self._1,
11625                    ),
11626                )
11627            }
11628            #[inline]
11629            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11630                newFinalizedState_0Return::_tokenize(ret)
11631            }
11632            #[inline]
11633            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11634                <Self::ReturnTuple<
11635                    '_,
11636                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11637                    .map(Into::into)
11638            }
11639            #[inline]
11640            fn abi_decode_returns_validate(
11641                data: &[u8],
11642            ) -> alloy_sol_types::Result<Self::Return> {
11643                <Self::ReturnTuple<
11644                    '_,
11645                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11646                    .map(Into::into)
11647            }
11648        }
11649    };
11650    #[derive(serde::Serialize, serde::Deserialize)]
11651    #[derive()]
11652    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x757c37ad`.
11653```solidity
11654function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
11655```*/
11656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11657    #[derive(Clone)]
11658    pub struct newFinalizedState_1Call {
11659        #[allow(missing_docs)]
11660        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11661        #[allow(missing_docs)]
11662        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11663        #[allow(missing_docs)]
11664        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11665    }
11666    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_1Call) function.
11667    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11668    #[derive(Clone)]
11669    pub struct newFinalizedState_1Return {}
11670    #[allow(
11671        non_camel_case_types,
11672        non_snake_case,
11673        clippy::pub_underscore_fields,
11674        clippy::style
11675    )]
11676    const _: () = {
11677        use alloy::sol_types as alloy_sol_types;
11678        {
11679            #[doc(hidden)]
11680            #[allow(dead_code)]
11681            type UnderlyingSolTuple<'a> = (
11682                LightClient::LightClientState,
11683                LightClient::StakeTableState,
11684                IPlonkVerifier::PlonkProof,
11685            );
11686            #[doc(hidden)]
11687            type UnderlyingRustTuple<'a> = (
11688                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11689                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11690                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11691            );
11692            #[cfg(test)]
11693            #[allow(dead_code, unreachable_patterns)]
11694            fn _type_assertion(
11695                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11696            ) {
11697                match _t {
11698                    alloy_sol_types::private::AssertTypeEq::<
11699                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11700                    >(_) => {}
11701                }
11702            }
11703            #[automatically_derived]
11704            #[doc(hidden)]
11705            impl ::core::convert::From<newFinalizedState_1Call>
11706            for UnderlyingRustTuple<'_> {
11707                fn from(value: newFinalizedState_1Call) -> Self {
11708                    (value._0, value._1, value._2)
11709                }
11710            }
11711            #[automatically_derived]
11712            #[doc(hidden)]
11713            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11714            for newFinalizedState_1Call {
11715                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11716                    Self {
11717                        _0: tuple.0,
11718                        _1: tuple.1,
11719                        _2: tuple.2,
11720                    }
11721                }
11722            }
11723        }
11724        {
11725            #[doc(hidden)]
11726            #[allow(dead_code)]
11727            type UnderlyingSolTuple<'a> = ();
11728            #[doc(hidden)]
11729            type UnderlyingRustTuple<'a> = ();
11730            #[cfg(test)]
11731            #[allow(dead_code, unreachable_patterns)]
11732            fn _type_assertion(
11733                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11734            ) {
11735                match _t {
11736                    alloy_sol_types::private::AssertTypeEq::<
11737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11738                    >(_) => {}
11739                }
11740            }
11741            #[automatically_derived]
11742            #[doc(hidden)]
11743            impl ::core::convert::From<newFinalizedState_1Return>
11744            for UnderlyingRustTuple<'_> {
11745                fn from(value: newFinalizedState_1Return) -> Self {
11746                    ()
11747                }
11748            }
11749            #[automatically_derived]
11750            #[doc(hidden)]
11751            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11752            for newFinalizedState_1Return {
11753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11754                    Self {}
11755                }
11756            }
11757        }
11758        impl newFinalizedState_1Return {
11759            fn _tokenize(
11760                &self,
11761            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11762                ()
11763            }
11764        }
11765        #[automatically_derived]
11766        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11767            type Parameters<'a> = (
11768                LightClient::LightClientState,
11769                LightClient::StakeTableState,
11770                IPlonkVerifier::PlonkProof,
11771            );
11772            type Token<'a> = <Self::Parameters<
11773                'a,
11774            > as alloy_sol_types::SolType>::Token<'a>;
11775            type Return = newFinalizedState_1Return;
11776            type ReturnTuple<'a> = ();
11777            type ReturnToken<'a> = <Self::ReturnTuple<
11778                'a,
11779            > as alloy_sol_types::SolType>::Token<'a>;
11780            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
11781            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11782            #[inline]
11783            fn new<'a>(
11784                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11785            ) -> Self {
11786                tuple.into()
11787            }
11788            #[inline]
11789            fn tokenize(&self) -> Self::Token<'_> {
11790                (
11791                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11792                        &self._0,
11793                    ),
11794                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11795                        &self._1,
11796                    ),
11797                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11798                        &self._2,
11799                    ),
11800                )
11801            }
11802            #[inline]
11803            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11804                newFinalizedState_1Return::_tokenize(ret)
11805            }
11806            #[inline]
11807            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11808                <Self::ReturnTuple<
11809                    '_,
11810                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11811                    .map(Into::into)
11812            }
11813            #[inline]
11814            fn abi_decode_returns_validate(
11815                data: &[u8],
11816            ) -> alloy_sol_types::Result<Self::Return> {
11817                <Self::ReturnTuple<
11818                    '_,
11819                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11820                    .map(Into::into)
11821            }
11822        }
11823    };
11824    #[derive(serde::Serialize, serde::Deserialize)]
11825    #[derive()]
11826    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint256,((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0xaabd5db3`.
11827```solidity
11828function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
11829```*/
11830    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11831    #[derive(Clone)]
11832    pub struct newFinalizedState_2Call {
11833        #[allow(missing_docs)]
11834        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11835        #[allow(missing_docs)]
11836        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11837        #[allow(missing_docs)]
11838        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
11839        #[allow(missing_docs)]
11840        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11841    }
11842    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint256,((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_2Call) function.
11843    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11844    #[derive(Clone)]
11845    pub struct newFinalizedState_2Return {}
11846    #[allow(
11847        non_camel_case_types,
11848        non_snake_case,
11849        clippy::pub_underscore_fields,
11850        clippy::style
11851    )]
11852    const _: () = {
11853        use alloy::sol_types as alloy_sol_types;
11854        {
11855            #[doc(hidden)]
11856            #[allow(dead_code)]
11857            type UnderlyingSolTuple<'a> = (
11858                LightClient::LightClientState,
11859                LightClient::StakeTableState,
11860                alloy::sol_types::sol_data::Uint<256>,
11861                IPlonkVerifier::PlonkProof,
11862            );
11863            #[doc(hidden)]
11864            type UnderlyingRustTuple<'a> = (
11865                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11866                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11867                alloy::sol_types::private::primitives::aliases::U256,
11868                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11869            );
11870            #[cfg(test)]
11871            #[allow(dead_code, unreachable_patterns)]
11872            fn _type_assertion(
11873                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11874            ) {
11875                match _t {
11876                    alloy_sol_types::private::AssertTypeEq::<
11877                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11878                    >(_) => {}
11879                }
11880            }
11881            #[automatically_derived]
11882            #[doc(hidden)]
11883            impl ::core::convert::From<newFinalizedState_2Call>
11884            for UnderlyingRustTuple<'_> {
11885                fn from(value: newFinalizedState_2Call) -> Self {
11886                    (
11887                        value.newState,
11888                        value.nextStakeTable,
11889                        value.newAuthRoot,
11890                        value.proof,
11891                    )
11892                }
11893            }
11894            #[automatically_derived]
11895            #[doc(hidden)]
11896            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11897            for newFinalizedState_2Call {
11898                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11899                    Self {
11900                        newState: tuple.0,
11901                        nextStakeTable: tuple.1,
11902                        newAuthRoot: tuple.2,
11903                        proof: tuple.3,
11904                    }
11905                }
11906            }
11907        }
11908        {
11909            #[doc(hidden)]
11910            #[allow(dead_code)]
11911            type UnderlyingSolTuple<'a> = ();
11912            #[doc(hidden)]
11913            type UnderlyingRustTuple<'a> = ();
11914            #[cfg(test)]
11915            #[allow(dead_code, unreachable_patterns)]
11916            fn _type_assertion(
11917                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11918            ) {
11919                match _t {
11920                    alloy_sol_types::private::AssertTypeEq::<
11921                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11922                    >(_) => {}
11923                }
11924            }
11925            #[automatically_derived]
11926            #[doc(hidden)]
11927            impl ::core::convert::From<newFinalizedState_2Return>
11928            for UnderlyingRustTuple<'_> {
11929                fn from(value: newFinalizedState_2Return) -> Self {
11930                    ()
11931                }
11932            }
11933            #[automatically_derived]
11934            #[doc(hidden)]
11935            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11936            for newFinalizedState_2Return {
11937                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11938                    Self {}
11939                }
11940            }
11941        }
11942        impl newFinalizedState_2Return {
11943            fn _tokenize(
11944                &self,
11945            ) -> <newFinalizedState_2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11946                ()
11947            }
11948        }
11949        #[automatically_derived]
11950        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
11951            type Parameters<'a> = (
11952                LightClient::LightClientState,
11953                LightClient::StakeTableState,
11954                alloy::sol_types::sol_data::Uint<256>,
11955                IPlonkVerifier::PlonkProof,
11956            );
11957            type Token<'a> = <Self::Parameters<
11958                'a,
11959            > as alloy_sol_types::SolType>::Token<'a>;
11960            type Return = newFinalizedState_2Return;
11961            type ReturnTuple<'a> = ();
11962            type ReturnToken<'a> = <Self::ReturnTuple<
11963                'a,
11964            > as alloy_sol_types::SolType>::Token<'a>;
11965            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint256,((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
11966            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
11967            #[inline]
11968            fn new<'a>(
11969                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11970            ) -> Self {
11971                tuple.into()
11972            }
11973            #[inline]
11974            fn tokenize(&self) -> Self::Token<'_> {
11975                (
11976                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11977                        &self.newState,
11978                    ),
11979                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11980                        &self.nextStakeTable,
11981                    ),
11982                    <alloy::sol_types::sol_data::Uint<
11983                        256,
11984                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
11985                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11986                        &self.proof,
11987                    ),
11988                )
11989            }
11990            #[inline]
11991            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11992                newFinalizedState_2Return::_tokenize(ret)
11993            }
11994            #[inline]
11995            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11996                <Self::ReturnTuple<
11997                    '_,
11998                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11999                    .map(Into::into)
12000            }
12001            #[inline]
12002            fn abi_decode_returns_validate(
12003                data: &[u8],
12004            ) -> alloy_sol_types::Result<Self::Return> {
12005                <Self::ReturnTuple<
12006                    '_,
12007                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12008                    .map(Into::into)
12009            }
12010        }
12011    };
12012    #[derive(serde::Serialize, serde::Deserialize)]
12013    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12014    /**Function with signature `owner()` and selector `0x8da5cb5b`.
12015```solidity
12016function owner() external view returns (address);
12017```*/
12018    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12019    #[derive(Clone)]
12020    pub struct ownerCall;
12021    #[derive(serde::Serialize, serde::Deserialize)]
12022    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12023    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
12024    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12025    #[derive(Clone)]
12026    pub struct ownerReturn {
12027        #[allow(missing_docs)]
12028        pub _0: alloy::sol_types::private::Address,
12029    }
12030    #[allow(
12031        non_camel_case_types,
12032        non_snake_case,
12033        clippy::pub_underscore_fields,
12034        clippy::style
12035    )]
12036    const _: () = {
12037        use alloy::sol_types as alloy_sol_types;
12038        {
12039            #[doc(hidden)]
12040            #[allow(dead_code)]
12041            type UnderlyingSolTuple<'a> = ();
12042            #[doc(hidden)]
12043            type UnderlyingRustTuple<'a> = ();
12044            #[cfg(test)]
12045            #[allow(dead_code, unreachable_patterns)]
12046            fn _type_assertion(
12047                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12048            ) {
12049                match _t {
12050                    alloy_sol_types::private::AssertTypeEq::<
12051                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12052                    >(_) => {}
12053                }
12054            }
12055            #[automatically_derived]
12056            #[doc(hidden)]
12057            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
12058                fn from(value: ownerCall) -> Self {
12059                    ()
12060                }
12061            }
12062            #[automatically_derived]
12063            #[doc(hidden)]
12064            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
12065                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12066                    Self
12067                }
12068            }
12069        }
12070        {
12071            #[doc(hidden)]
12072            #[allow(dead_code)]
12073            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12074            #[doc(hidden)]
12075            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12076            #[cfg(test)]
12077            #[allow(dead_code, unreachable_patterns)]
12078            fn _type_assertion(
12079                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12080            ) {
12081                match _t {
12082                    alloy_sol_types::private::AssertTypeEq::<
12083                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12084                    >(_) => {}
12085                }
12086            }
12087            #[automatically_derived]
12088            #[doc(hidden)]
12089            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12090                fn from(value: ownerReturn) -> Self {
12091                    (value._0,)
12092                }
12093            }
12094            #[automatically_derived]
12095            #[doc(hidden)]
12096            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12097                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12098                    Self { _0: tuple.0 }
12099                }
12100            }
12101        }
12102        #[automatically_derived]
12103        impl alloy_sol_types::SolCall for ownerCall {
12104            type Parameters<'a> = ();
12105            type Token<'a> = <Self::Parameters<
12106                'a,
12107            > as alloy_sol_types::SolType>::Token<'a>;
12108            type Return = alloy::sol_types::private::Address;
12109            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12110            type ReturnToken<'a> = <Self::ReturnTuple<
12111                'a,
12112            > as alloy_sol_types::SolType>::Token<'a>;
12113            const SIGNATURE: &'static str = "owner()";
12114            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12115            #[inline]
12116            fn new<'a>(
12117                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12118            ) -> Self {
12119                tuple.into()
12120            }
12121            #[inline]
12122            fn tokenize(&self) -> Self::Token<'_> {
12123                ()
12124            }
12125            #[inline]
12126            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12127                (
12128                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12129                        ret,
12130                    ),
12131                )
12132            }
12133            #[inline]
12134            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12135                <Self::ReturnTuple<
12136                    '_,
12137                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12138                    .map(|r| {
12139                        let r: ownerReturn = r.into();
12140                        r._0
12141                    })
12142            }
12143            #[inline]
12144            fn abi_decode_returns_validate(
12145                data: &[u8],
12146            ) -> alloy_sol_types::Result<Self::Return> {
12147                <Self::ReturnTuple<
12148                    '_,
12149                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12150                    .map(|r| {
12151                        let r: ownerReturn = r.into();
12152                        r._0
12153                    })
12154            }
12155        }
12156    };
12157    #[derive(serde::Serialize, serde::Deserialize)]
12158    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12159    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
12160```solidity
12161function permissionedProver() external view returns (address);
12162```*/
12163    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12164    #[derive(Clone)]
12165    pub struct permissionedProverCall;
12166    #[derive(serde::Serialize, serde::Deserialize)]
12167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12168    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
12169    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12170    #[derive(Clone)]
12171    pub struct permissionedProverReturn {
12172        #[allow(missing_docs)]
12173        pub _0: alloy::sol_types::private::Address,
12174    }
12175    #[allow(
12176        non_camel_case_types,
12177        non_snake_case,
12178        clippy::pub_underscore_fields,
12179        clippy::style
12180    )]
12181    const _: () = {
12182        use alloy::sol_types as alloy_sol_types;
12183        {
12184            #[doc(hidden)]
12185            #[allow(dead_code)]
12186            type UnderlyingSolTuple<'a> = ();
12187            #[doc(hidden)]
12188            type UnderlyingRustTuple<'a> = ();
12189            #[cfg(test)]
12190            #[allow(dead_code, unreachable_patterns)]
12191            fn _type_assertion(
12192                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12193            ) {
12194                match _t {
12195                    alloy_sol_types::private::AssertTypeEq::<
12196                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12197                    >(_) => {}
12198                }
12199            }
12200            #[automatically_derived]
12201            #[doc(hidden)]
12202            impl ::core::convert::From<permissionedProverCall>
12203            for UnderlyingRustTuple<'_> {
12204                fn from(value: permissionedProverCall) -> Self {
12205                    ()
12206                }
12207            }
12208            #[automatically_derived]
12209            #[doc(hidden)]
12210            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12211            for permissionedProverCall {
12212                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12213                    Self
12214                }
12215            }
12216        }
12217        {
12218            #[doc(hidden)]
12219            #[allow(dead_code)]
12220            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12221            #[doc(hidden)]
12222            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12223            #[cfg(test)]
12224            #[allow(dead_code, unreachable_patterns)]
12225            fn _type_assertion(
12226                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12227            ) {
12228                match _t {
12229                    alloy_sol_types::private::AssertTypeEq::<
12230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12231                    >(_) => {}
12232                }
12233            }
12234            #[automatically_derived]
12235            #[doc(hidden)]
12236            impl ::core::convert::From<permissionedProverReturn>
12237            for UnderlyingRustTuple<'_> {
12238                fn from(value: permissionedProverReturn) -> Self {
12239                    (value._0,)
12240                }
12241            }
12242            #[automatically_derived]
12243            #[doc(hidden)]
12244            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12245            for permissionedProverReturn {
12246                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12247                    Self { _0: tuple.0 }
12248                }
12249            }
12250        }
12251        #[automatically_derived]
12252        impl alloy_sol_types::SolCall for permissionedProverCall {
12253            type Parameters<'a> = ();
12254            type Token<'a> = <Self::Parameters<
12255                'a,
12256            > as alloy_sol_types::SolType>::Token<'a>;
12257            type Return = alloy::sol_types::private::Address;
12258            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12259            type ReturnToken<'a> = <Self::ReturnTuple<
12260                'a,
12261            > as alloy_sol_types::SolType>::Token<'a>;
12262            const SIGNATURE: &'static str = "permissionedProver()";
12263            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
12264            #[inline]
12265            fn new<'a>(
12266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12267            ) -> Self {
12268                tuple.into()
12269            }
12270            #[inline]
12271            fn tokenize(&self) -> Self::Token<'_> {
12272                ()
12273            }
12274            #[inline]
12275            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12276                (
12277                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12278                        ret,
12279                    ),
12280                )
12281            }
12282            #[inline]
12283            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12284                <Self::ReturnTuple<
12285                    '_,
12286                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12287                    .map(|r| {
12288                        let r: permissionedProverReturn = r.into();
12289                        r._0
12290                    })
12291            }
12292            #[inline]
12293            fn abi_decode_returns_validate(
12294                data: &[u8],
12295            ) -> alloy_sol_types::Result<Self::Return> {
12296                <Self::ReturnTuple<
12297                    '_,
12298                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12299                    .map(|r| {
12300                        let r: permissionedProverReturn = r.into();
12301                        r._0
12302                    })
12303            }
12304        }
12305    };
12306    #[derive(serde::Serialize, serde::Deserialize)]
12307    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12308    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
12309```solidity
12310function proxiableUUID() external view returns (bytes32);
12311```*/
12312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12313    #[derive(Clone)]
12314    pub struct proxiableUUIDCall;
12315    #[derive(serde::Serialize, serde::Deserialize)]
12316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12317    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
12318    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12319    #[derive(Clone)]
12320    pub struct proxiableUUIDReturn {
12321        #[allow(missing_docs)]
12322        pub _0: alloy::sol_types::private::FixedBytes<32>,
12323    }
12324    #[allow(
12325        non_camel_case_types,
12326        non_snake_case,
12327        clippy::pub_underscore_fields,
12328        clippy::style
12329    )]
12330    const _: () = {
12331        use alloy::sol_types as alloy_sol_types;
12332        {
12333            #[doc(hidden)]
12334            #[allow(dead_code)]
12335            type UnderlyingSolTuple<'a> = ();
12336            #[doc(hidden)]
12337            type UnderlyingRustTuple<'a> = ();
12338            #[cfg(test)]
12339            #[allow(dead_code, unreachable_patterns)]
12340            fn _type_assertion(
12341                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12342            ) {
12343                match _t {
12344                    alloy_sol_types::private::AssertTypeEq::<
12345                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12346                    >(_) => {}
12347                }
12348            }
12349            #[automatically_derived]
12350            #[doc(hidden)]
12351            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12352                fn from(value: proxiableUUIDCall) -> Self {
12353                    ()
12354                }
12355            }
12356            #[automatically_derived]
12357            #[doc(hidden)]
12358            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12359                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12360                    Self
12361                }
12362            }
12363        }
12364        {
12365            #[doc(hidden)]
12366            #[allow(dead_code)]
12367            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12368            #[doc(hidden)]
12369            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12370            #[cfg(test)]
12371            #[allow(dead_code, unreachable_patterns)]
12372            fn _type_assertion(
12373                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12374            ) {
12375                match _t {
12376                    alloy_sol_types::private::AssertTypeEq::<
12377                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12378                    >(_) => {}
12379                }
12380            }
12381            #[automatically_derived]
12382            #[doc(hidden)]
12383            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12384                fn from(value: proxiableUUIDReturn) -> Self {
12385                    (value._0,)
12386                }
12387            }
12388            #[automatically_derived]
12389            #[doc(hidden)]
12390            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12391                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12392                    Self { _0: tuple.0 }
12393                }
12394            }
12395        }
12396        #[automatically_derived]
12397        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12398            type Parameters<'a> = ();
12399            type Token<'a> = <Self::Parameters<
12400                'a,
12401            > as alloy_sol_types::SolType>::Token<'a>;
12402            type Return = alloy::sol_types::private::FixedBytes<32>;
12403            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12404            type ReturnToken<'a> = <Self::ReturnTuple<
12405                'a,
12406            > as alloy_sol_types::SolType>::Token<'a>;
12407            const SIGNATURE: &'static str = "proxiableUUID()";
12408            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12409            #[inline]
12410            fn new<'a>(
12411                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12412            ) -> Self {
12413                tuple.into()
12414            }
12415            #[inline]
12416            fn tokenize(&self) -> Self::Token<'_> {
12417                ()
12418            }
12419            #[inline]
12420            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12421                (
12422                    <alloy::sol_types::sol_data::FixedBytes<
12423                        32,
12424                    > as alloy_sol_types::SolType>::tokenize(ret),
12425                )
12426            }
12427            #[inline]
12428            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12429                <Self::ReturnTuple<
12430                    '_,
12431                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12432                    .map(|r| {
12433                        let r: proxiableUUIDReturn = r.into();
12434                        r._0
12435                    })
12436            }
12437            #[inline]
12438            fn abi_decode_returns_validate(
12439                data: &[u8],
12440            ) -> alloy_sol_types::Result<Self::Return> {
12441                <Self::ReturnTuple<
12442                    '_,
12443                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12444                    .map(|r| {
12445                        let r: proxiableUUIDReturn = r.into();
12446                        r._0
12447                    })
12448            }
12449        }
12450    };
12451    #[derive(serde::Serialize, serde::Deserialize)]
12452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12453    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12454```solidity
12455function renounceOwnership() external;
12456```*/
12457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12458    #[derive(Clone)]
12459    pub struct renounceOwnershipCall;
12460    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12462    #[derive(Clone)]
12463    pub struct renounceOwnershipReturn {}
12464    #[allow(
12465        non_camel_case_types,
12466        non_snake_case,
12467        clippy::pub_underscore_fields,
12468        clippy::style
12469    )]
12470    const _: () = {
12471        use alloy::sol_types as alloy_sol_types;
12472        {
12473            #[doc(hidden)]
12474            #[allow(dead_code)]
12475            type UnderlyingSolTuple<'a> = ();
12476            #[doc(hidden)]
12477            type UnderlyingRustTuple<'a> = ();
12478            #[cfg(test)]
12479            #[allow(dead_code, unreachable_patterns)]
12480            fn _type_assertion(
12481                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12482            ) {
12483                match _t {
12484                    alloy_sol_types::private::AssertTypeEq::<
12485                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12486                    >(_) => {}
12487                }
12488            }
12489            #[automatically_derived]
12490            #[doc(hidden)]
12491            impl ::core::convert::From<renounceOwnershipCall>
12492            for UnderlyingRustTuple<'_> {
12493                fn from(value: renounceOwnershipCall) -> Self {
12494                    ()
12495                }
12496            }
12497            #[automatically_derived]
12498            #[doc(hidden)]
12499            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12500            for renounceOwnershipCall {
12501                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12502                    Self
12503                }
12504            }
12505        }
12506        {
12507            #[doc(hidden)]
12508            #[allow(dead_code)]
12509            type UnderlyingSolTuple<'a> = ();
12510            #[doc(hidden)]
12511            type UnderlyingRustTuple<'a> = ();
12512            #[cfg(test)]
12513            #[allow(dead_code, unreachable_patterns)]
12514            fn _type_assertion(
12515                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12516            ) {
12517                match _t {
12518                    alloy_sol_types::private::AssertTypeEq::<
12519                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12520                    >(_) => {}
12521                }
12522            }
12523            #[automatically_derived]
12524            #[doc(hidden)]
12525            impl ::core::convert::From<renounceOwnershipReturn>
12526            for UnderlyingRustTuple<'_> {
12527                fn from(value: renounceOwnershipReturn) -> Self {
12528                    ()
12529                }
12530            }
12531            #[automatically_derived]
12532            #[doc(hidden)]
12533            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12534            for renounceOwnershipReturn {
12535                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12536                    Self {}
12537                }
12538            }
12539        }
12540        impl renounceOwnershipReturn {
12541            fn _tokenize(
12542                &self,
12543            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12544                ()
12545            }
12546        }
12547        #[automatically_derived]
12548        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12549            type Parameters<'a> = ();
12550            type Token<'a> = <Self::Parameters<
12551                'a,
12552            > as alloy_sol_types::SolType>::Token<'a>;
12553            type Return = renounceOwnershipReturn;
12554            type ReturnTuple<'a> = ();
12555            type ReturnToken<'a> = <Self::ReturnTuple<
12556                'a,
12557            > as alloy_sol_types::SolType>::Token<'a>;
12558            const SIGNATURE: &'static str = "renounceOwnership()";
12559            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12560            #[inline]
12561            fn new<'a>(
12562                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12563            ) -> Self {
12564                tuple.into()
12565            }
12566            #[inline]
12567            fn tokenize(&self) -> Self::Token<'_> {
12568                ()
12569            }
12570            #[inline]
12571            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12572                renounceOwnershipReturn::_tokenize(ret)
12573            }
12574            #[inline]
12575            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12576                <Self::ReturnTuple<
12577                    '_,
12578                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12579                    .map(Into::into)
12580            }
12581            #[inline]
12582            fn abi_decode_returns_validate(
12583                data: &[u8],
12584            ) -> alloy_sol_types::Result<Self::Return> {
12585                <Self::ReturnTuple<
12586                    '_,
12587                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12588                    .map(Into::into)
12589            }
12590        }
12591    };
12592    #[derive(serde::Serialize, serde::Deserialize)]
12593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12594    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
12595```solidity
12596function setPermissionedProver(address prover) external;
12597```*/
12598    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12599    #[derive(Clone)]
12600    pub struct setPermissionedProverCall {
12601        #[allow(missing_docs)]
12602        pub prover: alloy::sol_types::private::Address,
12603    }
12604    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
12605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12606    #[derive(Clone)]
12607    pub struct setPermissionedProverReturn {}
12608    #[allow(
12609        non_camel_case_types,
12610        non_snake_case,
12611        clippy::pub_underscore_fields,
12612        clippy::style
12613    )]
12614    const _: () = {
12615        use alloy::sol_types as alloy_sol_types;
12616        {
12617            #[doc(hidden)]
12618            #[allow(dead_code)]
12619            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12620            #[doc(hidden)]
12621            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12622            #[cfg(test)]
12623            #[allow(dead_code, unreachable_patterns)]
12624            fn _type_assertion(
12625                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12626            ) {
12627                match _t {
12628                    alloy_sol_types::private::AssertTypeEq::<
12629                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12630                    >(_) => {}
12631                }
12632            }
12633            #[automatically_derived]
12634            #[doc(hidden)]
12635            impl ::core::convert::From<setPermissionedProverCall>
12636            for UnderlyingRustTuple<'_> {
12637                fn from(value: setPermissionedProverCall) -> Self {
12638                    (value.prover,)
12639                }
12640            }
12641            #[automatically_derived]
12642            #[doc(hidden)]
12643            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12644            for setPermissionedProverCall {
12645                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12646                    Self { prover: tuple.0 }
12647                }
12648            }
12649        }
12650        {
12651            #[doc(hidden)]
12652            #[allow(dead_code)]
12653            type UnderlyingSolTuple<'a> = ();
12654            #[doc(hidden)]
12655            type UnderlyingRustTuple<'a> = ();
12656            #[cfg(test)]
12657            #[allow(dead_code, unreachable_patterns)]
12658            fn _type_assertion(
12659                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12660            ) {
12661                match _t {
12662                    alloy_sol_types::private::AssertTypeEq::<
12663                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12664                    >(_) => {}
12665                }
12666            }
12667            #[automatically_derived]
12668            #[doc(hidden)]
12669            impl ::core::convert::From<setPermissionedProverReturn>
12670            for UnderlyingRustTuple<'_> {
12671                fn from(value: setPermissionedProverReturn) -> Self {
12672                    ()
12673                }
12674            }
12675            #[automatically_derived]
12676            #[doc(hidden)]
12677            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12678            for setPermissionedProverReturn {
12679                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12680                    Self {}
12681                }
12682            }
12683        }
12684        impl setPermissionedProverReturn {
12685            fn _tokenize(
12686                &self,
12687            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
12688                '_,
12689            > {
12690                ()
12691            }
12692        }
12693        #[automatically_derived]
12694        impl alloy_sol_types::SolCall for setPermissionedProverCall {
12695            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12696            type Token<'a> = <Self::Parameters<
12697                'a,
12698            > as alloy_sol_types::SolType>::Token<'a>;
12699            type Return = setPermissionedProverReturn;
12700            type ReturnTuple<'a> = ();
12701            type ReturnToken<'a> = <Self::ReturnTuple<
12702                'a,
12703            > as alloy_sol_types::SolType>::Token<'a>;
12704            const SIGNATURE: &'static str = "setPermissionedProver(address)";
12705            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
12706            #[inline]
12707            fn new<'a>(
12708                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12709            ) -> Self {
12710                tuple.into()
12711            }
12712            #[inline]
12713            fn tokenize(&self) -> Self::Token<'_> {
12714                (
12715                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12716                        &self.prover,
12717                    ),
12718                )
12719            }
12720            #[inline]
12721            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12722                setPermissionedProverReturn::_tokenize(ret)
12723            }
12724            #[inline]
12725            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12726                <Self::ReturnTuple<
12727                    '_,
12728                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12729                    .map(Into::into)
12730            }
12731            #[inline]
12732            fn abi_decode_returns_validate(
12733                data: &[u8],
12734            ) -> alloy_sol_types::Result<Self::Return> {
12735                <Self::ReturnTuple<
12736                    '_,
12737                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12738                    .map(Into::into)
12739            }
12740        }
12741    };
12742    #[derive(serde::Serialize, serde::Deserialize)]
12743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12744    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
12745```solidity
12746function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
12747```*/
12748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12749    #[derive(Clone)]
12750    pub struct setStateHistoryRetentionPeriodCall {
12751        #[allow(missing_docs)]
12752        pub historySeconds: u32,
12753    }
12754    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
12755    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12756    #[derive(Clone)]
12757    pub struct setStateHistoryRetentionPeriodReturn {}
12758    #[allow(
12759        non_camel_case_types,
12760        non_snake_case,
12761        clippy::pub_underscore_fields,
12762        clippy::style
12763    )]
12764    const _: () = {
12765        use alloy::sol_types as alloy_sol_types;
12766        {
12767            #[doc(hidden)]
12768            #[allow(dead_code)]
12769            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12770            #[doc(hidden)]
12771            type UnderlyingRustTuple<'a> = (u32,);
12772            #[cfg(test)]
12773            #[allow(dead_code, unreachable_patterns)]
12774            fn _type_assertion(
12775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12776            ) {
12777                match _t {
12778                    alloy_sol_types::private::AssertTypeEq::<
12779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12780                    >(_) => {}
12781                }
12782            }
12783            #[automatically_derived]
12784            #[doc(hidden)]
12785            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
12786            for UnderlyingRustTuple<'_> {
12787                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
12788                    (value.historySeconds,)
12789                }
12790            }
12791            #[automatically_derived]
12792            #[doc(hidden)]
12793            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12794            for setStateHistoryRetentionPeriodCall {
12795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12796                    Self { historySeconds: tuple.0 }
12797                }
12798            }
12799        }
12800        {
12801            #[doc(hidden)]
12802            #[allow(dead_code)]
12803            type UnderlyingSolTuple<'a> = ();
12804            #[doc(hidden)]
12805            type UnderlyingRustTuple<'a> = ();
12806            #[cfg(test)]
12807            #[allow(dead_code, unreachable_patterns)]
12808            fn _type_assertion(
12809                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12810            ) {
12811                match _t {
12812                    alloy_sol_types::private::AssertTypeEq::<
12813                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12814                    >(_) => {}
12815                }
12816            }
12817            #[automatically_derived]
12818            #[doc(hidden)]
12819            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
12820            for UnderlyingRustTuple<'_> {
12821                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
12822                    ()
12823                }
12824            }
12825            #[automatically_derived]
12826            #[doc(hidden)]
12827            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12828            for setStateHistoryRetentionPeriodReturn {
12829                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12830                    Self {}
12831                }
12832            }
12833        }
12834        impl setStateHistoryRetentionPeriodReturn {
12835            fn _tokenize(
12836                &self,
12837            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12838                '_,
12839            > {
12840                ()
12841            }
12842        }
12843        #[automatically_derived]
12844        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
12845            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12846            type Token<'a> = <Self::Parameters<
12847                'a,
12848            > as alloy_sol_types::SolType>::Token<'a>;
12849            type Return = setStateHistoryRetentionPeriodReturn;
12850            type ReturnTuple<'a> = ();
12851            type ReturnToken<'a> = <Self::ReturnTuple<
12852                'a,
12853            > as alloy_sol_types::SolType>::Token<'a>;
12854            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
12855            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
12856            #[inline]
12857            fn new<'a>(
12858                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12859            ) -> Self {
12860                tuple.into()
12861            }
12862            #[inline]
12863            fn tokenize(&self) -> Self::Token<'_> {
12864                (
12865                    <alloy::sol_types::sol_data::Uint<
12866                        32,
12867                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12868                )
12869            }
12870            #[inline]
12871            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12872                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
12873            }
12874            #[inline]
12875            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12876                <Self::ReturnTuple<
12877                    '_,
12878                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12879                    .map(Into::into)
12880            }
12881            #[inline]
12882            fn abi_decode_returns_validate(
12883                data: &[u8],
12884            ) -> alloy_sol_types::Result<Self::Return> {
12885                <Self::ReturnTuple<
12886                    '_,
12887                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12888                    .map(Into::into)
12889            }
12890        }
12891    };
12892    #[derive(serde::Serialize, serde::Deserialize)]
12893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12894    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
12895```solidity
12896function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
12897```*/
12898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12899    #[derive(Clone)]
12900    pub struct setstateHistoryRetentionPeriodCall {
12901        #[allow(missing_docs)]
12902        pub historySeconds: u32,
12903    }
12904    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
12905    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12906    #[derive(Clone)]
12907    pub struct setstateHistoryRetentionPeriodReturn {}
12908    #[allow(
12909        non_camel_case_types,
12910        non_snake_case,
12911        clippy::pub_underscore_fields,
12912        clippy::style
12913    )]
12914    const _: () = {
12915        use alloy::sol_types as alloy_sol_types;
12916        {
12917            #[doc(hidden)]
12918            #[allow(dead_code)]
12919            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12920            #[doc(hidden)]
12921            type UnderlyingRustTuple<'a> = (u32,);
12922            #[cfg(test)]
12923            #[allow(dead_code, unreachable_patterns)]
12924            fn _type_assertion(
12925                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12926            ) {
12927                match _t {
12928                    alloy_sol_types::private::AssertTypeEq::<
12929                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12930                    >(_) => {}
12931                }
12932            }
12933            #[automatically_derived]
12934            #[doc(hidden)]
12935            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
12936            for UnderlyingRustTuple<'_> {
12937                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
12938                    (value.historySeconds,)
12939                }
12940            }
12941            #[automatically_derived]
12942            #[doc(hidden)]
12943            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12944            for setstateHistoryRetentionPeriodCall {
12945                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12946                    Self { historySeconds: tuple.0 }
12947                }
12948            }
12949        }
12950        {
12951            #[doc(hidden)]
12952            #[allow(dead_code)]
12953            type UnderlyingSolTuple<'a> = ();
12954            #[doc(hidden)]
12955            type UnderlyingRustTuple<'a> = ();
12956            #[cfg(test)]
12957            #[allow(dead_code, unreachable_patterns)]
12958            fn _type_assertion(
12959                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12960            ) {
12961                match _t {
12962                    alloy_sol_types::private::AssertTypeEq::<
12963                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12964                    >(_) => {}
12965                }
12966            }
12967            #[automatically_derived]
12968            #[doc(hidden)]
12969            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
12970            for UnderlyingRustTuple<'_> {
12971                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
12972                    ()
12973                }
12974            }
12975            #[automatically_derived]
12976            #[doc(hidden)]
12977            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12978            for setstateHistoryRetentionPeriodReturn {
12979                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12980                    Self {}
12981                }
12982            }
12983        }
12984        impl setstateHistoryRetentionPeriodReturn {
12985            fn _tokenize(
12986                &self,
12987            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12988                '_,
12989            > {
12990                ()
12991            }
12992        }
12993        #[automatically_derived]
12994        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
12995            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12996            type Token<'a> = <Self::Parameters<
12997                'a,
12998            > as alloy_sol_types::SolType>::Token<'a>;
12999            type Return = setstateHistoryRetentionPeriodReturn;
13000            type ReturnTuple<'a> = ();
13001            type ReturnToken<'a> = <Self::ReturnTuple<
13002                'a,
13003            > as alloy_sol_types::SolType>::Token<'a>;
13004            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
13005            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
13006            #[inline]
13007            fn new<'a>(
13008                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13009            ) -> Self {
13010                tuple.into()
13011            }
13012            #[inline]
13013            fn tokenize(&self) -> Self::Token<'_> {
13014                (
13015                    <alloy::sol_types::sol_data::Uint<
13016                        32,
13017                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13018                )
13019            }
13020            #[inline]
13021            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13022                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
13023            }
13024            #[inline]
13025            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13026                <Self::ReturnTuple<
13027                    '_,
13028                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13029                    .map(Into::into)
13030            }
13031            #[inline]
13032            fn abi_decode_returns_validate(
13033                data: &[u8],
13034            ) -> alloy_sol_types::Result<Self::Return> {
13035                <Self::ReturnTuple<
13036                    '_,
13037                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13038                    .map(Into::into)
13039            }
13040        }
13041    };
13042    #[derive(serde::Serialize, serde::Deserialize)]
13043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13044    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
13045```solidity
13046function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
13047```*/
13048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13049    #[derive(Clone)]
13050    pub struct stateHistoryCommitmentsCall(
13051        pub alloy::sol_types::private::primitives::aliases::U256,
13052    );
13053    #[derive(serde::Serialize, serde::Deserialize)]
13054    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13055    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
13056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13057    #[derive(Clone)]
13058    pub struct stateHistoryCommitmentsReturn {
13059        #[allow(missing_docs)]
13060        pub l1BlockHeight: u64,
13061        #[allow(missing_docs)]
13062        pub l1BlockTimestamp: u64,
13063        #[allow(missing_docs)]
13064        pub hotShotBlockHeight: u64,
13065        #[allow(missing_docs)]
13066        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13067    }
13068    #[allow(
13069        non_camel_case_types,
13070        non_snake_case,
13071        clippy::pub_underscore_fields,
13072        clippy::style
13073    )]
13074    const _: () = {
13075        use alloy::sol_types as alloy_sol_types;
13076        {
13077            #[doc(hidden)]
13078            #[allow(dead_code)]
13079            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13080            #[doc(hidden)]
13081            type UnderlyingRustTuple<'a> = (
13082                alloy::sol_types::private::primitives::aliases::U256,
13083            );
13084            #[cfg(test)]
13085            #[allow(dead_code, unreachable_patterns)]
13086            fn _type_assertion(
13087                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13088            ) {
13089                match _t {
13090                    alloy_sol_types::private::AssertTypeEq::<
13091                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13092                    >(_) => {}
13093                }
13094            }
13095            #[automatically_derived]
13096            #[doc(hidden)]
13097            impl ::core::convert::From<stateHistoryCommitmentsCall>
13098            for UnderlyingRustTuple<'_> {
13099                fn from(value: stateHistoryCommitmentsCall) -> Self {
13100                    (value.0,)
13101                }
13102            }
13103            #[automatically_derived]
13104            #[doc(hidden)]
13105            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13106            for stateHistoryCommitmentsCall {
13107                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13108                    Self(tuple.0)
13109                }
13110            }
13111        }
13112        {
13113            #[doc(hidden)]
13114            #[allow(dead_code)]
13115            type UnderlyingSolTuple<'a> = (
13116                alloy::sol_types::sol_data::Uint<64>,
13117                alloy::sol_types::sol_data::Uint<64>,
13118                alloy::sol_types::sol_data::Uint<64>,
13119                BN254::ScalarField,
13120            );
13121            #[doc(hidden)]
13122            type UnderlyingRustTuple<'a> = (
13123                u64,
13124                u64,
13125                u64,
13126                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13127            );
13128            #[cfg(test)]
13129            #[allow(dead_code, unreachable_patterns)]
13130            fn _type_assertion(
13131                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13132            ) {
13133                match _t {
13134                    alloy_sol_types::private::AssertTypeEq::<
13135                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13136                    >(_) => {}
13137                }
13138            }
13139            #[automatically_derived]
13140            #[doc(hidden)]
13141            impl ::core::convert::From<stateHistoryCommitmentsReturn>
13142            for UnderlyingRustTuple<'_> {
13143                fn from(value: stateHistoryCommitmentsReturn) -> Self {
13144                    (
13145                        value.l1BlockHeight,
13146                        value.l1BlockTimestamp,
13147                        value.hotShotBlockHeight,
13148                        value.hotShotBlockCommRoot,
13149                    )
13150                }
13151            }
13152            #[automatically_derived]
13153            #[doc(hidden)]
13154            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13155            for stateHistoryCommitmentsReturn {
13156                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13157                    Self {
13158                        l1BlockHeight: tuple.0,
13159                        l1BlockTimestamp: tuple.1,
13160                        hotShotBlockHeight: tuple.2,
13161                        hotShotBlockCommRoot: tuple.3,
13162                    }
13163                }
13164            }
13165        }
13166        impl stateHistoryCommitmentsReturn {
13167            fn _tokenize(
13168                &self,
13169            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
13170                '_,
13171            > {
13172                (
13173                    <alloy::sol_types::sol_data::Uint<
13174                        64,
13175                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
13176                    <alloy::sol_types::sol_data::Uint<
13177                        64,
13178                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
13179                    <alloy::sol_types::sol_data::Uint<
13180                        64,
13181                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
13182                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13183                        &self.hotShotBlockCommRoot,
13184                    ),
13185                )
13186            }
13187        }
13188        #[automatically_derived]
13189        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
13190            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13191            type Token<'a> = <Self::Parameters<
13192                'a,
13193            > as alloy_sol_types::SolType>::Token<'a>;
13194            type Return = stateHistoryCommitmentsReturn;
13195            type ReturnTuple<'a> = (
13196                alloy::sol_types::sol_data::Uint<64>,
13197                alloy::sol_types::sol_data::Uint<64>,
13198                alloy::sol_types::sol_data::Uint<64>,
13199                BN254::ScalarField,
13200            );
13201            type ReturnToken<'a> = <Self::ReturnTuple<
13202                'a,
13203            > as alloy_sol_types::SolType>::Token<'a>;
13204            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
13205            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
13206            #[inline]
13207            fn new<'a>(
13208                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13209            ) -> Self {
13210                tuple.into()
13211            }
13212            #[inline]
13213            fn tokenize(&self) -> Self::Token<'_> {
13214                (
13215                    <alloy::sol_types::sol_data::Uint<
13216                        256,
13217                    > as alloy_sol_types::SolType>::tokenize(&self.0),
13218                )
13219            }
13220            #[inline]
13221            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13222                stateHistoryCommitmentsReturn::_tokenize(ret)
13223            }
13224            #[inline]
13225            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13226                <Self::ReturnTuple<
13227                    '_,
13228                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13229                    .map(Into::into)
13230            }
13231            #[inline]
13232            fn abi_decode_returns_validate(
13233                data: &[u8],
13234            ) -> alloy_sol_types::Result<Self::Return> {
13235                <Self::ReturnTuple<
13236                    '_,
13237                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13238                    .map(Into::into)
13239            }
13240        }
13241    };
13242    #[derive(serde::Serialize, serde::Deserialize)]
13243    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13244    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
13245```solidity
13246function stateHistoryFirstIndex() external view returns (uint64);
13247```*/
13248    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13249    #[derive(Clone)]
13250    pub struct stateHistoryFirstIndexCall;
13251    #[derive(serde::Serialize, serde::Deserialize)]
13252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13253    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
13254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13255    #[derive(Clone)]
13256    pub struct stateHistoryFirstIndexReturn {
13257        #[allow(missing_docs)]
13258        pub _0: u64,
13259    }
13260    #[allow(
13261        non_camel_case_types,
13262        non_snake_case,
13263        clippy::pub_underscore_fields,
13264        clippy::style
13265    )]
13266    const _: () = {
13267        use alloy::sol_types as alloy_sol_types;
13268        {
13269            #[doc(hidden)]
13270            #[allow(dead_code)]
13271            type UnderlyingSolTuple<'a> = ();
13272            #[doc(hidden)]
13273            type UnderlyingRustTuple<'a> = ();
13274            #[cfg(test)]
13275            #[allow(dead_code, unreachable_patterns)]
13276            fn _type_assertion(
13277                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13278            ) {
13279                match _t {
13280                    alloy_sol_types::private::AssertTypeEq::<
13281                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13282                    >(_) => {}
13283                }
13284            }
13285            #[automatically_derived]
13286            #[doc(hidden)]
13287            impl ::core::convert::From<stateHistoryFirstIndexCall>
13288            for UnderlyingRustTuple<'_> {
13289                fn from(value: stateHistoryFirstIndexCall) -> Self {
13290                    ()
13291                }
13292            }
13293            #[automatically_derived]
13294            #[doc(hidden)]
13295            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13296            for stateHistoryFirstIndexCall {
13297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13298                    Self
13299                }
13300            }
13301        }
13302        {
13303            #[doc(hidden)]
13304            #[allow(dead_code)]
13305            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13306            #[doc(hidden)]
13307            type UnderlyingRustTuple<'a> = (u64,);
13308            #[cfg(test)]
13309            #[allow(dead_code, unreachable_patterns)]
13310            fn _type_assertion(
13311                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13312            ) {
13313                match _t {
13314                    alloy_sol_types::private::AssertTypeEq::<
13315                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13316                    >(_) => {}
13317                }
13318            }
13319            #[automatically_derived]
13320            #[doc(hidden)]
13321            impl ::core::convert::From<stateHistoryFirstIndexReturn>
13322            for UnderlyingRustTuple<'_> {
13323                fn from(value: stateHistoryFirstIndexReturn) -> Self {
13324                    (value._0,)
13325                }
13326            }
13327            #[automatically_derived]
13328            #[doc(hidden)]
13329            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13330            for stateHistoryFirstIndexReturn {
13331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13332                    Self { _0: tuple.0 }
13333                }
13334            }
13335        }
13336        #[automatically_derived]
13337        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
13338            type Parameters<'a> = ();
13339            type Token<'a> = <Self::Parameters<
13340                'a,
13341            > as alloy_sol_types::SolType>::Token<'a>;
13342            type Return = u64;
13343            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13344            type ReturnToken<'a> = <Self::ReturnTuple<
13345                'a,
13346            > as alloy_sol_types::SolType>::Token<'a>;
13347            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
13348            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
13349            #[inline]
13350            fn new<'a>(
13351                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13352            ) -> Self {
13353                tuple.into()
13354            }
13355            #[inline]
13356            fn tokenize(&self) -> Self::Token<'_> {
13357                ()
13358            }
13359            #[inline]
13360            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13361                (
13362                    <alloy::sol_types::sol_data::Uint<
13363                        64,
13364                    > as alloy_sol_types::SolType>::tokenize(ret),
13365                )
13366            }
13367            #[inline]
13368            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13369                <Self::ReturnTuple<
13370                    '_,
13371                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13372                    .map(|r| {
13373                        let r: stateHistoryFirstIndexReturn = r.into();
13374                        r._0
13375                    })
13376            }
13377            #[inline]
13378            fn abi_decode_returns_validate(
13379                data: &[u8],
13380            ) -> alloy_sol_types::Result<Self::Return> {
13381                <Self::ReturnTuple<
13382                    '_,
13383                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13384                    .map(|r| {
13385                        let r: stateHistoryFirstIndexReturn = r.into();
13386                        r._0
13387                    })
13388            }
13389        }
13390    };
13391    #[derive(serde::Serialize, serde::Deserialize)]
13392    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13393    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
13394```solidity
13395function stateHistoryRetentionPeriod() external view returns (uint32);
13396```*/
13397    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13398    #[derive(Clone)]
13399    pub struct stateHistoryRetentionPeriodCall;
13400    #[derive(serde::Serialize, serde::Deserialize)]
13401    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13402    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
13403    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13404    #[derive(Clone)]
13405    pub struct stateHistoryRetentionPeriodReturn {
13406        #[allow(missing_docs)]
13407        pub _0: u32,
13408    }
13409    #[allow(
13410        non_camel_case_types,
13411        non_snake_case,
13412        clippy::pub_underscore_fields,
13413        clippy::style
13414    )]
13415    const _: () = {
13416        use alloy::sol_types as alloy_sol_types;
13417        {
13418            #[doc(hidden)]
13419            #[allow(dead_code)]
13420            type UnderlyingSolTuple<'a> = ();
13421            #[doc(hidden)]
13422            type UnderlyingRustTuple<'a> = ();
13423            #[cfg(test)]
13424            #[allow(dead_code, unreachable_patterns)]
13425            fn _type_assertion(
13426                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13427            ) {
13428                match _t {
13429                    alloy_sol_types::private::AssertTypeEq::<
13430                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13431                    >(_) => {}
13432                }
13433            }
13434            #[automatically_derived]
13435            #[doc(hidden)]
13436            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
13437            for UnderlyingRustTuple<'_> {
13438                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
13439                    ()
13440                }
13441            }
13442            #[automatically_derived]
13443            #[doc(hidden)]
13444            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13445            for stateHistoryRetentionPeriodCall {
13446                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13447                    Self
13448                }
13449            }
13450        }
13451        {
13452            #[doc(hidden)]
13453            #[allow(dead_code)]
13454            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13455            #[doc(hidden)]
13456            type UnderlyingRustTuple<'a> = (u32,);
13457            #[cfg(test)]
13458            #[allow(dead_code, unreachable_patterns)]
13459            fn _type_assertion(
13460                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13461            ) {
13462                match _t {
13463                    alloy_sol_types::private::AssertTypeEq::<
13464                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13465                    >(_) => {}
13466                }
13467            }
13468            #[automatically_derived]
13469            #[doc(hidden)]
13470            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
13471            for UnderlyingRustTuple<'_> {
13472                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
13473                    (value._0,)
13474                }
13475            }
13476            #[automatically_derived]
13477            #[doc(hidden)]
13478            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13479            for stateHistoryRetentionPeriodReturn {
13480                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13481                    Self { _0: tuple.0 }
13482                }
13483            }
13484        }
13485        #[automatically_derived]
13486        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
13487            type Parameters<'a> = ();
13488            type Token<'a> = <Self::Parameters<
13489                'a,
13490            > as alloy_sol_types::SolType>::Token<'a>;
13491            type Return = u32;
13492            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13493            type ReturnToken<'a> = <Self::ReturnTuple<
13494                'a,
13495            > as alloy_sol_types::SolType>::Token<'a>;
13496            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
13497            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
13498            #[inline]
13499            fn new<'a>(
13500                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13501            ) -> Self {
13502                tuple.into()
13503            }
13504            #[inline]
13505            fn tokenize(&self) -> Self::Token<'_> {
13506                ()
13507            }
13508            #[inline]
13509            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13510                (
13511                    <alloy::sol_types::sol_data::Uint<
13512                        32,
13513                    > as alloy_sol_types::SolType>::tokenize(ret),
13514                )
13515            }
13516            #[inline]
13517            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13518                <Self::ReturnTuple<
13519                    '_,
13520                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13521                    .map(|r| {
13522                        let r: stateHistoryRetentionPeriodReturn = r.into();
13523                        r._0
13524                    })
13525            }
13526            #[inline]
13527            fn abi_decode_returns_validate(
13528                data: &[u8],
13529            ) -> alloy_sol_types::Result<Self::Return> {
13530                <Self::ReturnTuple<
13531                    '_,
13532                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13533                    .map(|r| {
13534                        let r: stateHistoryRetentionPeriodReturn = r.into();
13535                        r._0
13536                    })
13537            }
13538        }
13539    };
13540    #[derive(serde::Serialize, serde::Deserialize)]
13541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13542    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
13543```solidity
13544function transferOwnership(address newOwner) external;
13545```*/
13546    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13547    #[derive(Clone)]
13548    pub struct transferOwnershipCall {
13549        #[allow(missing_docs)]
13550        pub newOwner: alloy::sol_types::private::Address,
13551    }
13552    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
13553    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13554    #[derive(Clone)]
13555    pub struct transferOwnershipReturn {}
13556    #[allow(
13557        non_camel_case_types,
13558        non_snake_case,
13559        clippy::pub_underscore_fields,
13560        clippy::style
13561    )]
13562    const _: () = {
13563        use alloy::sol_types as alloy_sol_types;
13564        {
13565            #[doc(hidden)]
13566            #[allow(dead_code)]
13567            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13568            #[doc(hidden)]
13569            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13570            #[cfg(test)]
13571            #[allow(dead_code, unreachable_patterns)]
13572            fn _type_assertion(
13573                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13574            ) {
13575                match _t {
13576                    alloy_sol_types::private::AssertTypeEq::<
13577                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13578                    >(_) => {}
13579                }
13580            }
13581            #[automatically_derived]
13582            #[doc(hidden)]
13583            impl ::core::convert::From<transferOwnershipCall>
13584            for UnderlyingRustTuple<'_> {
13585                fn from(value: transferOwnershipCall) -> Self {
13586                    (value.newOwner,)
13587                }
13588            }
13589            #[automatically_derived]
13590            #[doc(hidden)]
13591            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13592            for transferOwnershipCall {
13593                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13594                    Self { newOwner: tuple.0 }
13595                }
13596            }
13597        }
13598        {
13599            #[doc(hidden)]
13600            #[allow(dead_code)]
13601            type UnderlyingSolTuple<'a> = ();
13602            #[doc(hidden)]
13603            type UnderlyingRustTuple<'a> = ();
13604            #[cfg(test)]
13605            #[allow(dead_code, unreachable_patterns)]
13606            fn _type_assertion(
13607                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13608            ) {
13609                match _t {
13610                    alloy_sol_types::private::AssertTypeEq::<
13611                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13612                    >(_) => {}
13613                }
13614            }
13615            #[automatically_derived]
13616            #[doc(hidden)]
13617            impl ::core::convert::From<transferOwnershipReturn>
13618            for UnderlyingRustTuple<'_> {
13619                fn from(value: transferOwnershipReturn) -> Self {
13620                    ()
13621                }
13622            }
13623            #[automatically_derived]
13624            #[doc(hidden)]
13625            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13626            for transferOwnershipReturn {
13627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13628                    Self {}
13629                }
13630            }
13631        }
13632        impl transferOwnershipReturn {
13633            fn _tokenize(
13634                &self,
13635            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13636                ()
13637            }
13638        }
13639        #[automatically_derived]
13640        impl alloy_sol_types::SolCall for transferOwnershipCall {
13641            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13642            type Token<'a> = <Self::Parameters<
13643                'a,
13644            > as alloy_sol_types::SolType>::Token<'a>;
13645            type Return = transferOwnershipReturn;
13646            type ReturnTuple<'a> = ();
13647            type ReturnToken<'a> = <Self::ReturnTuple<
13648                'a,
13649            > as alloy_sol_types::SolType>::Token<'a>;
13650            const SIGNATURE: &'static str = "transferOwnership(address)";
13651            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
13652            #[inline]
13653            fn new<'a>(
13654                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13655            ) -> Self {
13656                tuple.into()
13657            }
13658            #[inline]
13659            fn tokenize(&self) -> Self::Token<'_> {
13660                (
13661                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13662                        &self.newOwner,
13663                    ),
13664                )
13665            }
13666            #[inline]
13667            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13668                transferOwnershipReturn::_tokenize(ret)
13669            }
13670            #[inline]
13671            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13672                <Self::ReturnTuple<
13673                    '_,
13674                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13675                    .map(Into::into)
13676            }
13677            #[inline]
13678            fn abi_decode_returns_validate(
13679                data: &[u8],
13680            ) -> alloy_sol_types::Result<Self::Return> {
13681                <Self::ReturnTuple<
13682                    '_,
13683                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13684                    .map(Into::into)
13685            }
13686        }
13687    };
13688    #[derive(serde::Serialize, serde::Deserialize)]
13689    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13690    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
13691```solidity
13692function updateEpochStartBlock(uint64 newEpochStartBlock) external;
13693```*/
13694    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13695    #[derive(Clone)]
13696    pub struct updateEpochStartBlockCall {
13697        #[allow(missing_docs)]
13698        pub newEpochStartBlock: u64,
13699    }
13700    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
13701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13702    #[derive(Clone)]
13703    pub struct updateEpochStartBlockReturn {}
13704    #[allow(
13705        non_camel_case_types,
13706        non_snake_case,
13707        clippy::pub_underscore_fields,
13708        clippy::style
13709    )]
13710    const _: () = {
13711        use alloy::sol_types as alloy_sol_types;
13712        {
13713            #[doc(hidden)]
13714            #[allow(dead_code)]
13715            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13716            #[doc(hidden)]
13717            type UnderlyingRustTuple<'a> = (u64,);
13718            #[cfg(test)]
13719            #[allow(dead_code, unreachable_patterns)]
13720            fn _type_assertion(
13721                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13722            ) {
13723                match _t {
13724                    alloy_sol_types::private::AssertTypeEq::<
13725                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13726                    >(_) => {}
13727                }
13728            }
13729            #[automatically_derived]
13730            #[doc(hidden)]
13731            impl ::core::convert::From<updateEpochStartBlockCall>
13732            for UnderlyingRustTuple<'_> {
13733                fn from(value: updateEpochStartBlockCall) -> Self {
13734                    (value.newEpochStartBlock,)
13735                }
13736            }
13737            #[automatically_derived]
13738            #[doc(hidden)]
13739            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13740            for updateEpochStartBlockCall {
13741                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13742                    Self {
13743                        newEpochStartBlock: tuple.0,
13744                    }
13745                }
13746            }
13747        }
13748        {
13749            #[doc(hidden)]
13750            #[allow(dead_code)]
13751            type UnderlyingSolTuple<'a> = ();
13752            #[doc(hidden)]
13753            type UnderlyingRustTuple<'a> = ();
13754            #[cfg(test)]
13755            #[allow(dead_code, unreachable_patterns)]
13756            fn _type_assertion(
13757                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13758            ) {
13759                match _t {
13760                    alloy_sol_types::private::AssertTypeEq::<
13761                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13762                    >(_) => {}
13763                }
13764            }
13765            #[automatically_derived]
13766            #[doc(hidden)]
13767            impl ::core::convert::From<updateEpochStartBlockReturn>
13768            for UnderlyingRustTuple<'_> {
13769                fn from(value: updateEpochStartBlockReturn) -> Self {
13770                    ()
13771                }
13772            }
13773            #[automatically_derived]
13774            #[doc(hidden)]
13775            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13776            for updateEpochStartBlockReturn {
13777                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13778                    Self {}
13779                }
13780            }
13781        }
13782        impl updateEpochStartBlockReturn {
13783            fn _tokenize(
13784                &self,
13785            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
13786                '_,
13787            > {
13788                ()
13789            }
13790        }
13791        #[automatically_derived]
13792        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
13793            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13794            type Token<'a> = <Self::Parameters<
13795                'a,
13796            > as alloy_sol_types::SolType>::Token<'a>;
13797            type Return = updateEpochStartBlockReturn;
13798            type ReturnTuple<'a> = ();
13799            type ReturnToken<'a> = <Self::ReturnTuple<
13800                'a,
13801            > as alloy_sol_types::SolType>::Token<'a>;
13802            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
13803            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
13804            #[inline]
13805            fn new<'a>(
13806                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13807            ) -> Self {
13808                tuple.into()
13809            }
13810            #[inline]
13811            fn tokenize(&self) -> Self::Token<'_> {
13812                (
13813                    <alloy::sol_types::sol_data::Uint<
13814                        64,
13815                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
13816                )
13817            }
13818            #[inline]
13819            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13820                updateEpochStartBlockReturn::_tokenize(ret)
13821            }
13822            #[inline]
13823            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13824                <Self::ReturnTuple<
13825                    '_,
13826                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13827                    .map(Into::into)
13828            }
13829            #[inline]
13830            fn abi_decode_returns_validate(
13831                data: &[u8],
13832            ) -> alloy_sol_types::Result<Self::Return> {
13833                <Self::ReturnTuple<
13834                    '_,
13835                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13836                    .map(Into::into)
13837            }
13838        }
13839    };
13840    #[derive(serde::Serialize, serde::Deserialize)]
13841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13842    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
13843```solidity
13844function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
13845```*/
13846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13847    #[derive(Clone)]
13848    pub struct upgradeToAndCallCall {
13849        #[allow(missing_docs)]
13850        pub newImplementation: alloy::sol_types::private::Address,
13851        #[allow(missing_docs)]
13852        pub data: alloy::sol_types::private::Bytes,
13853    }
13854    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
13855    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13856    #[derive(Clone)]
13857    pub struct upgradeToAndCallReturn {}
13858    #[allow(
13859        non_camel_case_types,
13860        non_snake_case,
13861        clippy::pub_underscore_fields,
13862        clippy::style
13863    )]
13864    const _: () = {
13865        use alloy::sol_types as alloy_sol_types;
13866        {
13867            #[doc(hidden)]
13868            #[allow(dead_code)]
13869            type UnderlyingSolTuple<'a> = (
13870                alloy::sol_types::sol_data::Address,
13871                alloy::sol_types::sol_data::Bytes,
13872            );
13873            #[doc(hidden)]
13874            type UnderlyingRustTuple<'a> = (
13875                alloy::sol_types::private::Address,
13876                alloy::sol_types::private::Bytes,
13877            );
13878            #[cfg(test)]
13879            #[allow(dead_code, unreachable_patterns)]
13880            fn _type_assertion(
13881                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13882            ) {
13883                match _t {
13884                    alloy_sol_types::private::AssertTypeEq::<
13885                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13886                    >(_) => {}
13887                }
13888            }
13889            #[automatically_derived]
13890            #[doc(hidden)]
13891            impl ::core::convert::From<upgradeToAndCallCall>
13892            for UnderlyingRustTuple<'_> {
13893                fn from(value: upgradeToAndCallCall) -> Self {
13894                    (value.newImplementation, value.data)
13895                }
13896            }
13897            #[automatically_derived]
13898            #[doc(hidden)]
13899            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13900            for upgradeToAndCallCall {
13901                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13902                    Self {
13903                        newImplementation: tuple.0,
13904                        data: tuple.1,
13905                    }
13906                }
13907            }
13908        }
13909        {
13910            #[doc(hidden)]
13911            #[allow(dead_code)]
13912            type UnderlyingSolTuple<'a> = ();
13913            #[doc(hidden)]
13914            type UnderlyingRustTuple<'a> = ();
13915            #[cfg(test)]
13916            #[allow(dead_code, unreachable_patterns)]
13917            fn _type_assertion(
13918                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13919            ) {
13920                match _t {
13921                    alloy_sol_types::private::AssertTypeEq::<
13922                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13923                    >(_) => {}
13924                }
13925            }
13926            #[automatically_derived]
13927            #[doc(hidden)]
13928            impl ::core::convert::From<upgradeToAndCallReturn>
13929            for UnderlyingRustTuple<'_> {
13930                fn from(value: upgradeToAndCallReturn) -> Self {
13931                    ()
13932                }
13933            }
13934            #[automatically_derived]
13935            #[doc(hidden)]
13936            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13937            for upgradeToAndCallReturn {
13938                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13939                    Self {}
13940                }
13941            }
13942        }
13943        impl upgradeToAndCallReturn {
13944            fn _tokenize(
13945                &self,
13946            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13947                ()
13948            }
13949        }
13950        #[automatically_derived]
13951        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13952            type Parameters<'a> = (
13953                alloy::sol_types::sol_data::Address,
13954                alloy::sol_types::sol_data::Bytes,
13955            );
13956            type Token<'a> = <Self::Parameters<
13957                'a,
13958            > as alloy_sol_types::SolType>::Token<'a>;
13959            type Return = upgradeToAndCallReturn;
13960            type ReturnTuple<'a> = ();
13961            type ReturnToken<'a> = <Self::ReturnTuple<
13962                'a,
13963            > as alloy_sol_types::SolType>::Token<'a>;
13964            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
13965            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
13966            #[inline]
13967            fn new<'a>(
13968                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13969            ) -> Self {
13970                tuple.into()
13971            }
13972            #[inline]
13973            fn tokenize(&self) -> Self::Token<'_> {
13974                (
13975                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13976                        &self.newImplementation,
13977                    ),
13978                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13979                        &self.data,
13980                    ),
13981                )
13982            }
13983            #[inline]
13984            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13985                upgradeToAndCallReturn::_tokenize(ret)
13986            }
13987            #[inline]
13988            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13989                <Self::ReturnTuple<
13990                    '_,
13991                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13992                    .map(Into::into)
13993            }
13994            #[inline]
13995            fn abi_decode_returns_validate(
13996                data: &[u8],
13997            ) -> alloy_sol_types::Result<Self::Return> {
13998                <Self::ReturnTuple<
13999                    '_,
14000                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14001                    .map(Into::into)
14002            }
14003        }
14004    };
14005    #[derive(serde::Serialize, serde::Deserialize)]
14006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14007    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
14008```solidity
14009function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
14010```*/
14011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14012    #[derive(Clone)]
14013    pub struct votingStakeTableStateCall;
14014    #[derive(serde::Serialize, serde::Deserialize)]
14015    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14016    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
14017    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14018    #[derive(Clone)]
14019    pub struct votingStakeTableStateReturn {
14020        #[allow(missing_docs)]
14021        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
14022        #[allow(missing_docs)]
14023        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14024        #[allow(missing_docs)]
14025        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14026        #[allow(missing_docs)]
14027        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14028    }
14029    #[allow(
14030        non_camel_case_types,
14031        non_snake_case,
14032        clippy::pub_underscore_fields,
14033        clippy::style
14034    )]
14035    const _: () = {
14036        use alloy::sol_types as alloy_sol_types;
14037        {
14038            #[doc(hidden)]
14039            #[allow(dead_code)]
14040            type UnderlyingSolTuple<'a> = ();
14041            #[doc(hidden)]
14042            type UnderlyingRustTuple<'a> = ();
14043            #[cfg(test)]
14044            #[allow(dead_code, unreachable_patterns)]
14045            fn _type_assertion(
14046                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14047            ) {
14048                match _t {
14049                    alloy_sol_types::private::AssertTypeEq::<
14050                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14051                    >(_) => {}
14052                }
14053            }
14054            #[automatically_derived]
14055            #[doc(hidden)]
14056            impl ::core::convert::From<votingStakeTableStateCall>
14057            for UnderlyingRustTuple<'_> {
14058                fn from(value: votingStakeTableStateCall) -> Self {
14059                    ()
14060                }
14061            }
14062            #[automatically_derived]
14063            #[doc(hidden)]
14064            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14065            for votingStakeTableStateCall {
14066                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14067                    Self
14068                }
14069            }
14070        }
14071        {
14072            #[doc(hidden)]
14073            #[allow(dead_code)]
14074            type UnderlyingSolTuple<'a> = (
14075                alloy::sol_types::sol_data::Uint<256>,
14076                BN254::ScalarField,
14077                BN254::ScalarField,
14078                BN254::ScalarField,
14079            );
14080            #[doc(hidden)]
14081            type UnderlyingRustTuple<'a> = (
14082                alloy::sol_types::private::primitives::aliases::U256,
14083                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14084                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14085                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14086            );
14087            #[cfg(test)]
14088            #[allow(dead_code, unreachable_patterns)]
14089            fn _type_assertion(
14090                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14091            ) {
14092                match _t {
14093                    alloy_sol_types::private::AssertTypeEq::<
14094                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14095                    >(_) => {}
14096                }
14097            }
14098            #[automatically_derived]
14099            #[doc(hidden)]
14100            impl ::core::convert::From<votingStakeTableStateReturn>
14101            for UnderlyingRustTuple<'_> {
14102                fn from(value: votingStakeTableStateReturn) -> Self {
14103                    (
14104                        value.threshold,
14105                        value.blsKeyComm,
14106                        value.schnorrKeyComm,
14107                        value.amountComm,
14108                    )
14109                }
14110            }
14111            #[automatically_derived]
14112            #[doc(hidden)]
14113            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14114            for votingStakeTableStateReturn {
14115                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14116                    Self {
14117                        threshold: tuple.0,
14118                        blsKeyComm: tuple.1,
14119                        schnorrKeyComm: tuple.2,
14120                        amountComm: tuple.3,
14121                    }
14122                }
14123            }
14124        }
14125        impl votingStakeTableStateReturn {
14126            fn _tokenize(
14127                &self,
14128            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14129                '_,
14130            > {
14131                (
14132                    <alloy::sol_types::sol_data::Uint<
14133                        256,
14134                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
14135                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14136                        &self.blsKeyComm,
14137                    ),
14138                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14139                        &self.schnorrKeyComm,
14140                    ),
14141                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14142                        &self.amountComm,
14143                    ),
14144                )
14145            }
14146        }
14147        #[automatically_derived]
14148        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
14149            type Parameters<'a> = ();
14150            type Token<'a> = <Self::Parameters<
14151                'a,
14152            > as alloy_sol_types::SolType>::Token<'a>;
14153            type Return = votingStakeTableStateReturn;
14154            type ReturnTuple<'a> = (
14155                alloy::sol_types::sol_data::Uint<256>,
14156                BN254::ScalarField,
14157                BN254::ScalarField,
14158                BN254::ScalarField,
14159            );
14160            type ReturnToken<'a> = <Self::ReturnTuple<
14161                'a,
14162            > as alloy_sol_types::SolType>::Token<'a>;
14163            const SIGNATURE: &'static str = "votingStakeTableState()";
14164            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
14165            #[inline]
14166            fn new<'a>(
14167                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14168            ) -> Self {
14169                tuple.into()
14170            }
14171            #[inline]
14172            fn tokenize(&self) -> Self::Token<'_> {
14173                ()
14174            }
14175            #[inline]
14176            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14177                votingStakeTableStateReturn::_tokenize(ret)
14178            }
14179            #[inline]
14180            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14181                <Self::ReturnTuple<
14182                    '_,
14183                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14184                    .map(Into::into)
14185            }
14186            #[inline]
14187            fn abi_decode_returns_validate(
14188                data: &[u8],
14189            ) -> alloy_sol_types::Result<Self::Return> {
14190                <Self::ReturnTuple<
14191                    '_,
14192                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14193                    .map(Into::into)
14194            }
14195        }
14196    };
14197    ///Container for all the [`LightClientV3`](self) function calls.
14198    #[derive(Clone)]
14199    #[derive(serde::Serialize, serde::Deserialize)]
14200    #[derive()]
14201    pub enum LightClientV3Calls {
14202        #[allow(missing_docs)]
14203        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
14204        #[allow(missing_docs)]
14205        _getVk(_getVkCall),
14206        #[allow(missing_docs)]
14207        authRoot(authRootCall),
14208        #[allow(missing_docs)]
14209        blocksPerEpoch(blocksPerEpochCall),
14210        #[allow(missing_docs)]
14211        currentBlockNumber(currentBlockNumberCall),
14212        #[allow(missing_docs)]
14213        currentEpoch(currentEpochCall),
14214        #[allow(missing_docs)]
14215        disablePermissionedProverMode(disablePermissionedProverModeCall),
14216        #[allow(missing_docs)]
14217        epochFromBlockNumber(epochFromBlockNumberCall),
14218        #[allow(missing_docs)]
14219        epochStartBlock(epochStartBlockCall),
14220        #[allow(missing_docs)]
14221        finalizedState(finalizedStateCall),
14222        #[allow(missing_docs)]
14223        genesisStakeTableState(genesisStakeTableStateCall),
14224        #[allow(missing_docs)]
14225        genesisState(genesisStateCall),
14226        #[allow(missing_docs)]
14227        getHotShotCommitment(getHotShotCommitmentCall),
14228        #[allow(missing_docs)]
14229        getStateHistoryCount(getStateHistoryCountCall),
14230        #[allow(missing_docs)]
14231        getVersion(getVersionCall),
14232        #[allow(missing_docs)]
14233        initialize(initializeCall),
14234        #[allow(missing_docs)]
14235        initializeV2(initializeV2Call),
14236        #[allow(missing_docs)]
14237        initializeV3(initializeV3Call),
14238        #[allow(missing_docs)]
14239        isEpochRoot(isEpochRootCall),
14240        #[allow(missing_docs)]
14241        isGtEpochRoot(isGtEpochRootCall),
14242        #[allow(missing_docs)]
14243        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
14244        #[allow(missing_docs)]
14245        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
14246        #[allow(missing_docs)]
14247        newFinalizedState_0(newFinalizedState_0Call),
14248        #[allow(missing_docs)]
14249        newFinalizedState_1(newFinalizedState_1Call),
14250        #[allow(missing_docs)]
14251        newFinalizedState_2(newFinalizedState_2Call),
14252        #[allow(missing_docs)]
14253        owner(ownerCall),
14254        #[allow(missing_docs)]
14255        permissionedProver(permissionedProverCall),
14256        #[allow(missing_docs)]
14257        proxiableUUID(proxiableUUIDCall),
14258        #[allow(missing_docs)]
14259        renounceOwnership(renounceOwnershipCall),
14260        #[allow(missing_docs)]
14261        setPermissionedProver(setPermissionedProverCall),
14262        #[allow(missing_docs)]
14263        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
14264        #[allow(missing_docs)]
14265        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
14266        #[allow(missing_docs)]
14267        stateHistoryCommitments(stateHistoryCommitmentsCall),
14268        #[allow(missing_docs)]
14269        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
14270        #[allow(missing_docs)]
14271        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
14272        #[allow(missing_docs)]
14273        transferOwnership(transferOwnershipCall),
14274        #[allow(missing_docs)]
14275        updateEpochStartBlock(updateEpochStartBlockCall),
14276        #[allow(missing_docs)]
14277        upgradeToAndCall(upgradeToAndCallCall),
14278        #[allow(missing_docs)]
14279        votingStakeTableState(votingStakeTableStateCall),
14280    }
14281    impl LightClientV3Calls {
14282        /// All the selectors of this enum.
14283        ///
14284        /// Note that the selectors might not be in the same order as the variants.
14285        /// No guarantees are made about the order of the selectors.
14286        ///
14287        /// Prefer using `SolInterface` methods instead.
14288        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14289            [1u8, 63u8, 165u8, 252u8],
14290            [2u8, 181u8, 146u8, 243u8],
14291            [6u8, 37u8, 225u8, 155u8],
14292            [13u8, 142u8, 110u8, 44u8],
14293            [18u8, 23u8, 60u8, 44u8],
14294            [22u8, 122u8, 198u8, 24u8],
14295            [32u8, 99u8, 212u8, 247u8],
14296            [37u8, 41u8, 116u8, 39u8],
14297            [47u8, 121u8, 136u8, 157u8],
14298            [48u8, 12u8, 137u8, 221u8],
14299            [49u8, 61u8, 247u8, 177u8],
14300            [55u8, 142u8, 194u8, 59u8],
14301            [56u8, 228u8, 84u8, 177u8],
14302            [62u8, 213u8, 91u8, 123u8],
14303            [66u8, 109u8, 49u8, 148u8],
14304            [67u8, 61u8, 186u8, 159u8],
14305            [79u8, 30u8, 242u8, 134u8],
14306            [82u8, 209u8, 144u8, 45u8],
14307            [105u8, 204u8, 106u8, 4u8],
14308            [113u8, 80u8, 24u8, 166u8],
14309            [117u8, 124u8, 55u8, 173u8],
14310            [118u8, 103u8, 24u8, 8u8],
14311            [130u8, 110u8, 65u8, 252u8],
14312            [133u8, 132u8, 210u8, 63u8],
14313            [141u8, 165u8, 203u8, 91u8],
14314            [144u8, 193u8, 67u8, 144u8],
14315            [150u8, 193u8, 202u8, 97u8],
14316            [153u8, 131u8, 40u8, 232u8],
14317            [155u8, 170u8, 60u8, 201u8],
14318            [159u8, 219u8, 84u8, 167u8],
14319            [170u8, 189u8, 93u8, 179u8],
14320            [173u8, 60u8, 177u8, 204u8],
14321            [179u8, 59u8, 196u8, 145u8],
14322            [194u8, 59u8, 158u8, 158u8],
14323            [210u8, 77u8, 147u8, 61u8],
14324            [224u8, 48u8, 51u8, 1u8],
14325            [240u8, 104u8, 32u8, 84u8],
14326            [242u8, 253u8, 227u8, 139u8],
14327            [249u8, 229u8, 13u8, 25u8],
14328        ];
14329        /// The names of the variants in the same order as `SELECTORS`.
14330        pub const VARIANT_NAMES: &'static [&'static str] = &[
14331            ::core::stringify!(setPermissionedProver),
14332            ::core::stringify!(stateHistoryCommitments),
14333            ::core::stringify!(votingStakeTableState),
14334            ::core::stringify!(getVersion),
14335            ::core::stringify!(_getVk),
14336            ::core::stringify!(updateEpochStartBlock),
14337            ::core::stringify!(newFinalizedState_0),
14338            ::core::stringify!(isEpochRoot),
14339            ::core::stringify!(stateHistoryFirstIndex),
14340            ::core::stringify!(isGtEpochRoot),
14341            ::core::stringify!(permissionedProver),
14342            ::core::stringify!(currentBlockNumber),
14343            ::core::stringify!(initializeV3),
14344            ::core::stringify!(epochStartBlock),
14345            ::core::stringify!(genesisStakeTableState),
14346            ::core::stringify!(setStateHistoryRetentionPeriod),
14347            ::core::stringify!(upgradeToAndCall),
14348            ::core::stringify!(proxiableUUID),
14349            ::core::stringify!(disablePermissionedProverMode),
14350            ::core::stringify!(renounceOwnership),
14351            ::core::stringify!(newFinalizedState_1),
14352            ::core::stringify!(currentEpoch),
14353            ::core::stringify!(isPermissionedProverEnabled),
14354            ::core::stringify!(getHotShotCommitment),
14355            ::core::stringify!(owner),
14356            ::core::stringify!(epochFromBlockNumber),
14357            ::core::stringify!(setstateHistoryRetentionPeriod),
14358            ::core::stringify!(authRoot),
14359            ::core::stringify!(initialize),
14360            ::core::stringify!(finalizedState),
14361            ::core::stringify!(newFinalizedState_2),
14362            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
14363            ::core::stringify!(initializeV2),
14364            ::core::stringify!(stateHistoryRetentionPeriod),
14365            ::core::stringify!(genesisState),
14366            ::core::stringify!(lagOverEscapeHatchThreshold),
14367            ::core::stringify!(blocksPerEpoch),
14368            ::core::stringify!(transferOwnership),
14369            ::core::stringify!(getStateHistoryCount),
14370        ];
14371        /// The signatures in the same order as `SELECTORS`.
14372        pub const SIGNATURES: &'static [&'static str] = &[
14373            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
14374            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
14375            <votingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14376            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
14377            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
14378            <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
14379            <newFinalizedState_0Call as alloy_sol_types::SolCall>::SIGNATURE,
14380            <isEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
14381            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
14382            <isGtEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
14383            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
14384            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
14385            <initializeV3Call as alloy_sol_types::SolCall>::SIGNATURE,
14386            <epochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
14387            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14388            <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
14389            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
14390            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
14391            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
14392            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
14393            <newFinalizedState_1Call as alloy_sol_types::SolCall>::SIGNATURE,
14394            <currentEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
14395            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
14396            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
14397            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
14398            <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
14399            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
14400            <authRootCall as alloy_sol_types::SolCall>::SIGNATURE,
14401            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
14402            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14403            <newFinalizedState_2Call as alloy_sol_types::SolCall>::SIGNATURE,
14404            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
14405            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
14406            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
14407            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14408            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
14409            <blocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
14410            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
14411            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
14412        ];
14413        /// Returns the signature for the given selector, if known.
14414        #[inline]
14415        pub fn signature_by_selector(
14416            selector: [u8; 4usize],
14417        ) -> ::core::option::Option<&'static str> {
14418            match Self::SELECTORS.binary_search(&selector) {
14419                ::core::result::Result::Ok(idx) => {
14420                    ::core::option::Option::Some(Self::SIGNATURES[idx])
14421                }
14422                ::core::result::Result::Err(_) => ::core::option::Option::None,
14423            }
14424        }
14425        /// Returns the enum variant name for the given selector, if known.
14426        #[inline]
14427        pub fn name_by_selector(
14428            selector: [u8; 4usize],
14429        ) -> ::core::option::Option<&'static str> {
14430            let sig = Self::signature_by_selector(selector)?;
14431            sig.split_once('(').map(|(name, _)| name)
14432        }
14433    }
14434    #[automatically_derived]
14435    impl alloy_sol_types::SolInterface for LightClientV3Calls {
14436        const NAME: &'static str = "LightClientV3Calls";
14437        const MIN_DATA_LENGTH: usize = 0usize;
14438        const COUNT: usize = 39usize;
14439        #[inline]
14440        fn selector(&self) -> [u8; 4] {
14441            match self {
14442                Self::UPGRADE_INTERFACE_VERSION(_) => {
14443                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
14444                }
14445                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
14446                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
14447                Self::blocksPerEpoch(_) => {
14448                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14449                }
14450                Self::currentBlockNumber(_) => {
14451                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14452                }
14453                Self::currentEpoch(_) => {
14454                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
14455                }
14456                Self::disablePermissionedProverMode(_) => {
14457                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
14458                }
14459                Self::epochFromBlockNumber(_) => {
14460                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14461                }
14462                Self::epochStartBlock(_) => {
14463                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14464                }
14465                Self::finalizedState(_) => {
14466                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14467                }
14468                Self::genesisStakeTableState(_) => {
14469                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14470                }
14471                Self::genesisState(_) => {
14472                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
14473                }
14474                Self::getHotShotCommitment(_) => {
14475                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
14476                }
14477                Self::getStateHistoryCount(_) => {
14478                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
14479                }
14480                Self::getVersion(_) => {
14481                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
14482                }
14483                Self::initialize(_) => {
14484                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
14485                }
14486                Self::initializeV2(_) => {
14487                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
14488                }
14489                Self::initializeV3(_) => {
14490                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
14491                }
14492                Self::isEpochRoot(_) => {
14493                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14494                }
14495                Self::isGtEpochRoot(_) => {
14496                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14497                }
14498                Self::isPermissionedProverEnabled(_) => {
14499                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
14500                }
14501                Self::lagOverEscapeHatchThreshold(_) => {
14502                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
14503                }
14504                Self::newFinalizedState_0(_) => {
14505                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
14506                }
14507                Self::newFinalizedState_1(_) => {
14508                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
14509                }
14510                Self::newFinalizedState_2(_) => {
14511                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
14512                }
14513                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
14514                Self::permissionedProver(_) => {
14515                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14516                }
14517                Self::proxiableUUID(_) => {
14518                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
14519                }
14520                Self::renounceOwnership(_) => {
14521                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14522                }
14523                Self::setPermissionedProver(_) => {
14524                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14525                }
14526                Self::setStateHistoryRetentionPeriod(_) => {
14527                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14528                }
14529                Self::setstateHistoryRetentionPeriod(_) => {
14530                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14531                }
14532                Self::stateHistoryCommitments(_) => {
14533                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
14534                }
14535                Self::stateHistoryFirstIndex(_) => {
14536                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
14537                }
14538                Self::stateHistoryRetentionPeriod(_) => {
14539                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14540                }
14541                Self::transferOwnership(_) => {
14542                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14543                }
14544                Self::updateEpochStartBlock(_) => {
14545                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14546                }
14547                Self::upgradeToAndCall(_) => {
14548                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
14549                }
14550                Self::votingStakeTableState(_) => {
14551                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14552                }
14553            }
14554        }
14555        #[inline]
14556        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14557            Self::SELECTORS.get(i).copied()
14558        }
14559        #[inline]
14560        fn valid_selector(selector: [u8; 4]) -> bool {
14561            Self::SELECTORS.binary_search(&selector).is_ok()
14562        }
14563        #[inline]
14564        #[allow(non_snake_case)]
14565        fn abi_decode_raw(
14566            selector: [u8; 4],
14567            data: &[u8],
14568        ) -> alloy_sol_types::Result<Self> {
14569            static DECODE_SHIMS: &[fn(
14570                &[u8],
14571            ) -> alloy_sol_types::Result<LightClientV3Calls>] = &[
14572                {
14573                    fn setPermissionedProver(
14574                        data: &[u8],
14575                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14576                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14577                                data,
14578                            )
14579                            .map(LightClientV3Calls::setPermissionedProver)
14580                    }
14581                    setPermissionedProver
14582                },
14583                {
14584                    fn stateHistoryCommitments(
14585                        data: &[u8],
14586                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14587                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
14588                                data,
14589                            )
14590                            .map(LightClientV3Calls::stateHistoryCommitments)
14591                    }
14592                    stateHistoryCommitments
14593                },
14594                {
14595                    fn votingStakeTableState(
14596                        data: &[u8],
14597                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14598                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14599                                data,
14600                            )
14601                            .map(LightClientV3Calls::votingStakeTableState)
14602                    }
14603                    votingStakeTableState
14604                },
14605                {
14606                    fn getVersion(
14607                        data: &[u8],
14608                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14609                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
14610                                data,
14611                            )
14612                            .map(LightClientV3Calls::getVersion)
14613                    }
14614                    getVersion
14615                },
14616                {
14617                    fn _getVk(
14618                        data: &[u8],
14619                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14620                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14621                            .map(LightClientV3Calls::_getVk)
14622                    }
14623                    _getVk
14624                },
14625                {
14626                    fn updateEpochStartBlock(
14627                        data: &[u8],
14628                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14629                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14630                                data,
14631                            )
14632                            .map(LightClientV3Calls::updateEpochStartBlock)
14633                    }
14634                    updateEpochStartBlock
14635                },
14636                {
14637                    fn newFinalizedState_0(
14638                        data: &[u8],
14639                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14640                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
14641                                data,
14642                            )
14643                            .map(LightClientV3Calls::newFinalizedState_0)
14644                    }
14645                    newFinalizedState_0
14646                },
14647                {
14648                    fn isEpochRoot(
14649                        data: &[u8],
14650                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14651                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14652                                data,
14653                            )
14654                            .map(LightClientV3Calls::isEpochRoot)
14655                    }
14656                    isEpochRoot
14657                },
14658                {
14659                    fn stateHistoryFirstIndex(
14660                        data: &[u8],
14661                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14662                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
14663                                data,
14664                            )
14665                            .map(LightClientV3Calls::stateHistoryFirstIndex)
14666                    }
14667                    stateHistoryFirstIndex
14668                },
14669                {
14670                    fn isGtEpochRoot(
14671                        data: &[u8],
14672                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14673                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14674                                data,
14675                            )
14676                            .map(LightClientV3Calls::isGtEpochRoot)
14677                    }
14678                    isGtEpochRoot
14679                },
14680                {
14681                    fn permissionedProver(
14682                        data: &[u8],
14683                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14684                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14685                                data,
14686                            )
14687                            .map(LightClientV3Calls::permissionedProver)
14688                    }
14689                    permissionedProver
14690                },
14691                {
14692                    fn currentBlockNumber(
14693                        data: &[u8],
14694                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14695                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14696                                data,
14697                            )
14698                            .map(LightClientV3Calls::currentBlockNumber)
14699                    }
14700                    currentBlockNumber
14701                },
14702                {
14703                    fn initializeV3(
14704                        data: &[u8],
14705                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14706                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
14707                                data,
14708                            )
14709                            .map(LightClientV3Calls::initializeV3)
14710                    }
14711                    initializeV3
14712                },
14713                {
14714                    fn epochStartBlock(
14715                        data: &[u8],
14716                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14717                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14718                                data,
14719                            )
14720                            .map(LightClientV3Calls::epochStartBlock)
14721                    }
14722                    epochStartBlock
14723                },
14724                {
14725                    fn genesisStakeTableState(
14726                        data: &[u8],
14727                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14728                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14729                                data,
14730                            )
14731                            .map(LightClientV3Calls::genesisStakeTableState)
14732                    }
14733                    genesisStakeTableState
14734                },
14735                {
14736                    fn setStateHistoryRetentionPeriod(
14737                        data: &[u8],
14738                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14739                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14740                                data,
14741                            )
14742                            .map(LightClientV3Calls::setStateHistoryRetentionPeriod)
14743                    }
14744                    setStateHistoryRetentionPeriod
14745                },
14746                {
14747                    fn upgradeToAndCall(
14748                        data: &[u8],
14749                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14750                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
14751                                data,
14752                            )
14753                            .map(LightClientV3Calls::upgradeToAndCall)
14754                    }
14755                    upgradeToAndCall
14756                },
14757                {
14758                    fn proxiableUUID(
14759                        data: &[u8],
14760                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14761                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
14762                                data,
14763                            )
14764                            .map(LightClientV3Calls::proxiableUUID)
14765                    }
14766                    proxiableUUID
14767                },
14768                {
14769                    fn disablePermissionedProverMode(
14770                        data: &[u8],
14771                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14772                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14773                                data,
14774                            )
14775                            .map(LightClientV3Calls::disablePermissionedProverMode)
14776                    }
14777                    disablePermissionedProverMode
14778                },
14779                {
14780                    fn renounceOwnership(
14781                        data: &[u8],
14782                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14783                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14784                                data,
14785                            )
14786                            .map(LightClientV3Calls::renounceOwnership)
14787                    }
14788                    renounceOwnership
14789                },
14790                {
14791                    fn newFinalizedState_1(
14792                        data: &[u8],
14793                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14794                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
14795                                data,
14796                            )
14797                            .map(LightClientV3Calls::newFinalizedState_1)
14798                    }
14799                    newFinalizedState_1
14800                },
14801                {
14802                    fn currentEpoch(
14803                        data: &[u8],
14804                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14805                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14806                                data,
14807                            )
14808                            .map(LightClientV3Calls::currentEpoch)
14809                    }
14810                    currentEpoch
14811                },
14812                {
14813                    fn isPermissionedProverEnabled(
14814                        data: &[u8],
14815                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14816                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
14817                                data,
14818                            )
14819                            .map(LightClientV3Calls::isPermissionedProverEnabled)
14820                    }
14821                    isPermissionedProverEnabled
14822                },
14823                {
14824                    fn getHotShotCommitment(
14825                        data: &[u8],
14826                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14827                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
14828                                data,
14829                            )
14830                            .map(LightClientV3Calls::getHotShotCommitment)
14831                    }
14832                    getHotShotCommitment
14833                },
14834                {
14835                    fn owner(
14836                        data: &[u8],
14837                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14838                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14839                            .map(LightClientV3Calls::owner)
14840                    }
14841                    owner
14842                },
14843                {
14844                    fn epochFromBlockNumber(
14845                        data: &[u8],
14846                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14847                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14848                                data,
14849                            )
14850                            .map(LightClientV3Calls::epochFromBlockNumber)
14851                    }
14852                    epochFromBlockNumber
14853                },
14854                {
14855                    fn setstateHistoryRetentionPeriod(
14856                        data: &[u8],
14857                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14858                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14859                                data,
14860                            )
14861                            .map(LightClientV3Calls::setstateHistoryRetentionPeriod)
14862                    }
14863                    setstateHistoryRetentionPeriod
14864                },
14865                {
14866                    fn authRoot(
14867                        data: &[u8],
14868                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14869                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14870                            .map(LightClientV3Calls::authRoot)
14871                    }
14872                    authRoot
14873                },
14874                {
14875                    fn initialize(
14876                        data: &[u8],
14877                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14878                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14879                                data,
14880                            )
14881                            .map(LightClientV3Calls::initialize)
14882                    }
14883                    initialize
14884                },
14885                {
14886                    fn finalizedState(
14887                        data: &[u8],
14888                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14889                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14890                                data,
14891                            )
14892                            .map(LightClientV3Calls::finalizedState)
14893                    }
14894                    finalizedState
14895                },
14896                {
14897                    fn newFinalizedState_2(
14898                        data: &[u8],
14899                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14900                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14901                                data,
14902                            )
14903                            .map(LightClientV3Calls::newFinalizedState_2)
14904                    }
14905                    newFinalizedState_2
14906                },
14907                {
14908                    fn UPGRADE_INTERFACE_VERSION(
14909                        data: &[u8],
14910                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14911                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
14912                                data,
14913                            )
14914                            .map(LightClientV3Calls::UPGRADE_INTERFACE_VERSION)
14915                    }
14916                    UPGRADE_INTERFACE_VERSION
14917                },
14918                {
14919                    fn initializeV2(
14920                        data: &[u8],
14921                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14922                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14923                                data,
14924                            )
14925                            .map(LightClientV3Calls::initializeV2)
14926                    }
14927                    initializeV2
14928                },
14929                {
14930                    fn stateHistoryRetentionPeriod(
14931                        data: &[u8],
14932                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14933                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14934                                data,
14935                            )
14936                            .map(LightClientV3Calls::stateHistoryRetentionPeriod)
14937                    }
14938                    stateHistoryRetentionPeriod
14939                },
14940                {
14941                    fn genesisState(
14942                        data: &[u8],
14943                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14944                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14945                                data,
14946                            )
14947                            .map(LightClientV3Calls::genesisState)
14948                    }
14949                    genesisState
14950                },
14951                {
14952                    fn lagOverEscapeHatchThreshold(
14953                        data: &[u8],
14954                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14955                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
14956                                data,
14957                            )
14958                            .map(LightClientV3Calls::lagOverEscapeHatchThreshold)
14959                    }
14960                    lagOverEscapeHatchThreshold
14961                },
14962                {
14963                    fn blocksPerEpoch(
14964                        data: &[u8],
14965                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14966                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14967                                data,
14968                            )
14969                            .map(LightClientV3Calls::blocksPerEpoch)
14970                    }
14971                    blocksPerEpoch
14972                },
14973                {
14974                    fn transferOwnership(
14975                        data: &[u8],
14976                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14977                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14978                                data,
14979                            )
14980                            .map(LightClientV3Calls::transferOwnership)
14981                    }
14982                    transferOwnership
14983                },
14984                {
14985                    fn getStateHistoryCount(
14986                        data: &[u8],
14987                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14988                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
14989                                data,
14990                            )
14991                            .map(LightClientV3Calls::getStateHistoryCount)
14992                    }
14993                    getStateHistoryCount
14994                },
14995            ];
14996            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14997                return Err(
14998                    alloy_sol_types::Error::unknown_selector(
14999                        <Self as alloy_sol_types::SolInterface>::NAME,
15000                        selector,
15001                    ),
15002                );
15003            };
15004            DECODE_SHIMS[idx](data)
15005        }
15006        #[inline]
15007        #[allow(non_snake_case)]
15008        fn abi_decode_raw_validate(
15009            selector: [u8; 4],
15010            data: &[u8],
15011        ) -> alloy_sol_types::Result<Self> {
15012            static DECODE_VALIDATE_SHIMS: &[fn(
15013                &[u8],
15014            ) -> alloy_sol_types::Result<LightClientV3Calls>] = &[
15015                {
15016                    fn setPermissionedProver(
15017                        data: &[u8],
15018                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15019                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15020                                data,
15021                            )
15022                            .map(LightClientV3Calls::setPermissionedProver)
15023                    }
15024                    setPermissionedProver
15025                },
15026                {
15027                    fn stateHistoryCommitments(
15028                        data: &[u8],
15029                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15030                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15031                                data,
15032                            )
15033                            .map(LightClientV3Calls::stateHistoryCommitments)
15034                    }
15035                    stateHistoryCommitments
15036                },
15037                {
15038                    fn votingStakeTableState(
15039                        data: &[u8],
15040                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15041                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15042                                data,
15043                            )
15044                            .map(LightClientV3Calls::votingStakeTableState)
15045                    }
15046                    votingStakeTableState
15047                },
15048                {
15049                    fn getVersion(
15050                        data: &[u8],
15051                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15052                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15053                                data,
15054                            )
15055                            .map(LightClientV3Calls::getVersion)
15056                    }
15057                    getVersion
15058                },
15059                {
15060                    fn _getVk(
15061                        data: &[u8],
15062                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15063                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15064                                data,
15065                            )
15066                            .map(LightClientV3Calls::_getVk)
15067                    }
15068                    _getVk
15069                },
15070                {
15071                    fn updateEpochStartBlock(
15072                        data: &[u8],
15073                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15074                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15075                                data,
15076                            )
15077                            .map(LightClientV3Calls::updateEpochStartBlock)
15078                    }
15079                    updateEpochStartBlock
15080                },
15081                {
15082                    fn newFinalizedState_0(
15083                        data: &[u8],
15084                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15085                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15086                                data,
15087                            )
15088                            .map(LightClientV3Calls::newFinalizedState_0)
15089                    }
15090                    newFinalizedState_0
15091                },
15092                {
15093                    fn isEpochRoot(
15094                        data: &[u8],
15095                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15096                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15097                                data,
15098                            )
15099                            .map(LightClientV3Calls::isEpochRoot)
15100                    }
15101                    isEpochRoot
15102                },
15103                {
15104                    fn stateHistoryFirstIndex(
15105                        data: &[u8],
15106                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15107                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15108                                data,
15109                            )
15110                            .map(LightClientV3Calls::stateHistoryFirstIndex)
15111                    }
15112                    stateHistoryFirstIndex
15113                },
15114                {
15115                    fn isGtEpochRoot(
15116                        data: &[u8],
15117                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15118                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15119                                data,
15120                            )
15121                            .map(LightClientV3Calls::isGtEpochRoot)
15122                    }
15123                    isGtEpochRoot
15124                },
15125                {
15126                    fn permissionedProver(
15127                        data: &[u8],
15128                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15129                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15130                                data,
15131                            )
15132                            .map(LightClientV3Calls::permissionedProver)
15133                    }
15134                    permissionedProver
15135                },
15136                {
15137                    fn currentBlockNumber(
15138                        data: &[u8],
15139                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15140                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15141                                data,
15142                            )
15143                            .map(LightClientV3Calls::currentBlockNumber)
15144                    }
15145                    currentBlockNumber
15146                },
15147                {
15148                    fn initializeV3(
15149                        data: &[u8],
15150                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15151                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15152                                data,
15153                            )
15154                            .map(LightClientV3Calls::initializeV3)
15155                    }
15156                    initializeV3
15157                },
15158                {
15159                    fn epochStartBlock(
15160                        data: &[u8],
15161                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15162                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15163                                data,
15164                            )
15165                            .map(LightClientV3Calls::epochStartBlock)
15166                    }
15167                    epochStartBlock
15168                },
15169                {
15170                    fn genesisStakeTableState(
15171                        data: &[u8],
15172                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15173                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15174                                data,
15175                            )
15176                            .map(LightClientV3Calls::genesisStakeTableState)
15177                    }
15178                    genesisStakeTableState
15179                },
15180                {
15181                    fn setStateHistoryRetentionPeriod(
15182                        data: &[u8],
15183                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15184                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15185                                data,
15186                            )
15187                            .map(LightClientV3Calls::setStateHistoryRetentionPeriod)
15188                    }
15189                    setStateHistoryRetentionPeriod
15190                },
15191                {
15192                    fn upgradeToAndCall(
15193                        data: &[u8],
15194                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15195                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15196                                data,
15197                            )
15198                            .map(LightClientV3Calls::upgradeToAndCall)
15199                    }
15200                    upgradeToAndCall
15201                },
15202                {
15203                    fn proxiableUUID(
15204                        data: &[u8],
15205                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15206                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15207                                data,
15208                            )
15209                            .map(LightClientV3Calls::proxiableUUID)
15210                    }
15211                    proxiableUUID
15212                },
15213                {
15214                    fn disablePermissionedProverMode(
15215                        data: &[u8],
15216                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15217                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15218                                data,
15219                            )
15220                            .map(LightClientV3Calls::disablePermissionedProverMode)
15221                    }
15222                    disablePermissionedProverMode
15223                },
15224                {
15225                    fn renounceOwnership(
15226                        data: &[u8],
15227                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15228                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15229                                data,
15230                            )
15231                            .map(LightClientV3Calls::renounceOwnership)
15232                    }
15233                    renounceOwnership
15234                },
15235                {
15236                    fn newFinalizedState_1(
15237                        data: &[u8],
15238                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15239                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15240                                data,
15241                            )
15242                            .map(LightClientV3Calls::newFinalizedState_1)
15243                    }
15244                    newFinalizedState_1
15245                },
15246                {
15247                    fn currentEpoch(
15248                        data: &[u8],
15249                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15250                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15251                                data,
15252                            )
15253                            .map(LightClientV3Calls::currentEpoch)
15254                    }
15255                    currentEpoch
15256                },
15257                {
15258                    fn isPermissionedProverEnabled(
15259                        data: &[u8],
15260                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15261                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15262                                data,
15263                            )
15264                            .map(LightClientV3Calls::isPermissionedProverEnabled)
15265                    }
15266                    isPermissionedProverEnabled
15267                },
15268                {
15269                    fn getHotShotCommitment(
15270                        data: &[u8],
15271                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15272                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15273                                data,
15274                            )
15275                            .map(LightClientV3Calls::getHotShotCommitment)
15276                    }
15277                    getHotShotCommitment
15278                },
15279                {
15280                    fn owner(
15281                        data: &[u8],
15282                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15283                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15284                                data,
15285                            )
15286                            .map(LightClientV3Calls::owner)
15287                    }
15288                    owner
15289                },
15290                {
15291                    fn epochFromBlockNumber(
15292                        data: &[u8],
15293                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15294                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15295                                data,
15296                            )
15297                            .map(LightClientV3Calls::epochFromBlockNumber)
15298                    }
15299                    epochFromBlockNumber
15300                },
15301                {
15302                    fn setstateHistoryRetentionPeriod(
15303                        data: &[u8],
15304                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15305                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15306                                data,
15307                            )
15308                            .map(LightClientV3Calls::setstateHistoryRetentionPeriod)
15309                    }
15310                    setstateHistoryRetentionPeriod
15311                },
15312                {
15313                    fn authRoot(
15314                        data: &[u8],
15315                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15316                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15317                                data,
15318                            )
15319                            .map(LightClientV3Calls::authRoot)
15320                    }
15321                    authRoot
15322                },
15323                {
15324                    fn initialize(
15325                        data: &[u8],
15326                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15327                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15328                                data,
15329                            )
15330                            .map(LightClientV3Calls::initialize)
15331                    }
15332                    initialize
15333                },
15334                {
15335                    fn finalizedState(
15336                        data: &[u8],
15337                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15338                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15339                                data,
15340                            )
15341                            .map(LightClientV3Calls::finalizedState)
15342                    }
15343                    finalizedState
15344                },
15345                {
15346                    fn newFinalizedState_2(
15347                        data: &[u8],
15348                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15349                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15350                                data,
15351                            )
15352                            .map(LightClientV3Calls::newFinalizedState_2)
15353                    }
15354                    newFinalizedState_2
15355                },
15356                {
15357                    fn UPGRADE_INTERFACE_VERSION(
15358                        data: &[u8],
15359                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15360                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15361                                data,
15362                            )
15363                            .map(LightClientV3Calls::UPGRADE_INTERFACE_VERSION)
15364                    }
15365                    UPGRADE_INTERFACE_VERSION
15366                },
15367                {
15368                    fn initializeV2(
15369                        data: &[u8],
15370                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15371                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15372                                data,
15373                            )
15374                            .map(LightClientV3Calls::initializeV2)
15375                    }
15376                    initializeV2
15377                },
15378                {
15379                    fn stateHistoryRetentionPeriod(
15380                        data: &[u8],
15381                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15382                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15383                                data,
15384                            )
15385                            .map(LightClientV3Calls::stateHistoryRetentionPeriod)
15386                    }
15387                    stateHistoryRetentionPeriod
15388                },
15389                {
15390                    fn genesisState(
15391                        data: &[u8],
15392                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15393                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15394                                data,
15395                            )
15396                            .map(LightClientV3Calls::genesisState)
15397                    }
15398                    genesisState
15399                },
15400                {
15401                    fn lagOverEscapeHatchThreshold(
15402                        data: &[u8],
15403                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15404                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15405                                data,
15406                            )
15407                            .map(LightClientV3Calls::lagOverEscapeHatchThreshold)
15408                    }
15409                    lagOverEscapeHatchThreshold
15410                },
15411                {
15412                    fn blocksPerEpoch(
15413                        data: &[u8],
15414                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15415                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15416                                data,
15417                            )
15418                            .map(LightClientV3Calls::blocksPerEpoch)
15419                    }
15420                    blocksPerEpoch
15421                },
15422                {
15423                    fn transferOwnership(
15424                        data: &[u8],
15425                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15426                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15427                                data,
15428                            )
15429                            .map(LightClientV3Calls::transferOwnership)
15430                    }
15431                    transferOwnership
15432                },
15433                {
15434                    fn getStateHistoryCount(
15435                        data: &[u8],
15436                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15437                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15438                                data,
15439                            )
15440                            .map(LightClientV3Calls::getStateHistoryCount)
15441                    }
15442                    getStateHistoryCount
15443                },
15444            ];
15445            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15446                return Err(
15447                    alloy_sol_types::Error::unknown_selector(
15448                        <Self as alloy_sol_types::SolInterface>::NAME,
15449                        selector,
15450                    ),
15451                );
15452            };
15453            DECODE_VALIDATE_SHIMS[idx](data)
15454        }
15455        #[inline]
15456        fn abi_encoded_size(&self) -> usize {
15457            match self {
15458                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15459                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
15460                        inner,
15461                    )
15462                }
15463                Self::_getVk(inner) => {
15464                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15465                }
15466                Self::authRoot(inner) => {
15467                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15468                }
15469                Self::blocksPerEpoch(inner) => {
15470                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15471                        inner,
15472                    )
15473                }
15474                Self::currentBlockNumber(inner) => {
15475                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15476                        inner,
15477                    )
15478                }
15479                Self::currentEpoch(inner) => {
15480                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15481                        inner,
15482                    )
15483                }
15484                Self::disablePermissionedProverMode(inner) => {
15485                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
15486                        inner,
15487                    )
15488                }
15489                Self::epochFromBlockNumber(inner) => {
15490                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15491                        inner,
15492                    )
15493                }
15494                Self::epochStartBlock(inner) => {
15495                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15496                        inner,
15497                    )
15498                }
15499                Self::finalizedState(inner) => {
15500                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15501                        inner,
15502                    )
15503                }
15504                Self::genesisStakeTableState(inner) => {
15505                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15506                        inner,
15507                    )
15508                }
15509                Self::genesisState(inner) => {
15510                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15511                        inner,
15512                    )
15513                }
15514                Self::getHotShotCommitment(inner) => {
15515                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
15516                        inner,
15517                    )
15518                }
15519                Self::getStateHistoryCount(inner) => {
15520                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
15521                        inner,
15522                    )
15523                }
15524                Self::getVersion(inner) => {
15525                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15526                }
15527                Self::initialize(inner) => {
15528                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15529                }
15530                Self::initializeV2(inner) => {
15531                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15532                        inner,
15533                    )
15534                }
15535                Self::initializeV3(inner) => {
15536                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
15537                        inner,
15538                    )
15539                }
15540                Self::isEpochRoot(inner) => {
15541                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15542                        inner,
15543                    )
15544                }
15545                Self::isGtEpochRoot(inner) => {
15546                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15547                        inner,
15548                    )
15549                }
15550                Self::isPermissionedProverEnabled(inner) => {
15551                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
15552                        inner,
15553                    )
15554                }
15555                Self::lagOverEscapeHatchThreshold(inner) => {
15556                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
15557                        inner,
15558                    )
15559                }
15560                Self::newFinalizedState_0(inner) => {
15561                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
15562                        inner,
15563                    )
15564                }
15565                Self::newFinalizedState_1(inner) => {
15566                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
15567                        inner,
15568                    )
15569                }
15570                Self::newFinalizedState_2(inner) => {
15571                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15572                        inner,
15573                    )
15574                }
15575                Self::owner(inner) => {
15576                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15577                }
15578                Self::permissionedProver(inner) => {
15579                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15580                        inner,
15581                    )
15582                }
15583                Self::proxiableUUID(inner) => {
15584                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
15585                        inner,
15586                    )
15587                }
15588                Self::renounceOwnership(inner) => {
15589                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15590                        inner,
15591                    )
15592                }
15593                Self::setPermissionedProver(inner) => {
15594                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15595                        inner,
15596                    )
15597                }
15598                Self::setStateHistoryRetentionPeriod(inner) => {
15599                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15600                        inner,
15601                    )
15602                }
15603                Self::setstateHistoryRetentionPeriod(inner) => {
15604                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15605                        inner,
15606                    )
15607                }
15608                Self::stateHistoryCommitments(inner) => {
15609                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15610                        inner,
15611                    )
15612                }
15613                Self::stateHistoryFirstIndex(inner) => {
15614                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
15615                        inner,
15616                    )
15617                }
15618                Self::stateHistoryRetentionPeriod(inner) => {
15619                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15620                        inner,
15621                    )
15622                }
15623                Self::transferOwnership(inner) => {
15624                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15625                        inner,
15626                    )
15627                }
15628                Self::updateEpochStartBlock(inner) => {
15629                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15630                        inner,
15631                    )
15632                }
15633                Self::upgradeToAndCall(inner) => {
15634                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
15635                        inner,
15636                    )
15637                }
15638                Self::votingStakeTableState(inner) => {
15639                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15640                        inner,
15641                    )
15642                }
15643            }
15644        }
15645        #[inline]
15646        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15647            match self {
15648                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15649                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
15650                        inner,
15651                        out,
15652                    )
15653                }
15654                Self::_getVk(inner) => {
15655                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15656                }
15657                Self::authRoot(inner) => {
15658                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15659                        inner,
15660                        out,
15661                    )
15662                }
15663                Self::blocksPerEpoch(inner) => {
15664                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15665                        inner,
15666                        out,
15667                    )
15668                }
15669                Self::currentBlockNumber(inner) => {
15670                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15671                        inner,
15672                        out,
15673                    )
15674                }
15675                Self::currentEpoch(inner) => {
15676                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15677                        inner,
15678                        out,
15679                    )
15680                }
15681                Self::disablePermissionedProverMode(inner) => {
15682                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15683                        inner,
15684                        out,
15685                    )
15686                }
15687                Self::epochFromBlockNumber(inner) => {
15688                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15689                        inner,
15690                        out,
15691                    )
15692                }
15693                Self::epochStartBlock(inner) => {
15694                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15695                        inner,
15696                        out,
15697                    )
15698                }
15699                Self::finalizedState(inner) => {
15700                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15701                        inner,
15702                        out,
15703                    )
15704                }
15705                Self::genesisStakeTableState(inner) => {
15706                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15707                        inner,
15708                        out,
15709                    )
15710                }
15711                Self::genesisState(inner) => {
15712                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15713                        inner,
15714                        out,
15715                    )
15716                }
15717                Self::getHotShotCommitment(inner) => {
15718                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
15719                        inner,
15720                        out,
15721                    )
15722                }
15723                Self::getStateHistoryCount(inner) => {
15724                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
15725                        inner,
15726                        out,
15727                    )
15728                }
15729                Self::getVersion(inner) => {
15730                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
15731                        inner,
15732                        out,
15733                    )
15734                }
15735                Self::initialize(inner) => {
15736                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15737                        inner,
15738                        out,
15739                    )
15740                }
15741                Self::initializeV2(inner) => {
15742                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15743                        inner,
15744                        out,
15745                    )
15746                }
15747                Self::initializeV3(inner) => {
15748                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
15749                        inner,
15750                        out,
15751                    )
15752                }
15753                Self::isEpochRoot(inner) => {
15754                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15755                        inner,
15756                        out,
15757                    )
15758                }
15759                Self::isGtEpochRoot(inner) => {
15760                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15761                        inner,
15762                        out,
15763                    )
15764                }
15765                Self::isPermissionedProverEnabled(inner) => {
15766                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
15767                        inner,
15768                        out,
15769                    )
15770                }
15771                Self::lagOverEscapeHatchThreshold(inner) => {
15772                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
15773                        inner,
15774                        out,
15775                    )
15776                }
15777                Self::newFinalizedState_0(inner) => {
15778                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
15779                        inner,
15780                        out,
15781                    )
15782                }
15783                Self::newFinalizedState_1(inner) => {
15784                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
15785                        inner,
15786                        out,
15787                    )
15788                }
15789                Self::newFinalizedState_2(inner) => {
15790                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15791                        inner,
15792                        out,
15793                    )
15794                }
15795                Self::owner(inner) => {
15796                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15797                }
15798                Self::permissionedProver(inner) => {
15799                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15800                        inner,
15801                        out,
15802                    )
15803                }
15804                Self::proxiableUUID(inner) => {
15805                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
15806                        inner,
15807                        out,
15808                    )
15809                }
15810                Self::renounceOwnership(inner) => {
15811                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15812                        inner,
15813                        out,
15814                    )
15815                }
15816                Self::setPermissionedProver(inner) => {
15817                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15818                        inner,
15819                        out,
15820                    )
15821                }
15822                Self::setStateHistoryRetentionPeriod(inner) => {
15823                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15824                        inner,
15825                        out,
15826                    )
15827                }
15828                Self::setstateHistoryRetentionPeriod(inner) => {
15829                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15830                        inner,
15831                        out,
15832                    )
15833                }
15834                Self::stateHistoryCommitments(inner) => {
15835                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15836                        inner,
15837                        out,
15838                    )
15839                }
15840                Self::stateHistoryFirstIndex(inner) => {
15841                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
15842                        inner,
15843                        out,
15844                    )
15845                }
15846                Self::stateHistoryRetentionPeriod(inner) => {
15847                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15848                        inner,
15849                        out,
15850                    )
15851                }
15852                Self::transferOwnership(inner) => {
15853                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15854                        inner,
15855                        out,
15856                    )
15857                }
15858                Self::updateEpochStartBlock(inner) => {
15859                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15860                        inner,
15861                        out,
15862                    )
15863                }
15864                Self::upgradeToAndCall(inner) => {
15865                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
15866                        inner,
15867                        out,
15868                    )
15869                }
15870                Self::votingStakeTableState(inner) => {
15871                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15872                        inner,
15873                        out,
15874                    )
15875                }
15876            }
15877        }
15878    }
15879    ///Container for all the [`LightClientV3`](self) custom errors.
15880    #[derive(Clone)]
15881    #[derive(serde::Serialize, serde::Deserialize)]
15882    #[derive(Debug, PartialEq, Eq, Hash)]
15883    pub enum LightClientV3Errors {
15884        #[allow(missing_docs)]
15885        AddressEmptyCode(AddressEmptyCode),
15886        #[allow(missing_docs)]
15887        DeprecatedApi(DeprecatedApi),
15888        #[allow(missing_docs)]
15889        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
15890        #[allow(missing_docs)]
15891        ERC1967NonPayable(ERC1967NonPayable),
15892        #[allow(missing_docs)]
15893        FailedInnerCall(FailedInnerCall),
15894        #[allow(missing_docs)]
15895        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
15896        #[allow(missing_docs)]
15897        InvalidAddress(InvalidAddress),
15898        #[allow(missing_docs)]
15899        InvalidArgs(InvalidArgs),
15900        #[allow(missing_docs)]
15901        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
15902        #[allow(missing_docs)]
15903        InvalidInitialization(InvalidInitialization),
15904        #[allow(missing_docs)]
15905        InvalidMaxStateHistory(InvalidMaxStateHistory),
15906        #[allow(missing_docs)]
15907        InvalidProof(InvalidProof),
15908        #[allow(missing_docs)]
15909        InvalidScalar(InvalidScalar),
15910        #[allow(missing_docs)]
15911        MissingEpochRootUpdate(MissingEpochRootUpdate),
15912        #[allow(missing_docs)]
15913        NoChangeRequired(NoChangeRequired),
15914        #[allow(missing_docs)]
15915        NotInitializing(NotInitializing),
15916        #[allow(missing_docs)]
15917        OutdatedState(OutdatedState),
15918        #[allow(missing_docs)]
15919        OwnableInvalidOwner(OwnableInvalidOwner),
15920        #[allow(missing_docs)]
15921        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
15922        #[allow(missing_docs)]
15923        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
15924        #[allow(missing_docs)]
15925        ProverNotPermissioned(ProverNotPermissioned),
15926        #[allow(missing_docs)]
15927        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
15928        #[allow(missing_docs)]
15929        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
15930        #[allow(missing_docs)]
15931        WrongStakeTableUsed(WrongStakeTableUsed),
15932    }
15933    impl LightClientV3Errors {
15934        /// All the selectors of this enum.
15935        ///
15936        /// Note that the selectors might not be in the same order as the variants.
15937        /// No guarantees are made about the order of the selectors.
15938        ///
15939        /// Prefer using `SolInterface` methods instead.
15940        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15941            [5u8, 28u8, 70u8, 239u8],
15942            [5u8, 176u8, 92u8, 204u8],
15943            [8u8, 10u8, 232u8, 217u8],
15944            [9u8, 189u8, 227u8, 57u8],
15945            [17u8, 140u8, 218u8, 167u8],
15946            [20u8, 37u8, 234u8, 66u8],
15947            [30u8, 79u8, 189u8, 247u8],
15948            [47u8, 171u8, 146u8, 202u8],
15949            [76u8, 156u8, 140u8, 227u8],
15950            [78u8, 64u8, 92u8, 141u8],
15951            [81u8, 97u8, 128u8, 137u8],
15952            [97u8, 90u8, 146u8, 100u8],
15953            [153u8, 150u8, 179u8, 21u8],
15954            [161u8, 186u8, 7u8, 238u8],
15955            [163u8, 166u8, 71u8, 128u8],
15956            [168u8, 99u8, 174u8, 201u8],
15957            [170u8, 29u8, 73u8, 164u8],
15958            [176u8, 180u8, 56u8, 119u8],
15959            [179u8, 152u8, 151u8, 159u8],
15960            [215u8, 230u8, 188u8, 248u8],
15961            [224u8, 124u8, 141u8, 186u8],
15962            [230u8, 196u8, 36u8, 123u8],
15963            [244u8, 160u8, 238u8, 224u8],
15964            [249u8, 46u8, 232u8, 169u8],
15965        ];
15966        /// The names of the variants in the same order as `SELECTORS`.
15967        pub const VARIANT_NAMES: &'static [&'static str] = &[
15968            ::core::stringify!(OutdatedState),
15969            ::core::stringify!(InvalidScalar),
15970            ::core::stringify!(MissingEpochRootUpdate),
15971            ::core::stringify!(InvalidProof),
15972            ::core::stringify!(OwnableUnauthorizedAccount),
15973            ::core::stringify!(FailedInnerCall),
15974            ::core::stringify!(OwnableInvalidOwner),
15975            ::core::stringify!(OwnershipCannotBeRenounced),
15976            ::core::stringify!(ERC1967InvalidImplementation),
15977            ::core::stringify!(DeprecatedApi),
15978            ::core::stringify!(WrongStakeTableUsed),
15979            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
15980            ::core::stringify!(AddressEmptyCode),
15981            ::core::stringify!(InvalidArgs),
15982            ::core::stringify!(ProverNotPermissioned),
15983            ::core::stringify!(NoChangeRequired),
15984            ::core::stringify!(UUPSUnsupportedProxiableUUID),
15985            ::core::stringify!(InsufficientSnapshotHistory),
15986            ::core::stringify!(ERC1967NonPayable),
15987            ::core::stringify!(NotInitializing),
15988            ::core::stringify!(UUPSUnauthorizedCallContext),
15989            ::core::stringify!(InvalidAddress),
15990            ::core::stringify!(InvalidMaxStateHistory),
15991            ::core::stringify!(InvalidInitialization),
15992        ];
15993        /// The signatures in the same order as `SELECTORS`.
15994        pub const SIGNATURES: &'static [&'static str] = &[
15995            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
15996            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
15997            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
15998            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
15999            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
16000            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
16001            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
16002            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
16003            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
16004            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
16005            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
16006            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
16007            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
16008            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
16009            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
16010            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
16011            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
16012            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
16013            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
16014            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
16015            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
16016            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
16017            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
16018            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
16019        ];
16020        /// Returns the signature for the given selector, if known.
16021        #[inline]
16022        pub fn signature_by_selector(
16023            selector: [u8; 4usize],
16024        ) -> ::core::option::Option<&'static str> {
16025            match Self::SELECTORS.binary_search(&selector) {
16026                ::core::result::Result::Ok(idx) => {
16027                    ::core::option::Option::Some(Self::SIGNATURES[idx])
16028                }
16029                ::core::result::Result::Err(_) => ::core::option::Option::None,
16030            }
16031        }
16032        /// Returns the enum variant name for the given selector, if known.
16033        #[inline]
16034        pub fn name_by_selector(
16035            selector: [u8; 4usize],
16036        ) -> ::core::option::Option<&'static str> {
16037            let sig = Self::signature_by_selector(selector)?;
16038            sig.split_once('(').map(|(name, _)| name)
16039        }
16040    }
16041    #[automatically_derived]
16042    impl alloy_sol_types::SolInterface for LightClientV3Errors {
16043        const NAME: &'static str = "LightClientV3Errors";
16044        const MIN_DATA_LENGTH: usize = 0usize;
16045        const COUNT: usize = 24usize;
16046        #[inline]
16047        fn selector(&self) -> [u8; 4] {
16048            match self {
16049                Self::AddressEmptyCode(_) => {
16050                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
16051                }
16052                Self::DeprecatedApi(_) => {
16053                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
16054                }
16055                Self::ERC1967InvalidImplementation(_) => {
16056                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
16057                }
16058                Self::ERC1967NonPayable(_) => {
16059                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
16060                }
16061                Self::FailedInnerCall(_) => {
16062                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
16063                }
16064                Self::InsufficientSnapshotHistory(_) => {
16065                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
16066                }
16067                Self::InvalidAddress(_) => {
16068                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
16069                }
16070                Self::InvalidArgs(_) => {
16071                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
16072                }
16073                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
16074                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
16075                }
16076                Self::InvalidInitialization(_) => {
16077                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
16078                }
16079                Self::InvalidMaxStateHistory(_) => {
16080                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
16081                }
16082                Self::InvalidProof(_) => {
16083                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
16084                }
16085                Self::InvalidScalar(_) => {
16086                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
16087                }
16088                Self::MissingEpochRootUpdate(_) => {
16089                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
16090                }
16091                Self::NoChangeRequired(_) => {
16092                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
16093                }
16094                Self::NotInitializing(_) => {
16095                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
16096                }
16097                Self::OutdatedState(_) => {
16098                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
16099                }
16100                Self::OwnableInvalidOwner(_) => {
16101                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
16102                }
16103                Self::OwnableUnauthorizedAccount(_) => {
16104                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
16105                }
16106                Self::OwnershipCannotBeRenounced(_) => {
16107                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
16108                }
16109                Self::ProverNotPermissioned(_) => {
16110                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
16111                }
16112                Self::UUPSUnauthorizedCallContext(_) => {
16113                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
16114                }
16115                Self::UUPSUnsupportedProxiableUUID(_) => {
16116                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
16117                }
16118                Self::WrongStakeTableUsed(_) => {
16119                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
16120                }
16121            }
16122        }
16123        #[inline]
16124        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16125            Self::SELECTORS.get(i).copied()
16126        }
16127        #[inline]
16128        fn valid_selector(selector: [u8; 4]) -> bool {
16129            Self::SELECTORS.binary_search(&selector).is_ok()
16130        }
16131        #[inline]
16132        #[allow(non_snake_case)]
16133        fn abi_decode_raw(
16134            selector: [u8; 4],
16135            data: &[u8],
16136        ) -> alloy_sol_types::Result<Self> {
16137            static DECODE_SHIMS: &[fn(
16138                &[u8],
16139            ) -> alloy_sol_types::Result<LightClientV3Errors>] = &[
16140                {
16141                    fn OutdatedState(
16142                        data: &[u8],
16143                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16144                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
16145                                data,
16146                            )
16147                            .map(LightClientV3Errors::OutdatedState)
16148                    }
16149                    OutdatedState
16150                },
16151                {
16152                    fn InvalidScalar(
16153                        data: &[u8],
16154                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16155                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
16156                                data,
16157                            )
16158                            .map(LightClientV3Errors::InvalidScalar)
16159                    }
16160                    InvalidScalar
16161                },
16162                {
16163                    fn MissingEpochRootUpdate(
16164                        data: &[u8],
16165                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16166                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
16167                                data,
16168                            )
16169                            .map(LightClientV3Errors::MissingEpochRootUpdate)
16170                    }
16171                    MissingEpochRootUpdate
16172                },
16173                {
16174                    fn InvalidProof(
16175                        data: &[u8],
16176                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16177                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
16178                            .map(LightClientV3Errors::InvalidProof)
16179                    }
16180                    InvalidProof
16181                },
16182                {
16183                    fn OwnableUnauthorizedAccount(
16184                        data: &[u8],
16185                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16186                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
16187                                data,
16188                            )
16189                            .map(LightClientV3Errors::OwnableUnauthorizedAccount)
16190                    }
16191                    OwnableUnauthorizedAccount
16192                },
16193                {
16194                    fn FailedInnerCall(
16195                        data: &[u8],
16196                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16197                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
16198                                data,
16199                            )
16200                            .map(LightClientV3Errors::FailedInnerCall)
16201                    }
16202                    FailedInnerCall
16203                },
16204                {
16205                    fn OwnableInvalidOwner(
16206                        data: &[u8],
16207                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16208                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
16209                                data,
16210                            )
16211                            .map(LightClientV3Errors::OwnableInvalidOwner)
16212                    }
16213                    OwnableInvalidOwner
16214                },
16215                {
16216                    fn OwnershipCannotBeRenounced(
16217                        data: &[u8],
16218                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16219                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
16220                                data,
16221                            )
16222                            .map(LightClientV3Errors::OwnershipCannotBeRenounced)
16223                    }
16224                    OwnershipCannotBeRenounced
16225                },
16226                {
16227                    fn ERC1967InvalidImplementation(
16228                        data: &[u8],
16229                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16230                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
16231                                data,
16232                            )
16233                            .map(LightClientV3Errors::ERC1967InvalidImplementation)
16234                    }
16235                    ERC1967InvalidImplementation
16236                },
16237                {
16238                    fn DeprecatedApi(
16239                        data: &[u8],
16240                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16241                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
16242                                data,
16243                            )
16244                            .map(LightClientV3Errors::DeprecatedApi)
16245                    }
16246                    DeprecatedApi
16247                },
16248                {
16249                    fn WrongStakeTableUsed(
16250                        data: &[u8],
16251                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16252                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
16253                                data,
16254                            )
16255                            .map(LightClientV3Errors::WrongStakeTableUsed)
16256                    }
16257                    WrongStakeTableUsed
16258                },
16259                {
16260                    fn InvalidHotShotBlockForCommitmentCheck(
16261                        data: &[u8],
16262                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16263                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
16264                                data,
16265                            )
16266                            .map(
16267                                LightClientV3Errors::InvalidHotShotBlockForCommitmentCheck,
16268                            )
16269                    }
16270                    InvalidHotShotBlockForCommitmentCheck
16271                },
16272                {
16273                    fn AddressEmptyCode(
16274                        data: &[u8],
16275                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16276                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
16277                                data,
16278                            )
16279                            .map(LightClientV3Errors::AddressEmptyCode)
16280                    }
16281                    AddressEmptyCode
16282                },
16283                {
16284                    fn InvalidArgs(
16285                        data: &[u8],
16286                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16287                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
16288                            .map(LightClientV3Errors::InvalidArgs)
16289                    }
16290                    InvalidArgs
16291                },
16292                {
16293                    fn ProverNotPermissioned(
16294                        data: &[u8],
16295                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16296                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
16297                                data,
16298                            )
16299                            .map(LightClientV3Errors::ProverNotPermissioned)
16300                    }
16301                    ProverNotPermissioned
16302                },
16303                {
16304                    fn NoChangeRequired(
16305                        data: &[u8],
16306                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16307                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
16308                                data,
16309                            )
16310                            .map(LightClientV3Errors::NoChangeRequired)
16311                    }
16312                    NoChangeRequired
16313                },
16314                {
16315                    fn UUPSUnsupportedProxiableUUID(
16316                        data: &[u8],
16317                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16318                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
16319                                data,
16320                            )
16321                            .map(LightClientV3Errors::UUPSUnsupportedProxiableUUID)
16322                    }
16323                    UUPSUnsupportedProxiableUUID
16324                },
16325                {
16326                    fn InsufficientSnapshotHistory(
16327                        data: &[u8],
16328                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16329                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
16330                                data,
16331                            )
16332                            .map(LightClientV3Errors::InsufficientSnapshotHistory)
16333                    }
16334                    InsufficientSnapshotHistory
16335                },
16336                {
16337                    fn ERC1967NonPayable(
16338                        data: &[u8],
16339                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16340                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
16341                                data,
16342                            )
16343                            .map(LightClientV3Errors::ERC1967NonPayable)
16344                    }
16345                    ERC1967NonPayable
16346                },
16347                {
16348                    fn NotInitializing(
16349                        data: &[u8],
16350                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16351                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
16352                                data,
16353                            )
16354                            .map(LightClientV3Errors::NotInitializing)
16355                    }
16356                    NotInitializing
16357                },
16358                {
16359                    fn UUPSUnauthorizedCallContext(
16360                        data: &[u8],
16361                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16362                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
16363                                data,
16364                            )
16365                            .map(LightClientV3Errors::UUPSUnauthorizedCallContext)
16366                    }
16367                    UUPSUnauthorizedCallContext
16368                },
16369                {
16370                    fn InvalidAddress(
16371                        data: &[u8],
16372                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16373                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
16374                                data,
16375                            )
16376                            .map(LightClientV3Errors::InvalidAddress)
16377                    }
16378                    InvalidAddress
16379                },
16380                {
16381                    fn InvalidMaxStateHistory(
16382                        data: &[u8],
16383                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16384                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
16385                                data,
16386                            )
16387                            .map(LightClientV3Errors::InvalidMaxStateHistory)
16388                    }
16389                    InvalidMaxStateHistory
16390                },
16391                {
16392                    fn InvalidInitialization(
16393                        data: &[u8],
16394                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16395                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
16396                                data,
16397                            )
16398                            .map(LightClientV3Errors::InvalidInitialization)
16399                    }
16400                    InvalidInitialization
16401                },
16402            ];
16403            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16404                return Err(
16405                    alloy_sol_types::Error::unknown_selector(
16406                        <Self as alloy_sol_types::SolInterface>::NAME,
16407                        selector,
16408                    ),
16409                );
16410            };
16411            DECODE_SHIMS[idx](data)
16412        }
16413        #[inline]
16414        #[allow(non_snake_case)]
16415        fn abi_decode_raw_validate(
16416            selector: [u8; 4],
16417            data: &[u8],
16418        ) -> alloy_sol_types::Result<Self> {
16419            static DECODE_VALIDATE_SHIMS: &[fn(
16420                &[u8],
16421            ) -> alloy_sol_types::Result<LightClientV3Errors>] = &[
16422                {
16423                    fn OutdatedState(
16424                        data: &[u8],
16425                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16426                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
16427                                data,
16428                            )
16429                            .map(LightClientV3Errors::OutdatedState)
16430                    }
16431                    OutdatedState
16432                },
16433                {
16434                    fn InvalidScalar(
16435                        data: &[u8],
16436                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16437                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
16438                                data,
16439                            )
16440                            .map(LightClientV3Errors::InvalidScalar)
16441                    }
16442                    InvalidScalar
16443                },
16444                {
16445                    fn MissingEpochRootUpdate(
16446                        data: &[u8],
16447                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16448                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
16449                                data,
16450                            )
16451                            .map(LightClientV3Errors::MissingEpochRootUpdate)
16452                    }
16453                    MissingEpochRootUpdate
16454                },
16455                {
16456                    fn InvalidProof(
16457                        data: &[u8],
16458                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16459                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
16460                                data,
16461                            )
16462                            .map(LightClientV3Errors::InvalidProof)
16463                    }
16464                    InvalidProof
16465                },
16466                {
16467                    fn OwnableUnauthorizedAccount(
16468                        data: &[u8],
16469                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16470                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
16471                                data,
16472                            )
16473                            .map(LightClientV3Errors::OwnableUnauthorizedAccount)
16474                    }
16475                    OwnableUnauthorizedAccount
16476                },
16477                {
16478                    fn FailedInnerCall(
16479                        data: &[u8],
16480                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16481                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
16482                                data,
16483                            )
16484                            .map(LightClientV3Errors::FailedInnerCall)
16485                    }
16486                    FailedInnerCall
16487                },
16488                {
16489                    fn OwnableInvalidOwner(
16490                        data: &[u8],
16491                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16492                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
16493                                data,
16494                            )
16495                            .map(LightClientV3Errors::OwnableInvalidOwner)
16496                    }
16497                    OwnableInvalidOwner
16498                },
16499                {
16500                    fn OwnershipCannotBeRenounced(
16501                        data: &[u8],
16502                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16503                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
16504                                data,
16505                            )
16506                            .map(LightClientV3Errors::OwnershipCannotBeRenounced)
16507                    }
16508                    OwnershipCannotBeRenounced
16509                },
16510                {
16511                    fn ERC1967InvalidImplementation(
16512                        data: &[u8],
16513                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16514                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
16515                                data,
16516                            )
16517                            .map(LightClientV3Errors::ERC1967InvalidImplementation)
16518                    }
16519                    ERC1967InvalidImplementation
16520                },
16521                {
16522                    fn DeprecatedApi(
16523                        data: &[u8],
16524                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16525                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
16526                                data,
16527                            )
16528                            .map(LightClientV3Errors::DeprecatedApi)
16529                    }
16530                    DeprecatedApi
16531                },
16532                {
16533                    fn WrongStakeTableUsed(
16534                        data: &[u8],
16535                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16536                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
16537                                data,
16538                            )
16539                            .map(LightClientV3Errors::WrongStakeTableUsed)
16540                    }
16541                    WrongStakeTableUsed
16542                },
16543                {
16544                    fn InvalidHotShotBlockForCommitmentCheck(
16545                        data: &[u8],
16546                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16547                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
16548                                data,
16549                            )
16550                            .map(
16551                                LightClientV3Errors::InvalidHotShotBlockForCommitmentCheck,
16552                            )
16553                    }
16554                    InvalidHotShotBlockForCommitmentCheck
16555                },
16556                {
16557                    fn AddressEmptyCode(
16558                        data: &[u8],
16559                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16560                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
16561                                data,
16562                            )
16563                            .map(LightClientV3Errors::AddressEmptyCode)
16564                    }
16565                    AddressEmptyCode
16566                },
16567                {
16568                    fn InvalidArgs(
16569                        data: &[u8],
16570                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16571                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
16572                                data,
16573                            )
16574                            .map(LightClientV3Errors::InvalidArgs)
16575                    }
16576                    InvalidArgs
16577                },
16578                {
16579                    fn ProverNotPermissioned(
16580                        data: &[u8],
16581                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16582                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
16583                                data,
16584                            )
16585                            .map(LightClientV3Errors::ProverNotPermissioned)
16586                    }
16587                    ProverNotPermissioned
16588                },
16589                {
16590                    fn NoChangeRequired(
16591                        data: &[u8],
16592                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16593                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
16594                                data,
16595                            )
16596                            .map(LightClientV3Errors::NoChangeRequired)
16597                    }
16598                    NoChangeRequired
16599                },
16600                {
16601                    fn UUPSUnsupportedProxiableUUID(
16602                        data: &[u8],
16603                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16604                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
16605                                data,
16606                            )
16607                            .map(LightClientV3Errors::UUPSUnsupportedProxiableUUID)
16608                    }
16609                    UUPSUnsupportedProxiableUUID
16610                },
16611                {
16612                    fn InsufficientSnapshotHistory(
16613                        data: &[u8],
16614                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16615                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
16616                                data,
16617                            )
16618                            .map(LightClientV3Errors::InsufficientSnapshotHistory)
16619                    }
16620                    InsufficientSnapshotHistory
16621                },
16622                {
16623                    fn ERC1967NonPayable(
16624                        data: &[u8],
16625                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16626                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
16627                                data,
16628                            )
16629                            .map(LightClientV3Errors::ERC1967NonPayable)
16630                    }
16631                    ERC1967NonPayable
16632                },
16633                {
16634                    fn NotInitializing(
16635                        data: &[u8],
16636                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16637                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
16638                                data,
16639                            )
16640                            .map(LightClientV3Errors::NotInitializing)
16641                    }
16642                    NotInitializing
16643                },
16644                {
16645                    fn UUPSUnauthorizedCallContext(
16646                        data: &[u8],
16647                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16648                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
16649                                data,
16650                            )
16651                            .map(LightClientV3Errors::UUPSUnauthorizedCallContext)
16652                    }
16653                    UUPSUnauthorizedCallContext
16654                },
16655                {
16656                    fn InvalidAddress(
16657                        data: &[u8],
16658                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16659                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
16660                                data,
16661                            )
16662                            .map(LightClientV3Errors::InvalidAddress)
16663                    }
16664                    InvalidAddress
16665                },
16666                {
16667                    fn InvalidMaxStateHistory(
16668                        data: &[u8],
16669                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16670                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
16671                                data,
16672                            )
16673                            .map(LightClientV3Errors::InvalidMaxStateHistory)
16674                    }
16675                    InvalidMaxStateHistory
16676                },
16677                {
16678                    fn InvalidInitialization(
16679                        data: &[u8],
16680                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16681                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
16682                                data,
16683                            )
16684                            .map(LightClientV3Errors::InvalidInitialization)
16685                    }
16686                    InvalidInitialization
16687                },
16688            ];
16689            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16690                return Err(
16691                    alloy_sol_types::Error::unknown_selector(
16692                        <Self as alloy_sol_types::SolInterface>::NAME,
16693                        selector,
16694                    ),
16695                );
16696            };
16697            DECODE_VALIDATE_SHIMS[idx](data)
16698        }
16699        #[inline]
16700        fn abi_encoded_size(&self) -> usize {
16701            match self {
16702                Self::AddressEmptyCode(inner) => {
16703                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
16704                        inner,
16705                    )
16706                }
16707                Self::DeprecatedApi(inner) => {
16708                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
16709                }
16710                Self::ERC1967InvalidImplementation(inner) => {
16711                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
16712                        inner,
16713                    )
16714                }
16715                Self::ERC1967NonPayable(inner) => {
16716                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
16717                        inner,
16718                    )
16719                }
16720                Self::FailedInnerCall(inner) => {
16721                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
16722                        inner,
16723                    )
16724                }
16725                Self::InsufficientSnapshotHistory(inner) => {
16726                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
16727                        inner,
16728                    )
16729                }
16730                Self::InvalidAddress(inner) => {
16731                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
16732                        inner,
16733                    )
16734                }
16735                Self::InvalidArgs(inner) => {
16736                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
16737                }
16738                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16739                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
16740                        inner,
16741                    )
16742                }
16743                Self::InvalidInitialization(inner) => {
16744                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
16745                        inner,
16746                    )
16747                }
16748                Self::InvalidMaxStateHistory(inner) => {
16749                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
16750                        inner,
16751                    )
16752                }
16753                Self::InvalidProof(inner) => {
16754                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
16755                }
16756                Self::InvalidScalar(inner) => {
16757                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
16758                }
16759                Self::MissingEpochRootUpdate(inner) => {
16760                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
16761                        inner,
16762                    )
16763                }
16764                Self::NoChangeRequired(inner) => {
16765                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
16766                        inner,
16767                    )
16768                }
16769                Self::NotInitializing(inner) => {
16770                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
16771                        inner,
16772                    )
16773                }
16774                Self::OutdatedState(inner) => {
16775                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
16776                }
16777                Self::OwnableInvalidOwner(inner) => {
16778                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
16779                        inner,
16780                    )
16781                }
16782                Self::OwnableUnauthorizedAccount(inner) => {
16783                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
16784                        inner,
16785                    )
16786                }
16787                Self::OwnershipCannotBeRenounced(inner) => {
16788                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
16789                        inner,
16790                    )
16791                }
16792                Self::ProverNotPermissioned(inner) => {
16793                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
16794                        inner,
16795                    )
16796                }
16797                Self::UUPSUnauthorizedCallContext(inner) => {
16798                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
16799                        inner,
16800                    )
16801                }
16802                Self::UUPSUnsupportedProxiableUUID(inner) => {
16803                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
16804                        inner,
16805                    )
16806                }
16807                Self::WrongStakeTableUsed(inner) => {
16808                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
16809                        inner,
16810                    )
16811                }
16812            }
16813        }
16814        #[inline]
16815        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16816            match self {
16817                Self::AddressEmptyCode(inner) => {
16818                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
16819                        inner,
16820                        out,
16821                    )
16822                }
16823                Self::DeprecatedApi(inner) => {
16824                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
16825                        inner,
16826                        out,
16827                    )
16828                }
16829                Self::ERC1967InvalidImplementation(inner) => {
16830                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
16831                        inner,
16832                        out,
16833                    )
16834                }
16835                Self::ERC1967NonPayable(inner) => {
16836                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
16837                        inner,
16838                        out,
16839                    )
16840                }
16841                Self::FailedInnerCall(inner) => {
16842                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
16843                        inner,
16844                        out,
16845                    )
16846                }
16847                Self::InsufficientSnapshotHistory(inner) => {
16848                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
16849                        inner,
16850                        out,
16851                    )
16852                }
16853                Self::InvalidAddress(inner) => {
16854                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
16855                        inner,
16856                        out,
16857                    )
16858                }
16859                Self::InvalidArgs(inner) => {
16860                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
16861                        inner,
16862                        out,
16863                    )
16864                }
16865                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16866                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
16867                        inner,
16868                        out,
16869                    )
16870                }
16871                Self::InvalidInitialization(inner) => {
16872                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
16873                        inner,
16874                        out,
16875                    )
16876                }
16877                Self::InvalidMaxStateHistory(inner) => {
16878                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
16879                        inner,
16880                        out,
16881                    )
16882                }
16883                Self::InvalidProof(inner) => {
16884                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
16885                        inner,
16886                        out,
16887                    )
16888                }
16889                Self::InvalidScalar(inner) => {
16890                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
16891                        inner,
16892                        out,
16893                    )
16894                }
16895                Self::MissingEpochRootUpdate(inner) => {
16896                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
16897                        inner,
16898                        out,
16899                    )
16900                }
16901                Self::NoChangeRequired(inner) => {
16902                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
16903                        inner,
16904                        out,
16905                    )
16906                }
16907                Self::NotInitializing(inner) => {
16908                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
16909                        inner,
16910                        out,
16911                    )
16912                }
16913                Self::OutdatedState(inner) => {
16914                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
16915                        inner,
16916                        out,
16917                    )
16918                }
16919                Self::OwnableInvalidOwner(inner) => {
16920                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
16921                        inner,
16922                        out,
16923                    )
16924                }
16925                Self::OwnableUnauthorizedAccount(inner) => {
16926                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
16927                        inner,
16928                        out,
16929                    )
16930                }
16931                Self::OwnershipCannotBeRenounced(inner) => {
16932                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
16933                        inner,
16934                        out,
16935                    )
16936                }
16937                Self::ProverNotPermissioned(inner) => {
16938                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
16939                        inner,
16940                        out,
16941                    )
16942                }
16943                Self::UUPSUnauthorizedCallContext(inner) => {
16944                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
16945                        inner,
16946                        out,
16947                    )
16948                }
16949                Self::UUPSUnsupportedProxiableUUID(inner) => {
16950                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
16951                        inner,
16952                        out,
16953                    )
16954                }
16955                Self::WrongStakeTableUsed(inner) => {
16956                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
16957                        inner,
16958                        out,
16959                    )
16960                }
16961            }
16962        }
16963    }
16964    ///Container for all the [`LightClientV3`](self) events.
16965    #[derive(Clone)]
16966    #[derive(serde::Serialize, serde::Deserialize)]
16967    #[derive(Debug, PartialEq, Eq, Hash)]
16968    pub enum LightClientV3Events {
16969        #[allow(missing_docs)]
16970        Initialized(Initialized),
16971        #[allow(missing_docs)]
16972        NewEpoch(NewEpoch),
16973        #[allow(missing_docs)]
16974        NewState(NewState),
16975        #[allow(missing_docs)]
16976        OwnershipTransferred(OwnershipTransferred),
16977        #[allow(missing_docs)]
16978        PermissionedProverNotRequired(PermissionedProverNotRequired),
16979        #[allow(missing_docs)]
16980        PermissionedProverRequired(PermissionedProverRequired),
16981        #[allow(missing_docs)]
16982        Upgrade(Upgrade),
16983        #[allow(missing_docs)]
16984        Upgraded(Upgraded),
16985    }
16986    impl LightClientV3Events {
16987        /// All the selectors of this enum.
16988        ///
16989        /// Note that the selectors might not be in the same order as the variants.
16990        /// No guarantees are made about the order of the selectors.
16991        ///
16992        /// Prefer using `SolInterface` methods instead.
16993        pub const SELECTORS: &'static [[u8; 32usize]] = &[
16994            [
16995                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
16996                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
16997                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
16998            ],
16999            [
17000                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
17001                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
17002                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
17003            ],
17004            [
17005                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
17006                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
17007                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
17008            ],
17009            [
17010                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
17011                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
17012                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
17013            ],
17014            [
17015                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
17016                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
17017                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
17018            ],
17019            [
17020                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
17021                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
17022                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
17023            ],
17024            [
17025                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
17026                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
17027                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
17028            ],
17029            [
17030                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
17031                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
17032                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
17033            ],
17034        ];
17035        /// The names of the variants in the same order as `SELECTORS`.
17036        pub const VARIANT_NAMES: &'static [&'static str] = &[
17037            ::core::stringify!(NewEpoch),
17038            ::core::stringify!(PermissionedProverRequired),
17039            ::core::stringify!(OwnershipTransferred),
17040            ::core::stringify!(PermissionedProverNotRequired),
17041            ::core::stringify!(NewState),
17042            ::core::stringify!(Upgraded),
17043            ::core::stringify!(Initialized),
17044            ::core::stringify!(Upgrade),
17045        ];
17046        /// The signatures in the same order as `SELECTORS`.
17047        pub const SIGNATURES: &'static [&'static str] = &[
17048            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
17049            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
17050            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
17051            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
17052            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
17053            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
17054            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
17055            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
17056        ];
17057        /// Returns the signature for the given selector, if known.
17058        #[inline]
17059        pub fn signature_by_selector(
17060            selector: [u8; 32usize],
17061        ) -> ::core::option::Option<&'static str> {
17062            match Self::SELECTORS.binary_search(&selector) {
17063                ::core::result::Result::Ok(idx) => {
17064                    ::core::option::Option::Some(Self::SIGNATURES[idx])
17065                }
17066                ::core::result::Result::Err(_) => ::core::option::Option::None,
17067            }
17068        }
17069        /// Returns the enum variant name for the given selector, if known.
17070        #[inline]
17071        pub fn name_by_selector(
17072            selector: [u8; 32usize],
17073        ) -> ::core::option::Option<&'static str> {
17074            let sig = Self::signature_by_selector(selector)?;
17075            sig.split_once('(').map(|(name, _)| name)
17076        }
17077    }
17078    #[automatically_derived]
17079    impl alloy_sol_types::SolEventInterface for LightClientV3Events {
17080        const NAME: &'static str = "LightClientV3Events";
17081        const COUNT: usize = 8usize;
17082        fn decode_raw_log(
17083            topics: &[alloy_sol_types::Word],
17084            data: &[u8],
17085        ) -> alloy_sol_types::Result<Self> {
17086            match topics.first().copied() {
17087                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17088                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
17089                            topics,
17090                            data,
17091                        )
17092                        .map(Self::Initialized)
17093                }
17094                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17095                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17096                        .map(Self::NewEpoch)
17097                }
17098                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17099                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17100                        .map(Self::NewState)
17101                }
17102                Some(
17103                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17104                ) => {
17105                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
17106                            topics,
17107                            data,
17108                        )
17109                        .map(Self::OwnershipTransferred)
17110                }
17111                Some(
17112                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17113                ) => {
17114                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17115                            topics,
17116                            data,
17117                        )
17118                        .map(Self::PermissionedProverNotRequired)
17119                }
17120                Some(
17121                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17122                ) => {
17123                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17124                            topics,
17125                            data,
17126                        )
17127                        .map(Self::PermissionedProverRequired)
17128                }
17129                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17130                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17131                        .map(Self::Upgrade)
17132                }
17133                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17134                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17135                        .map(Self::Upgraded)
17136                }
17137                _ => {
17138                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
17139                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
17140                        log: alloy_sol_types::private::Box::new(
17141                            alloy_sol_types::private::LogData::new_unchecked(
17142                                topics.to_vec(),
17143                                data.to_vec().into(),
17144                            ),
17145                        ),
17146                    })
17147                }
17148            }
17149        }
17150    }
17151    #[automatically_derived]
17152    impl alloy_sol_types::private::IntoLogData for LightClientV3Events {
17153        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
17154            match self {
17155                Self::Initialized(inner) => {
17156                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17157                }
17158                Self::NewEpoch(inner) => {
17159                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17160                }
17161                Self::NewState(inner) => {
17162                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17163                }
17164                Self::OwnershipTransferred(inner) => {
17165                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17166                }
17167                Self::PermissionedProverNotRequired(inner) => {
17168                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17169                }
17170                Self::PermissionedProverRequired(inner) => {
17171                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17172                }
17173                Self::Upgrade(inner) => {
17174                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17175                }
17176                Self::Upgraded(inner) => {
17177                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17178                }
17179            }
17180        }
17181        fn into_log_data(self) -> alloy_sol_types::private::LogData {
17182            match self {
17183                Self::Initialized(inner) => {
17184                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17185                }
17186                Self::NewEpoch(inner) => {
17187                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17188                }
17189                Self::NewState(inner) => {
17190                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17191                }
17192                Self::OwnershipTransferred(inner) => {
17193                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17194                }
17195                Self::PermissionedProverNotRequired(inner) => {
17196                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17197                }
17198                Self::PermissionedProverRequired(inner) => {
17199                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17200                }
17201                Self::Upgrade(inner) => {
17202                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17203                }
17204                Self::Upgraded(inner) => {
17205                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17206                }
17207            }
17208        }
17209    }
17210    use alloy::contract as alloy_contract;
17211    /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
17212
17213See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
17214    #[inline]
17215    pub const fn new<
17216        P: alloy_contract::private::Provider<N>,
17217        N: alloy_contract::private::Network,
17218    >(
17219        address: alloy_sol_types::private::Address,
17220        __provider: P,
17221    ) -> LightClientV3Instance<P, N> {
17222        LightClientV3Instance::<P, N>::new(address, __provider)
17223    }
17224    /**Deploys this contract using the given `provider` and constructor arguments, if any.
17225
17226Returns a new instance of the contract, if the deployment was successful.
17227
17228For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17229    #[inline]
17230    pub fn deploy<
17231        P: alloy_contract::private::Provider<N>,
17232        N: alloy_contract::private::Network,
17233    >(
17234        __provider: P,
17235    ) -> impl ::core::future::Future<
17236        Output = alloy_contract::Result<LightClientV3Instance<P, N>>,
17237    > {
17238        LightClientV3Instance::<P, N>::deploy(__provider)
17239    }
17240    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17241and constructor arguments, if any.
17242
17243This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17244the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17245    #[inline]
17246    pub fn deploy_builder<
17247        P: alloy_contract::private::Provider<N>,
17248        N: alloy_contract::private::Network,
17249    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17250        LightClientV3Instance::<P, N>::deploy_builder(__provider)
17251    }
17252    /**A [`LightClientV3`](self) instance.
17253
17254Contains type-safe methods for interacting with an on-chain instance of the
17255[`LightClientV3`](self) contract located at a given `address`, using a given
17256provider `P`.
17257
17258If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
17259documentation on how to provide it), the `deploy` and `deploy_builder` methods can
17260be used to deploy a new instance of the contract.
17261
17262See the [module-level documentation](self) for all the available methods.*/
17263    #[derive(Clone)]
17264    pub struct LightClientV3Instance<P, N = alloy_contract::private::Ethereum> {
17265        address: alloy_sol_types::private::Address,
17266        provider: P,
17267        _network: ::core::marker::PhantomData<N>,
17268    }
17269    #[automatically_derived]
17270    impl<P, N> ::core::fmt::Debug for LightClientV3Instance<P, N> {
17271        #[inline]
17272        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
17273            f.debug_tuple("LightClientV3Instance").field(&self.address).finish()
17274        }
17275    }
17276    /// Instantiation and getters/setters.
17277    impl<
17278        P: alloy_contract::private::Provider<N>,
17279        N: alloy_contract::private::Network,
17280    > LightClientV3Instance<P, N> {
17281        /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
17282
17283See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
17284        #[inline]
17285        pub const fn new(
17286            address: alloy_sol_types::private::Address,
17287            __provider: P,
17288        ) -> Self {
17289            Self {
17290                address,
17291                provider: __provider,
17292                _network: ::core::marker::PhantomData,
17293            }
17294        }
17295        /**Deploys this contract using the given `provider` and constructor arguments, if any.
17296
17297Returns a new instance of the contract, if the deployment was successful.
17298
17299For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17300        #[inline]
17301        pub async fn deploy(
17302            __provider: P,
17303        ) -> alloy_contract::Result<LightClientV3Instance<P, N>> {
17304            let call_builder = Self::deploy_builder(__provider);
17305            let contract_address = call_builder.deploy().await?;
17306            Ok(Self::new(contract_address, call_builder.provider))
17307        }
17308        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17309and constructor arguments, if any.
17310
17311This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17312the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17313        #[inline]
17314        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17315            alloy_contract::RawCallBuilder::new_raw_deploy(
17316                __provider,
17317                ::core::clone::Clone::clone(&BYTECODE),
17318            )
17319        }
17320        /// Returns a reference to the address.
17321        #[inline]
17322        pub const fn address(&self) -> &alloy_sol_types::private::Address {
17323            &self.address
17324        }
17325        /// Sets the address.
17326        #[inline]
17327        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
17328            self.address = address;
17329        }
17330        /// Sets the address and returns `self`.
17331        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
17332            self.set_address(address);
17333            self
17334        }
17335        /// Returns a reference to the provider.
17336        #[inline]
17337        pub const fn provider(&self) -> &P {
17338            &self.provider
17339        }
17340    }
17341    impl<P: ::core::clone::Clone, N> LightClientV3Instance<&P, N> {
17342        /// Clones the provider and returns a new instance with the cloned provider.
17343        #[inline]
17344        pub fn with_cloned_provider(self) -> LightClientV3Instance<P, N> {
17345            LightClientV3Instance {
17346                address: self.address,
17347                provider: ::core::clone::Clone::clone(&self.provider),
17348                _network: ::core::marker::PhantomData,
17349            }
17350        }
17351    }
17352    /// Function calls.
17353    impl<
17354        P: alloy_contract::private::Provider<N>,
17355        N: alloy_contract::private::Network,
17356    > LightClientV3Instance<P, N> {
17357        /// Creates a new call builder using this contract instance's provider and address.
17358        ///
17359        /// Note that the call can be any function call, not just those defined in this
17360        /// contract. Prefer using the other methods for building type-safe contract calls.
17361        pub fn call_builder<C: alloy_sol_types::SolCall>(
17362            &self,
17363            call: &C,
17364        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
17365            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
17366        }
17367        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
17368        pub fn UPGRADE_INTERFACE_VERSION(
17369            &self,
17370        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
17371            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
17372        }
17373        ///Creates a new call builder for the [`_getVk`] function.
17374        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
17375            self.call_builder(&_getVkCall)
17376        }
17377        ///Creates a new call builder for the [`authRoot`] function.
17378        pub fn authRoot(&self) -> alloy_contract::SolCallBuilder<&P, authRootCall, N> {
17379            self.call_builder(&authRootCall)
17380        }
17381        ///Creates a new call builder for the [`blocksPerEpoch`] function.
17382        pub fn blocksPerEpoch(
17383            &self,
17384        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
17385            self.call_builder(&blocksPerEpochCall)
17386        }
17387        ///Creates a new call builder for the [`currentBlockNumber`] function.
17388        pub fn currentBlockNumber(
17389            &self,
17390        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
17391            self.call_builder(&currentBlockNumberCall)
17392        }
17393        ///Creates a new call builder for the [`currentEpoch`] function.
17394        pub fn currentEpoch(
17395            &self,
17396        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
17397            self.call_builder(&currentEpochCall)
17398        }
17399        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
17400        pub fn disablePermissionedProverMode(
17401            &self,
17402        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
17403            self.call_builder(&disablePermissionedProverModeCall)
17404        }
17405        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
17406        pub fn epochFromBlockNumber(
17407            &self,
17408            _blockNum: u64,
17409            _blocksPerEpoch: u64,
17410        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
17411            self.call_builder(
17412                &epochFromBlockNumberCall {
17413                    _blockNum,
17414                    _blocksPerEpoch,
17415                },
17416            )
17417        }
17418        ///Creates a new call builder for the [`epochStartBlock`] function.
17419        pub fn epochStartBlock(
17420            &self,
17421        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
17422            self.call_builder(&epochStartBlockCall)
17423        }
17424        ///Creates a new call builder for the [`finalizedState`] function.
17425        pub fn finalizedState(
17426            &self,
17427        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
17428            self.call_builder(&finalizedStateCall)
17429        }
17430        ///Creates a new call builder for the [`genesisStakeTableState`] function.
17431        pub fn genesisStakeTableState(
17432            &self,
17433        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
17434            self.call_builder(&genesisStakeTableStateCall)
17435        }
17436        ///Creates a new call builder for the [`genesisState`] function.
17437        pub fn genesisState(
17438            &self,
17439        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
17440            self.call_builder(&genesisStateCall)
17441        }
17442        ///Creates a new call builder for the [`getHotShotCommitment`] function.
17443        pub fn getHotShotCommitment(
17444            &self,
17445            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
17446        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
17447            self.call_builder(
17448                &getHotShotCommitmentCall {
17449                    hotShotBlockHeight,
17450                },
17451            )
17452        }
17453        ///Creates a new call builder for the [`getStateHistoryCount`] function.
17454        pub fn getStateHistoryCount(
17455            &self,
17456        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
17457            self.call_builder(&getStateHistoryCountCall)
17458        }
17459        ///Creates a new call builder for the [`getVersion`] function.
17460        pub fn getVersion(
17461            &self,
17462        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
17463            self.call_builder(&getVersionCall)
17464        }
17465        ///Creates a new call builder for the [`initialize`] function.
17466        pub fn initialize(
17467            &self,
17468            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17469            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17470            _stateHistoryRetentionPeriod: u32,
17471            owner: alloy::sol_types::private::Address,
17472        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
17473            self.call_builder(
17474                &initializeCall {
17475                    _genesis,
17476                    _genesisStakeTableState,
17477                    _stateHistoryRetentionPeriod,
17478                    owner,
17479                },
17480            )
17481        }
17482        ///Creates a new call builder for the [`initializeV2`] function.
17483        pub fn initializeV2(
17484            &self,
17485            _blocksPerEpoch: u64,
17486            _epochStartBlock: u64,
17487        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
17488            self.call_builder(
17489                &initializeV2Call {
17490                    _blocksPerEpoch,
17491                    _epochStartBlock,
17492                },
17493            )
17494        }
17495        ///Creates a new call builder for the [`initializeV3`] function.
17496        pub fn initializeV3(
17497            &self,
17498        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
17499            self.call_builder(&initializeV3Call)
17500        }
17501        ///Creates a new call builder for the [`isEpochRoot`] function.
17502        pub fn isEpochRoot(
17503            &self,
17504            blockHeight: u64,
17505        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
17506            self.call_builder(&isEpochRootCall { blockHeight })
17507        }
17508        ///Creates a new call builder for the [`isGtEpochRoot`] function.
17509        pub fn isGtEpochRoot(
17510            &self,
17511            blockHeight: u64,
17512        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
17513            self.call_builder(&isGtEpochRootCall { blockHeight })
17514        }
17515        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
17516        pub fn isPermissionedProverEnabled(
17517            &self,
17518        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
17519            self.call_builder(&isPermissionedProverEnabledCall)
17520        }
17521        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
17522        pub fn lagOverEscapeHatchThreshold(
17523            &self,
17524            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
17525            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
17526        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
17527            self.call_builder(
17528                &lagOverEscapeHatchThresholdCall {
17529                    blockNumber,
17530                    blockThreshold,
17531                },
17532            )
17533        }
17534        ///Creates a new call builder for the [`newFinalizedState_0`] function.
17535        pub fn newFinalizedState_0(
17536            &self,
17537            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17538            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17539        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
17540            self.call_builder(&newFinalizedState_0Call { _0, _1 })
17541        }
17542        ///Creates a new call builder for the [`newFinalizedState_1`] function.
17543        pub fn newFinalizedState_1(
17544            &self,
17545            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17546            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17547            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17548        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
17549            self.call_builder(
17550                &newFinalizedState_1Call {
17551                    _0,
17552                    _1,
17553                    _2,
17554                },
17555            )
17556        }
17557        ///Creates a new call builder for the [`newFinalizedState_2`] function.
17558        pub fn newFinalizedState_2(
17559            &self,
17560            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17561            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17562            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
17563            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17564        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_2Call, N> {
17565            self.call_builder(
17566                &newFinalizedState_2Call {
17567                    newState,
17568                    nextStakeTable,
17569                    newAuthRoot,
17570                    proof,
17571                },
17572            )
17573        }
17574        ///Creates a new call builder for the [`owner`] function.
17575        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
17576            self.call_builder(&ownerCall)
17577        }
17578        ///Creates a new call builder for the [`permissionedProver`] function.
17579        pub fn permissionedProver(
17580            &self,
17581        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
17582            self.call_builder(&permissionedProverCall)
17583        }
17584        ///Creates a new call builder for the [`proxiableUUID`] function.
17585        pub fn proxiableUUID(
17586            &self,
17587        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
17588            self.call_builder(&proxiableUUIDCall)
17589        }
17590        ///Creates a new call builder for the [`renounceOwnership`] function.
17591        pub fn renounceOwnership(
17592            &self,
17593        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
17594            self.call_builder(&renounceOwnershipCall)
17595        }
17596        ///Creates a new call builder for the [`setPermissionedProver`] function.
17597        pub fn setPermissionedProver(
17598            &self,
17599            prover: alloy::sol_types::private::Address,
17600        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
17601            self.call_builder(
17602                &setPermissionedProverCall {
17603                    prover,
17604                },
17605            )
17606        }
17607        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
17608        pub fn setStateHistoryRetentionPeriod(
17609            &self,
17610            historySeconds: u32,
17611        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
17612            self.call_builder(
17613                &setStateHistoryRetentionPeriodCall {
17614                    historySeconds,
17615                },
17616            )
17617        }
17618        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
17619        pub fn setstateHistoryRetentionPeriod(
17620            &self,
17621            historySeconds: u32,
17622        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
17623            self.call_builder(
17624                &setstateHistoryRetentionPeriodCall {
17625                    historySeconds,
17626                },
17627            )
17628        }
17629        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
17630        pub fn stateHistoryCommitments(
17631            &self,
17632            _0: alloy::sol_types::private::primitives::aliases::U256,
17633        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
17634            self.call_builder(&stateHistoryCommitmentsCall(_0))
17635        }
17636        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
17637        pub fn stateHistoryFirstIndex(
17638            &self,
17639        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
17640            self.call_builder(&stateHistoryFirstIndexCall)
17641        }
17642        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
17643        pub fn stateHistoryRetentionPeriod(
17644            &self,
17645        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
17646            self.call_builder(&stateHistoryRetentionPeriodCall)
17647        }
17648        ///Creates a new call builder for the [`transferOwnership`] function.
17649        pub fn transferOwnership(
17650            &self,
17651            newOwner: alloy::sol_types::private::Address,
17652        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
17653            self.call_builder(&transferOwnershipCall { newOwner })
17654        }
17655        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
17656        pub fn updateEpochStartBlock(
17657            &self,
17658            newEpochStartBlock: u64,
17659        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
17660            self.call_builder(
17661                &updateEpochStartBlockCall {
17662                    newEpochStartBlock,
17663                },
17664            )
17665        }
17666        ///Creates a new call builder for the [`upgradeToAndCall`] function.
17667        pub fn upgradeToAndCall(
17668            &self,
17669            newImplementation: alloy::sol_types::private::Address,
17670            data: alloy::sol_types::private::Bytes,
17671        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
17672            self.call_builder(
17673                &upgradeToAndCallCall {
17674                    newImplementation,
17675                    data,
17676                },
17677            )
17678        }
17679        ///Creates a new call builder for the [`votingStakeTableState`] function.
17680        pub fn votingStakeTableState(
17681            &self,
17682        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
17683            self.call_builder(&votingStakeTableStateCall)
17684        }
17685    }
17686    /// Event filters.
17687    impl<
17688        P: alloy_contract::private::Provider<N>,
17689        N: alloy_contract::private::Network,
17690    > LightClientV3Instance<P, N> {
17691        /// Creates a new event filter using this contract instance's provider and address.
17692        ///
17693        /// Note that the type can be any event, not just those defined in this contract.
17694        /// Prefer using the other methods for building type-safe event filters.
17695        pub fn event_filter<E: alloy_sol_types::SolEvent>(
17696            &self,
17697        ) -> alloy_contract::Event<&P, E, N> {
17698            alloy_contract::Event::new_sol(&self.provider, &self.address)
17699        }
17700        ///Creates a new event filter for the [`Initialized`] event.
17701        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
17702            self.event_filter::<Initialized>()
17703        }
17704        ///Creates a new event filter for the [`NewEpoch`] event.
17705        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
17706            self.event_filter::<NewEpoch>()
17707        }
17708        ///Creates a new event filter for the [`NewState`] event.
17709        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
17710            self.event_filter::<NewState>()
17711        }
17712        ///Creates a new event filter for the [`OwnershipTransferred`] event.
17713        pub fn OwnershipTransferred_filter(
17714            &self,
17715        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
17716            self.event_filter::<OwnershipTransferred>()
17717        }
17718        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
17719        pub fn PermissionedProverNotRequired_filter(
17720            &self,
17721        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
17722            self.event_filter::<PermissionedProverNotRequired>()
17723        }
17724        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
17725        pub fn PermissionedProverRequired_filter(
17726            &self,
17727        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
17728            self.event_filter::<PermissionedProverRequired>()
17729        }
17730        ///Creates a new event filter for the [`Upgrade`] event.
17731        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
17732            self.event_filter::<Upgrade>()
17733        }
17734        ///Creates a new event filter for the [`Upgraded`] event.
17735        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
17736            self.event_filter::<Upgraded>()
17737        }
17738    }
17739}