hotshot_contract_adapter/bindings/
light_client_arbitrum_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 LightClientArbitrumV3 {
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 LightClientArbitrumV3 {
5275    use super::*;
5276    use alloy::sol_types as alloy_sol_types;
5277    /// The creation / init bytecode of the contract.
5278    ///
5279    /// ```text
5280    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161373e6100f95f395f8181611ce101528181611d0a0152611e87015261373e5ff3fe608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d14610763578063e030330114610792578063f0682054146107b1578063f2fde38b146107d0578063f9e50d19146107ef575f5ffd5b80639fdb54a71461065b578063aabd5db3146106b0578063ad3cb1cc146106cf578063b33bc4911461070c578063c23b9e9e1461072b575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105ad57806390c14390146105e957806396c1ca6114610608578063998328e8146106275780639baa3cc91461063c575f5ffd5b8063715018a614610510578063757c37ad14610524578063766718081461053e578063826e41fc146105525780638584d23f14610571575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d319414610495578063433dba9f146104b65780634f1ef286146104d557806352d1902d146104e857806369cc6a04146104fc575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b11461045b5780633ed55b7b1461046f575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b610246366004612976565b610803565b005b348015610258575f5ffd5b5061026c61026736600461298f565b6108b6565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108ff565b6040516102a191906129a6565b348015610343575f5ffd5b5061024b610352366004612bbd565b610914565b348015610362575f5ffd5b5061024b610371366004612e7f565b61098b565b348015610381575f5ffd5b50610395610390366004612bbd565b6109a4565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612bbd565b610a06565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b5061044d610a9b565b6040519081526020016102a1565b348015610466575f5ffd5b5061024b610afd565b34801561047a575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b3480156104a0575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104c1575f5ffd5b5061024b6104d0366004612ec6565b610bf4565b61024b6104e3366004612edf565b610c08565b3480156104f3575f5ffd5b5061044d610c27565b348015610507575f5ffd5b5061024b610c42565b34801561051b575f5ffd5b5061024b610cb0565b34801561052f575f5ffd5b5061024b610371366004612fe2565b348015610549575f5ffd5b506103cb610cd1565b34801561055d575f5ffd5b506008546001600160a01b03161515610395565b34801561057c575f5ffd5b5061059061058b36600461298f565b610cf6565b604080519283526001600160401b039091166020830152016102a1565b3480156105b8575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105f4575f5ffd5b506103cb610603366004613026565b610e21565b348015610613575f5ffd5b5061024b610622366004612ec6565b610e90565b348015610632575f5ffd5b5061044d600f5481565b348015610647575f5ffd5b5061024b61065636600461304e565b610f19565b348015610666575f5ffd5b5060065460075461068a916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106bb575f5ffd5b5061024b6106ca3660046130a3565b611028565b3480156106da575f5ffd5b506106ff604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a191906130e7565b348015610717575f5ffd5b5061024b610726366004613026565b611354565b348015610736575f5ffd5b5060085461074e90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b34801561076e575f5ffd5b5060045460055461068a916001600160401b0380821692600160401b909204169083565b34801561079d575f5ffd5b506103956107ac36600461311c565b6114ad565b3480156107bc575f5ffd5b50600a546103cb906001600160401b031681565b3480156107db575f5ffd5b5061024b6107ea366004612976565b61160c565b3480156107fa575f5ffd5b5060095461044d565b61080b61164b565b6001600160a01b0381166108325760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036108615760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108c5575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109076126dd565b61090f6116a6565b905090565b61091c61164b565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561096294919091048116928116911617610e21565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109c45750600a546001600160401b0316155b156109d057505f919050565b600a546001600160401b03166109e7836005613150565b6109f19190613183565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a265750600a546001600160401b0316155b15610a3257505f919050565b600a54610a48906001600160401b031683613183565b6001600160401b03161580610a955750600a54610a70906005906001600160401b03166131b0565b600a546001600160401b0391821691610a8a911684613183565b6001600160401b0316115b92915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090f91906131cf565b610b0561164b565b5f5160206137125f395f51905f52805460039190600160401b900460ff1680610b3b575080546001600160401b03808416911610155b15610b595760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b939291810482169116610e21565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610bfc61164b565b610c0581610e90565b50565b610c10611cd6565b610c1982611d7a565b610c238282611dbb565b5050565b5f610c30611e7c565b505f5160206136f25f395f51905f5290565b610c4a61164b565b6008546001600160a01b031615610c9557600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610cb861164b565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f9161090f916001600160401b03600160401b90920482169116610e21565b600980545f91829190610d0a6001836131e6565b81548110610d1a57610d1a6131f9565b5f918252602090912060029091020154600160801b90046001600160401b03168410610d5957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610e1a578460098281548110610d8957610d896131f9565b5f918252602090912060029091020154600160801b90046001600160401b03161115610e125760098181548110610dc257610dc26131f9565b905f5260205f2090600202016001015460098281548110610de557610de56131f9565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610d6d565b5050915091565b5f816001600160401b03165f03610e3957505f610a95565b826001600160401b03165f03610e5157506001610a95565b610e5b8284613183565b6001600160401b03165f03610e7b57610e74828461320d565b9050610a95565b610e85828461320d565b610e74906001613150565b610e9861164b565b610e108163ffffffff161080610eb757506301e133808163ffffffff16115b80610ed5575060085463ffffffff600160a01b909104811690821611155b15610ef3576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f5160206137125f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610f4a5750825b90505f826001600160401b03166001148015610f655750303b155b905081158015610f73575080155b15610f915760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fbb57845460ff60401b1916600160401b1785555b610fc486611ec5565b610fcc611ed6565b610fd7898989611ede565b831561101d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561104d57506008546001600160a01b03163314155b1561106b576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806110a4575060065460208501516001600160401b03600160401b9092048216911611155b156110c25760405163051c46ef60e01b815260040160405180910390fd5b6110cf846040015161200a565b6110dc836020015161200a565b6110e9836040015161200a565b6110f6836060015161200a565b5f6110ff610cd1565b6020860151600a549192505f9161111f91906001600160401b0316610e21565b6010549091506001600160401b0390811690821610611163576111458660200151610a06565b156111635760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561120f57600261118683836131b0565b6001600160401b0316106111ad5760405163080ae8d960e01b815260040160405180910390fd5b6111b8826001613150565b6001600160401b0316816001600160401b03161480156111f157506006546111ef90600160401b90046001600160401b03166109a4565b155b1561120f5760405163080ae8d960e01b815260040160405180910390fd5b61121b8686868661204b565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f859055601054811690821610801590611278575061127886602001516109a4565b156112e2578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6112c6826001613150565b6040516001600160401b03909116815260200160405180910390a15b6112f46112ed610a9b565b4288612275565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6886040015160405161134491815260200190565b60405180910390a3505050505050565b61135c61164b565b5f5160206137125f395f51905f52805460029190600160401b900460ff1680611392575080546001600160401b03808416911610155b156113b05760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116113f8576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556114418385610e21565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f906114ba610a9b565b8411806114c5575080155b8061150f5750600854600980549091600160c01b90046001600160401b03169081106114f3576114f36131f9565b5f9182526020909120600290910201546001600160401b031684105b1561152d5760405163b0b4387760e01b815260040160405180910390fd5b5f808061153b6001856131e6565b90505b816115d757600854600160c01b90046001600160401b031681106115d7578660098281548110611570576115706131f9565b5f9182526020909120600290910201546001600160401b0316116115c55760019150600981815481106115a5576115a56131f9565b5f9182526020909120600290910201546001600160401b031692506115d7565b806115cf8161323a565b91505061153e565b816115f55760405163b0b4387760e01b815260040160405180910390fd5b8561160084896131e6565b11979650505050505050565b61161461164b565b6001600160a01b03811661164257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610c058161245e565b3361167d7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610cae5760405163118cdaa760e01b8152336004820152602401611639565b6116ae6126dd565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611d5c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611d505f5160206136f25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610cae5760405163703e46dd60e11b815260040160405180910390fd5b611d8261164b565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108ab565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e15575060408051601f3d908101601f19168201909252611e12918101906131cf565b60015b611e3d57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611639565b5f5160206136f25f395f51905f528114611e6d57604051632a87526960e21b815260048101829052602401611639565b611e7783836124ce565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cae5760405163703e46dd60e11b815260040160405180910390fd5b611ecd612523565b610c0581612559565b610cae612523565b82516001600160401b0316151580611f02575060208301516001600160401b031615155b80611f0f57506020820151155b80611f1c57506040820151155b80611f2957506060820151155b80611f3357508151155b80611f455750610e108163ffffffff16105b80611f5957506301e133808163ffffffff16115b15611f77576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610c235760405163016c173360e21b815260040160405180910390fd5b5f6120546108ff565b905061205e612942565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120b657506120b687602001516109a4565b156120ff576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a001604051602081830303815290604052905061213a565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261218b9184908990602001613266565b60408051601f19818403018152919052805160209091012090506121cf7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613288565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061220f90879087908a9060040161347d565b602060405180830381865af415801561222a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061224e919061369d565b61226b576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906122ea575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106122b5576122b56131f9565b5f9182526020909120600290910201546122df90600160401b90046001600160401b0316846131b0565b6001600160401b0316115b1561237d57600854600980549091600160c01b90046001600160401b0316908110612317576123176131f9565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612357836136bc565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6124d782612561565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561251b57611e7782826125c4565b610c23612636565b5f5160206137125f395f51905f5254600160401b900460ff16610cae57604051631afcd79f60e31b815260040160405180910390fd5b611614612523565b806001600160a01b03163b5f0361259657604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611639565b5f5160206136f25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516125e091906136e6565b5f60405180830381855af49150503d805f8114612618576040519150601f19603f3d011682016040523d82523d5f602084013e61261d565b606091505b509150915061262d858383612655565b95945050505050565b3415610cae5760405163b398979f60e01b815260040160405180910390fd5b60608261266a57612665826126b4565b6126ad565b815115801561268157506001600160a01b0384163b155b156126aa57604051639996b31560e01b81526001600160a01b0385166004820152602401611639565b50805b9392505050565b8051156126c45780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161271060405180604001604052805f81526020015f81525090565b815260200161273060405180604001604052805f81526020015f81525090565b815260200161275060405180604001604052805f81526020015f81525090565b815260200161277060405180604001604052805f81526020015f81525090565b815260200161279060405180604001604052805f81526020015f81525090565b81526020016127b060405180604001604052805f81526020015f81525090565b81526020016127d060405180604001604052805f81526020015f81525090565b81526020016127f060405180604001604052805f81526020015f81525090565b815260200161281060405180604001604052805f81526020015f81525090565b815260200161283060405180604001604052805f81526020015f81525090565b815260200161285060405180604001604052805f81526020015f81525090565b815260200161287060405180604001604052805f81526020015f81525090565b815260200161289060405180604001604052805f81526020015f81525090565b81526020016128b060405180604001604052805f81526020015f81525090565b81526020016128d060405180604001604052805f81526020015f81525090565b81526020016128f060405180604001604052805f81526020015f81525090565b815260200161291060405180604001604052805f81526020015f81525090565b815260200161293060405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b0381168114610a01575f5ffd5b5f60208284031215612986575f5ffd5b6126ad82612960565b5f6020828403121561299f575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516129d8604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610a01575f5ffd5b5f60208284031215612bcd575f5ffd5b6126ad82612ba7565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612c0d57612c0d612bd6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612c3b57612c3b612bd6565b604052919050565b5f60608284031215612c53575f5ffd5b604051606081016001600160401b0381118282101715612c7557612c75612bd6565b604052905080612c8483612ba7565b8152612c9260208401612ba7565b6020820152604092830135920191909152919050565b5f60408284031215612cb8575f5ffd5b604080519081016001600160401b0381118282101715612cda57612cda612bd6565b604052823581526020928301359281019290925250919050565b5f6104808284031215612d05575f5ffd5b612d0d612bea565b9050612d198383612ca8565b8152612d288360408401612ca8565b6020820152612d3a8360808401612ca8565b6040820152612d4c8360c08401612ca8565b6060820152612d5f836101008401612ca8565b6080820152612d72836101408401612ca8565b60a0820152612d85836101808401612ca8565b60c0820152612d98836101c08401612ca8565b60e0820152612dab836102008401612ca8565b610100820152612dbf836102408401612ca8565b610120820152612dd3836102808401612ca8565b610140820152612de7836102c08401612ca8565b610160820152612dfb836103008401612ca8565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e91575f5ffd5b612e9b8484612c43565b9150612eaa8460608501612cf4565b90509250929050565b803563ffffffff81168114610a01575f5ffd5b5f60208284031215612ed6575f5ffd5b6126ad82612eb3565b5f5f60408385031215612ef0575f5ffd5b612ef983612960565b915060208301356001600160401b03811115612f13575f5ffd5b8301601f81018513612f23575f5ffd5b80356001600160401b03811115612f3c57612f3c612bd6565b612f4f601f8201601f1916602001612c13565b818152866020838501011115612f63575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f92575f5ffd5b604051608081016001600160401b0381118282101715612fb457612fb4612bd6565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612ff5575f5ffd5b612fff8585612c43565b925061300e8560608601612f82565b915061301d8560e08601612cf4565b90509250925092565b5f5f60408385031215613037575f5ffd5b61304083612ba7565b9150612eaa60208401612ba7565b5f5f5f5f6101208587031215613062575f5ffd5b61306c8686612c43565b935061307b8660608701612f82565b925061308960e08601612eb3565b91506130986101008601612960565b905092959194509250565b5f5f5f5f61058085870312156130b7575f5ffd5b6130c18686612c43565b93506130d08660608701612f82565b925060e08501359150613098866101008701612cf4565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f6040838503121561312d575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a9557610a9561313c565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061319b5761319b61316f565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a9557610a9561313c565b5f602082840312156131df575f5ffd5b5051919050565b81810381811115610a9557610a9561313c565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806132255761322561316f565b806001600160401b0384160491505092915050565b5f816132485761324861313c565b505f190190565b5f81518060208401855e5f93019283525090919050565b5f61327a613274838761324f565b8561324f565b928352505060200192915050565b5f826132965761329661316f565b500690565b805f5b60058110156132bd57815184526020938401939091019060010161329e565b50505050565b6132d882825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a2082019050845182526020850151602083015260408501516134af604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261368761050083018561329b565b6136956105a08301846132c3565b949350505050565b5f602082840312156136ad575f5ffd5b815180151581146126ad575f5ffd5b5f6001600160401b0382166001600160401b0381036136dd576136dd61313c565b60010192915050565b5f6126ad828461324f56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
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[`\x80Qa7>a\0\xF9_9_\x81\x81a\x1C\xE1\x01R\x81\x81a\x1D\n\x01Ra\x1E\x87\x01Ra7>_\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\x07cW\x80c\xE003\x01\x14a\x07\x92W\x80c\xF0h T\x14a\x07\xB1W\x80c\xF2\xFD\xE3\x8B\x14a\x07\xD0W\x80c\xF9\xE5\r\x19\x14a\x07\xEFW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06[W\x80c\xAA\xBD]\xB3\x14a\x06\xB0W\x80c\xAD<\xB1\xCC\x14a\x06\xCFW\x80c\xB3;\xC4\x91\x14a\x07\x0CW\x80c\xC2;\x9E\x9E\x14a\x07+W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xADW\x80c\x90\xC1C\x90\x14a\x05\xE9W\x80c\x96\xC1\xCAa\x14a\x06\x08W\x80c\x99\x83(\xE8\x14a\x06'W\x80c\x9B\xAA<\xC9\x14a\x06<W__\xFD[\x80cqP\x18\xA6\x14a\x05\x10W\x80cu|7\xAD\x14a\x05$W\x80cvg\x18\x08\x14a\x05>W\x80c\x82nA\xFC\x14a\x05RW\x80c\x85\x84\xD2?\x14a\x05qW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x95W\x80cC=\xBA\x9F\x14a\x04\xB6W\x80cO\x1E\xF2\x86\x14a\x04\xD5W\x80cR\xD1\x90-\x14a\x04\xE8W\x80ci\xCCj\x04\x14a\x04\xFCW__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04[W\x80c>\xD5[{\x14a\x04oW__\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)vV[a\x08\x03V[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)\x8FV[a\x08\xB6V[`@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\xFFV[`@Qa\x02\xA1\x91\x90a)\xA6V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+\xBDV[a\t\x14V[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\x7FV[a\t\x8BV[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+\xBDV[a\t\xA4V[`@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+\xBDV[a\n\x06V[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[Pa\x04Ma\n\x9BV[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04fW__\xFD[Pa\x02Ka\n\xFDV[4\x80\x15a\x04zW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\xA0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xC1W__\xFD[Pa\x02Ka\x04\xD06`\x04a.\xC6V[a\x0B\xF4V[a\x02Ka\x04\xE36`\x04a.\xDFV[a\x0C\x08V[4\x80\x15a\x04\xF3W__\xFD[Pa\x04Ma\x0C'V[4\x80\x15a\x05\x07W__\xFD[Pa\x02Ka\x0CBV[4\x80\x15a\x05\x1BW__\xFD[Pa\x02Ka\x0C\xB0V[4\x80\x15a\x05/W__\xFD[Pa\x02Ka\x03q6`\x04a/\xE2V[4\x80\x15a\x05IW__\xFD[Pa\x03\xCBa\x0C\xD1V[4\x80\x15a\x05]W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05|W__\xFD[Pa\x05\x90a\x05\x8B6`\x04a)\x8FV[a\x0C\xF6V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB8W__\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\xF4W__\xFD[Pa\x03\xCBa\x06\x036`\x04a0&V[a\x0E!V[4\x80\x15a\x06\x13W__\xFD[Pa\x02Ka\x06\"6`\x04a.\xC6V[a\x0E\x90V[4\x80\x15a\x062W__\xFD[Pa\x04M`\x0FT\x81V[4\x80\x15a\x06GW__\xFD[Pa\x02Ka\x06V6`\x04a0NV[a\x0F\x19V[4\x80\x15a\x06fW__\xFD[P`\x06T`\x07Ta\x06\x8A\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\xBBW__\xFD[Pa\x02Ka\x06\xCA6`\x04a0\xA3V[a\x10(V[4\x80\x15a\x06\xDAW__\xFD[Pa\x06\xFF`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0\xE7V[4\x80\x15a\x07\x17W__\xFD[Pa\x02Ka\x07&6`\x04a0&V[a\x13TV[4\x80\x15a\x076W__\xFD[P`\x08Ta\x07N\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\x07nW__\xFD[P`\x04T`\x05Ta\x06\x8A\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x9DW__\xFD[Pa\x03\x95a\x07\xAC6`\x04a1\x1CV[a\x14\xADV[4\x80\x15a\x07\xBCW__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xDBW__\xFD[Pa\x02Ka\x07\xEA6`\x04a)vV[a\x16\x0CV[4\x80\x15a\x07\xFAW__\xFD[P`\tTa\x04MV[a\x08\x0Ba\x16KV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x082W`@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\x08aW`@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\xC5W_\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\x07a&\xDDV[a\t\x0Fa\x16\xA6V[\x90P\x90V[a\t\x1Ca\x16KV[`\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\tb\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0E!V[`\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\xC4WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xD0WP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE7\x83`\x05a1PV[a\t\xF1\x91\x90a1\x83V[`\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\n2WP_\x91\x90PV[`\nTa\nH\x90`\x01`\x01`@\x1B\x03\x16\x83a1\x83V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x95WP`\nTa\np\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1\xB0V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x8A\x91\x16\x84a1\x83V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xD9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x0F\x91\x90a1\xCFV[a\x0B\x05a\x16KV[_Q` a7\x12_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x0B;WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x0BYW`@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\x93\x92\x91\x81\x04\x82\x16\x91\x16a\x0E!V[`\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\xFCa\x16KV[a\x0C\x05\x81a\x0E\x90V[PV[a\x0C\x10a\x1C\xD6V[a\x0C\x19\x82a\x1DzV[a\x0C#\x82\x82a\x1D\xBBV[PPV[_a\x0C0a\x1E|V[P_Q` a6\xF2_9_Q\x90_R\x90V[a\x0CJa\x16KV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C\x95W`\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\x0C\xB8a\x16KV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\t\x0F\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0E!V[`\t\x80T_\x91\x82\x91\x90a\r\n`\x01\x83a1\xE6V[\x81T\x81\x10a\r\x1AWa\r\x1Aa1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\rYW`@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\x0E\x1AW\x84`\t\x82\x81T\x81\x10a\r\x89Wa\r\x89a1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0E\x12W`\t\x81\x81T\x81\x10a\r\xC2Wa\r\xC2a1\xF9V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\r\xE5Wa\r\xE5a1\xF9V[\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\rmV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0E9WP_a\n\x95V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0EQWP`\x01a\n\x95V[a\x0E[\x82\x84a1\x83V[`\x01`\x01`@\x1B\x03\x16_\x03a\x0E{Wa\x0Et\x82\x84a2\rV[\x90Pa\n\x95V[a\x0E\x85\x82\x84a2\rV[a\x0Et\x90`\x01a1PV[a\x0E\x98a\x16KV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0E\xB7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0E\xD5WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0E\xF3W`@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` a7\x12_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0FJWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0FeWP0;\x15[\x90P\x81\x15\x80\x15a\x0FsWP\x80\x15[\x15a\x0F\x91W`@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\x0F\xBBW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\xC4\x86a\x1E\xC5V[a\x0F\xCCa\x1E\xD6V[a\x0F\xD7\x89\x89\x89a\x1E\xDEV[\x83\x15a\x10\x1DW\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\x10MWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x10kW`@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\xA4WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10\xC2W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xCF\x84`@\x01Qa \nV[a\x10\xDC\x83` \x01Qa \nV[a\x10\xE9\x83`@\x01Qa \nV[a\x10\xF6\x83``\x01Qa \nV[_a\x10\xFFa\x0C\xD1V[` \x86\x01Q`\nT\x91\x92P_\x91a\x11\x1F\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0E!V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x11cWa\x11E\x86` \x01Qa\n\x06V[\x15a\x11cW`@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\x12\x0FW`\x02a\x11\x86\x83\x83a1\xB0V[`\x01`\x01`@\x1B\x03\x16\x10a\x11\xADW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB8\x82`\x01a1PV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11\xF1WP`\x06Ta\x11\xEF\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\xA4V[\x15[\x15a\x12\x0FW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12\x1B\x86\x86\x86\x86a KV[\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\x12xWPa\x12x\x86` \x01Qa\t\xA4V[\x15a\x12\xE2W\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\xC6\x82`\x01a1PV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12\xF4a\x12\xEDa\n\x9BV[B\x88a\"uV[\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\x13D\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x13\\a\x16KV[_Q` a7\x12_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13\x92WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13\xB0W`@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\xF8W`@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\x14A\x83\x85a\x0E!V[`\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_\x90a\x14\xBAa\n\x9BV[\x84\x11\x80a\x14\xC5WP\x80\x15[\x80a\x15\x0FWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14\xF3Wa\x14\xF3a1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x15-W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x15;`\x01\x85a1\xE6V[\x90P[\x81a\x15\xD7W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15\xD7W\x86`\t\x82\x81T\x81\x10a\x15pWa\x15pa1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15\xC5W`\x01\x91P`\t\x81\x81T\x81\x10a\x15\xA5Wa\x15\xA5a1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15\xD7V[\x80a\x15\xCF\x81a2:V[\x91PPa\x15>V[\x81a\x15\xF5W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x16\0\x84\x89a1\xE6V[\x11\x97\x96PPPPPPPV[a\x16\x14a\x16KV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x16BW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0C\x05\x81a$^V[3a\x16}\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\x0C\xAEW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x169V[a\x16\xAEa&\xDDV[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\x1D\\WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1DP_Q` a6\xF2_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\xAEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x82a\x16KV[`@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\xABV[\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\x1E\x15WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\x12\x91\x81\x01\x90a1\xCFV[`\x01[a\x1E=W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x169V[_Q` a6\xF2_9_Q\x90_R\x81\x14a\x1EmW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x169V[a\x1Ew\x83\x83a$\xCEV[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\x0C\xAEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E\xCDa%#V[a\x0C\x05\x81a%YV[a\x0C\xAEa%#V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1F\x02WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1F\x0FWP` \x82\x01Q\x15[\x80a\x1F\x1CWP`@\x82\x01Q\x15[\x80a\x1F)WP``\x82\x01Q\x15[\x80a\x1F3WP\x81Q\x15[\x80a\x1FEWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1FYWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1FwW`@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\x0C#W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a Ta\x08\xFFV[\x90Pa ^a)BV[`\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 \xB6WPa \xB6\x87` \x01Qa\t\xA4V[\x15a \xFFW`@\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!:V[`@\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!\x8B\x91\x84\x90\x89\x90` \x01a2fV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!\xCF\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2\x88V[`\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\"\x0F\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4}V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\"*W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"N\x91\x90a6\x9DV[a\"kW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"\xEAWP`\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\"\xB5Wa\"\xB5a1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"\xDF\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1\xB0V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#}W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\x17Wa#\x17a1\xF9V[_\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#W\x83a6\xBCV[\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$\xD7\x82a%aV[`@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%\x1BWa\x1Ew\x82\x82a%\xC4V[a\x0C#a&6V[_Q` a7\x12_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C\xAEW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x16\x14a%#V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\x96W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x169V[_Q` a6\xF2_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%\xE0\x91\x90a6\xE6V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&\x18W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&\x1DV[``\x91P[P\x91P\x91Pa&-\x85\x83\x83a&UV[\x95\x94PPPPPV[4\x15a\x0C\xAEW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&jWa&e\x82a&\xB4V[a&\xADV[\x81Q\x15\x80\x15a&\x81WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\xAAW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x169V[P\x80[\x93\x92PPPV[\x80Q\x15a&\xC4W\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'\x10`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'P`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'p`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x90`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xB0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xD0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xF0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x10`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(P`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(p`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x90`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xB0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xD0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xF0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x10`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)0`@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\n\x01W__\xFD[_` \x82\x84\x03\x12\x15a)\x86W__\xFD[a&\xAD\x82a)`V[_` \x82\x84\x03\x12\x15a)\x9FW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)\xD8`@\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\n\x01W__\xFD[_` \x82\x84\x03\x12\x15a+\xCDW__\xFD[a&\xAD\x82a+\xA7V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\rWa,\ra+\xD6V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,;Wa,;a+\xD6V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a,SW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,uWa,ua+\xD6V[`@R\x90P\x80a,\x84\x83a+\xA7V[\x81Ra,\x92` \x84\x01a+\xA7V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,\xB8W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xDAWa,\xDAa+\xD6V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\x05W__\xFD[a-\ra+\xEAV[\x90Pa-\x19\x83\x83a,\xA8V[\x81Ra-(\x83`@\x84\x01a,\xA8V[` \x82\x01Ra-:\x83`\x80\x84\x01a,\xA8V[`@\x82\x01Ra-L\x83`\xC0\x84\x01a,\xA8V[``\x82\x01Ra-_\x83a\x01\0\x84\x01a,\xA8V[`\x80\x82\x01Ra-r\x83a\x01@\x84\x01a,\xA8V[`\xA0\x82\x01Ra-\x85\x83a\x01\x80\x84\x01a,\xA8V[`\xC0\x82\x01Ra-\x98\x83a\x01\xC0\x84\x01a,\xA8V[`\xE0\x82\x01Ra-\xAB\x83a\x02\0\x84\x01a,\xA8V[a\x01\0\x82\x01Ra-\xBF\x83a\x02@\x84\x01a,\xA8V[a\x01 \x82\x01Ra-\xD3\x83a\x02\x80\x84\x01a,\xA8V[a\x01@\x82\x01Ra-\xE7\x83a\x02\xC0\x84\x01a,\xA8V[a\x01`\x82\x01Ra-\xFB\x83a\x03\0\x84\x01a,\xA8V[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.\x91W__\xFD[a.\x9B\x84\x84a,CV[\x91Pa.\xAA\x84``\x85\x01a,\xF4V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n\x01W__\xFD[_` \x82\x84\x03\x12\x15a.\xD6W__\xFD[a&\xAD\x82a.\xB3V[__`@\x83\x85\x03\x12\x15a.\xF0W__\xFD[a.\xF9\x83a)`V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x13W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/#W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/<Wa/<a+\xD6V[a/O`\x1F\x82\x01`\x1F\x19\x16` \x01a,\x13V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a/cW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/\x92W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB4Wa/\xB4a+\xD6V[`@\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/\xF5W__\xFD[a/\xFF\x85\x85a,CV[\x92Pa0\x0E\x85``\x86\x01a/\x82V[\x91Pa0\x1D\x85`\xE0\x86\x01a,\xF4V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a07W__\xFD[a0@\x83a+\xA7V[\x91Pa.\xAA` \x84\x01a+\xA7V[____a\x01 \x85\x87\x03\x12\x15a0bW__\xFD[a0l\x86\x86a,CV[\x93Pa0{\x86``\x87\x01a/\x82V[\x92Pa0\x89`\xE0\x86\x01a.\xB3V[\x91Pa0\x98a\x01\0\x86\x01a)`V[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0\xB7W__\xFD[a0\xC1\x86\x86a,CV[\x93Pa0\xD0\x86``\x87\x01a/\x82V[\x92P`\xE0\x85\x015\x91Pa0\x98\x86a\x01\0\x87\x01a,\xF4V[` \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\x15a1-W__\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\x95Wa\n\x95a1<V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x9BWa1\x9Ba1oV[\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\x95Wa\n\x95a1<V[_` \x82\x84\x03\x12\x15a1\xDFW__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\n\x95Wa\n\x95a1<V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a2%Wa2%a1oV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a2HWa2Ha1<V[P_\x19\x01\x90V[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2za2t\x83\x87a2OV[\x85a2OV[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2\x96Wa2\x96a1oV[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2\xBDW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2\x9EV[PPPPV[a2\xD8\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\x01Qa4\xAF`@\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\x87a\x05\0\x83\x01\x85a2\x9BV[a6\x95a\x05\xA0\x83\x01\x84a2\xC3V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a6\xADW__\xFD[\x81Q\x80\x15\x15\x81\x14a&\xADW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6\xDDWa6\xDDa1<V[`\x01\x01\x92\x91PPV[_a&\xAD\x82\x84a2OV\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    ///0x608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d14610763578063e030330114610792578063f0682054146107b1578063f2fde38b146107d0578063f9e50d19146107ef575f5ffd5b80639fdb54a71461065b578063aabd5db3146106b0578063ad3cb1cc146106cf578063b33bc4911461070c578063c23b9e9e1461072b575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105ad57806390c14390146105e957806396c1ca6114610608578063998328e8146106275780639baa3cc91461063c575f5ffd5b8063715018a614610510578063757c37ad14610524578063766718081461053e578063826e41fc146105525780638584d23f14610571575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d319414610495578063433dba9f146104b65780634f1ef286146104d557806352d1902d146104e857806369cc6a04146104fc575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b11461045b5780633ed55b7b1461046f575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b610246366004612976565b610803565b005b348015610258575f5ffd5b5061026c61026736600461298f565b6108b6565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108ff565b6040516102a191906129a6565b348015610343575f5ffd5b5061024b610352366004612bbd565b610914565b348015610362575f5ffd5b5061024b610371366004612e7f565b61098b565b348015610381575f5ffd5b50610395610390366004612bbd565b6109a4565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612bbd565b610a06565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b5061044d610a9b565b6040519081526020016102a1565b348015610466575f5ffd5b5061024b610afd565b34801561047a575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b3480156104a0575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104c1575f5ffd5b5061024b6104d0366004612ec6565b610bf4565b61024b6104e3366004612edf565b610c08565b3480156104f3575f5ffd5b5061044d610c27565b348015610507575f5ffd5b5061024b610c42565b34801561051b575f5ffd5b5061024b610cb0565b34801561052f575f5ffd5b5061024b610371366004612fe2565b348015610549575f5ffd5b506103cb610cd1565b34801561055d575f5ffd5b506008546001600160a01b03161515610395565b34801561057c575f5ffd5b5061059061058b36600461298f565b610cf6565b604080519283526001600160401b039091166020830152016102a1565b3480156105b8575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105f4575f5ffd5b506103cb610603366004613026565b610e21565b348015610613575f5ffd5b5061024b610622366004612ec6565b610e90565b348015610632575f5ffd5b5061044d600f5481565b348015610647575f5ffd5b5061024b61065636600461304e565b610f19565b348015610666575f5ffd5b5060065460075461068a916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106bb575f5ffd5b5061024b6106ca3660046130a3565b611028565b3480156106da575f5ffd5b506106ff604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a191906130e7565b348015610717575f5ffd5b5061024b610726366004613026565b611354565b348015610736575f5ffd5b5060085461074e90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b34801561076e575f5ffd5b5060045460055461068a916001600160401b0380821692600160401b909204169083565b34801561079d575f5ffd5b506103956107ac36600461311c565b6114ad565b3480156107bc575f5ffd5b50600a546103cb906001600160401b031681565b3480156107db575f5ffd5b5061024b6107ea366004612976565b61160c565b3480156107fa575f5ffd5b5060095461044d565b61080b61164b565b6001600160a01b0381166108325760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036108615760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108c5575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109076126dd565b61090f6116a6565b905090565b61091c61164b565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561096294919091048116928116911617610e21565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109c45750600a546001600160401b0316155b156109d057505f919050565b600a546001600160401b03166109e7836005613150565b6109f19190613183565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a265750600a546001600160401b0316155b15610a3257505f919050565b600a54610a48906001600160401b031683613183565b6001600160401b03161580610a955750600a54610a70906005906001600160401b03166131b0565b600a546001600160401b0391821691610a8a911684613183565b6001600160401b0316115b92915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090f91906131cf565b610b0561164b565b5f5160206137125f395f51905f52805460039190600160401b900460ff1680610b3b575080546001600160401b03808416911610155b15610b595760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b939291810482169116610e21565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610bfc61164b565b610c0581610e90565b50565b610c10611cd6565b610c1982611d7a565b610c238282611dbb565b5050565b5f610c30611e7c565b505f5160206136f25f395f51905f5290565b610c4a61164b565b6008546001600160a01b031615610c9557600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610cb861164b565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f9161090f916001600160401b03600160401b90920482169116610e21565b600980545f91829190610d0a6001836131e6565b81548110610d1a57610d1a6131f9565b5f918252602090912060029091020154600160801b90046001600160401b03168410610d5957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610e1a578460098281548110610d8957610d896131f9565b5f918252602090912060029091020154600160801b90046001600160401b03161115610e125760098181548110610dc257610dc26131f9565b905f5260205f2090600202016001015460098281548110610de557610de56131f9565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610d6d565b5050915091565b5f816001600160401b03165f03610e3957505f610a95565b826001600160401b03165f03610e5157506001610a95565b610e5b8284613183565b6001600160401b03165f03610e7b57610e74828461320d565b9050610a95565b610e85828461320d565b610e74906001613150565b610e9861164b565b610e108163ffffffff161080610eb757506301e133808163ffffffff16115b80610ed5575060085463ffffffff600160a01b909104811690821611155b15610ef3576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f5160206137125f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610f4a5750825b90505f826001600160401b03166001148015610f655750303b155b905081158015610f73575080155b15610f915760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fbb57845460ff60401b1916600160401b1785555b610fc486611ec5565b610fcc611ed6565b610fd7898989611ede565b831561101d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561104d57506008546001600160a01b03163314155b1561106b576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806110a4575060065460208501516001600160401b03600160401b9092048216911611155b156110c25760405163051c46ef60e01b815260040160405180910390fd5b6110cf846040015161200a565b6110dc836020015161200a565b6110e9836040015161200a565b6110f6836060015161200a565b5f6110ff610cd1565b6020860151600a549192505f9161111f91906001600160401b0316610e21565b6010549091506001600160401b0390811690821610611163576111458660200151610a06565b156111635760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561120f57600261118683836131b0565b6001600160401b0316106111ad5760405163080ae8d960e01b815260040160405180910390fd5b6111b8826001613150565b6001600160401b0316816001600160401b03161480156111f157506006546111ef90600160401b90046001600160401b03166109a4565b155b1561120f5760405163080ae8d960e01b815260040160405180910390fd5b61121b8686868661204b565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f859055601054811690821610801590611278575061127886602001516109a4565b156112e2578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6112c6826001613150565b6040516001600160401b03909116815260200160405180910390a15b6112f46112ed610a9b565b4288612275565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6886040015160405161134491815260200190565b60405180910390a3505050505050565b61135c61164b565b5f5160206137125f395f51905f52805460029190600160401b900460ff1680611392575080546001600160401b03808416911610155b156113b05760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116113f8576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556114418385610e21565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f906114ba610a9b565b8411806114c5575080155b8061150f5750600854600980549091600160c01b90046001600160401b03169081106114f3576114f36131f9565b5f9182526020909120600290910201546001600160401b031684105b1561152d5760405163b0b4387760e01b815260040160405180910390fd5b5f808061153b6001856131e6565b90505b816115d757600854600160c01b90046001600160401b031681106115d7578660098281548110611570576115706131f9565b5f9182526020909120600290910201546001600160401b0316116115c55760019150600981815481106115a5576115a56131f9565b5f9182526020909120600290910201546001600160401b031692506115d7565b806115cf8161323a565b91505061153e565b816115f55760405163b0b4387760e01b815260040160405180910390fd5b8561160084896131e6565b11979650505050505050565b61161461164b565b6001600160a01b03811661164257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610c058161245e565b3361167d7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610cae5760405163118cdaa760e01b8152336004820152602401611639565b6116ae6126dd565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611d5c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611d505f5160206136f25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610cae5760405163703e46dd60e11b815260040160405180910390fd5b611d8261164b565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108ab565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e15575060408051601f3d908101601f19168201909252611e12918101906131cf565b60015b611e3d57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611639565b5f5160206136f25f395f51905f528114611e6d57604051632a87526960e21b815260048101829052602401611639565b611e7783836124ce565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cae5760405163703e46dd60e11b815260040160405180910390fd5b611ecd612523565b610c0581612559565b610cae612523565b82516001600160401b0316151580611f02575060208301516001600160401b031615155b80611f0f57506020820151155b80611f1c57506040820151155b80611f2957506060820151155b80611f3357508151155b80611f455750610e108163ffffffff16105b80611f5957506301e133808163ffffffff16115b15611f77576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610c235760405163016c173360e21b815260040160405180910390fd5b5f6120546108ff565b905061205e612942565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120b657506120b687602001516109a4565b156120ff576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a001604051602081830303815290604052905061213a565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261218b9184908990602001613266565b60408051601f19818403018152919052805160209091012090506121cf7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613288565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061220f90879087908a9060040161347d565b602060405180830381865af415801561222a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061224e919061369d565b61226b576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906122ea575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106122b5576122b56131f9565b5f9182526020909120600290910201546122df90600160401b90046001600160401b0316846131b0565b6001600160401b0316115b1561237d57600854600980549091600160c01b90046001600160401b0316908110612317576123176131f9565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612357836136bc565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6124d782612561565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561251b57611e7782826125c4565b610c23612636565b5f5160206137125f395f51905f5254600160401b900460ff16610cae57604051631afcd79f60e31b815260040160405180910390fd5b611614612523565b806001600160a01b03163b5f0361259657604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611639565b5f5160206136f25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516125e091906136e6565b5f60405180830381855af49150503d805f8114612618576040519150601f19603f3d011682016040523d82523d5f602084013e61261d565b606091505b509150915061262d858383612655565b95945050505050565b3415610cae5760405163b398979f60e01b815260040160405180910390fd5b60608261266a57612665826126b4565b6126ad565b815115801561268157506001600160a01b0384163b155b156126aa57604051639996b31560e01b81526001600160a01b0385166004820152602401611639565b50805b9392505050565b8051156126c45780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161271060405180604001604052805f81526020015f81525090565b815260200161273060405180604001604052805f81526020015f81525090565b815260200161275060405180604001604052805f81526020015f81525090565b815260200161277060405180604001604052805f81526020015f81525090565b815260200161279060405180604001604052805f81526020015f81525090565b81526020016127b060405180604001604052805f81526020015f81525090565b81526020016127d060405180604001604052805f81526020015f81525090565b81526020016127f060405180604001604052805f81526020015f81525090565b815260200161281060405180604001604052805f81526020015f81525090565b815260200161283060405180604001604052805f81526020015f81525090565b815260200161285060405180604001604052805f81526020015f81525090565b815260200161287060405180604001604052805f81526020015f81525090565b815260200161289060405180604001604052805f81526020015f81525090565b81526020016128b060405180604001604052805f81526020015f81525090565b81526020016128d060405180604001604052805f81526020015f81525090565b81526020016128f060405180604001604052805f81526020015f81525090565b815260200161291060405180604001604052805f81526020015f81525090565b815260200161293060405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b0381168114610a01575f5ffd5b5f60208284031215612986575f5ffd5b6126ad82612960565b5f6020828403121561299f575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516129d8604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610a01575f5ffd5b5f60208284031215612bcd575f5ffd5b6126ad82612ba7565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612c0d57612c0d612bd6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612c3b57612c3b612bd6565b604052919050565b5f60608284031215612c53575f5ffd5b604051606081016001600160401b0381118282101715612c7557612c75612bd6565b604052905080612c8483612ba7565b8152612c9260208401612ba7565b6020820152604092830135920191909152919050565b5f60408284031215612cb8575f5ffd5b604080519081016001600160401b0381118282101715612cda57612cda612bd6565b604052823581526020928301359281019290925250919050565b5f6104808284031215612d05575f5ffd5b612d0d612bea565b9050612d198383612ca8565b8152612d288360408401612ca8565b6020820152612d3a8360808401612ca8565b6040820152612d4c8360c08401612ca8565b6060820152612d5f836101008401612ca8565b6080820152612d72836101408401612ca8565b60a0820152612d85836101808401612ca8565b60c0820152612d98836101c08401612ca8565b60e0820152612dab836102008401612ca8565b610100820152612dbf836102408401612ca8565b610120820152612dd3836102808401612ca8565b610140820152612de7836102c08401612ca8565b610160820152612dfb836103008401612ca8565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e91575f5ffd5b612e9b8484612c43565b9150612eaa8460608501612cf4565b90509250929050565b803563ffffffff81168114610a01575f5ffd5b5f60208284031215612ed6575f5ffd5b6126ad82612eb3565b5f5f60408385031215612ef0575f5ffd5b612ef983612960565b915060208301356001600160401b03811115612f13575f5ffd5b8301601f81018513612f23575f5ffd5b80356001600160401b03811115612f3c57612f3c612bd6565b612f4f601f8201601f1916602001612c13565b818152866020838501011115612f63575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f92575f5ffd5b604051608081016001600160401b0381118282101715612fb457612fb4612bd6565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612ff5575f5ffd5b612fff8585612c43565b925061300e8560608601612f82565b915061301d8560e08601612cf4565b90509250925092565b5f5f60408385031215613037575f5ffd5b61304083612ba7565b9150612eaa60208401612ba7565b5f5f5f5f6101208587031215613062575f5ffd5b61306c8686612c43565b935061307b8660608701612f82565b925061308960e08601612eb3565b91506130986101008601612960565b905092959194509250565b5f5f5f5f61058085870312156130b7575f5ffd5b6130c18686612c43565b93506130d08660608701612f82565b925060e08501359150613098866101008701612cf4565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f6040838503121561312d575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a9557610a9561313c565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061319b5761319b61316f565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a9557610a9561313c565b5f602082840312156131df575f5ffd5b5051919050565b81810381811115610a9557610a9561313c565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806132255761322561316f565b806001600160401b0384160491505092915050565b5f816132485761324861313c565b505f190190565b5f81518060208401855e5f93019283525090919050565b5f61327a613274838761324f565b8561324f565b928352505060200192915050565b5f826132965761329661316f565b500690565b805f5b60058110156132bd57815184526020938401939091019060010161329e565b50505050565b6132d882825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a2082019050845182526020850151602083015260408501516134af604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261368761050083018561329b565b6136956105a08301846132c3565b949350505050565b5f602082840312156136ad575f5ffd5b815180151581146126ad575f5ffd5b5f6001600160401b0382166001600160401b0381036136dd576136dd61313c565b60010192915050565b5f6126ad828461324f56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
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\x07cW\x80c\xE003\x01\x14a\x07\x92W\x80c\xF0h T\x14a\x07\xB1W\x80c\xF2\xFD\xE3\x8B\x14a\x07\xD0W\x80c\xF9\xE5\r\x19\x14a\x07\xEFW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06[W\x80c\xAA\xBD]\xB3\x14a\x06\xB0W\x80c\xAD<\xB1\xCC\x14a\x06\xCFW\x80c\xB3;\xC4\x91\x14a\x07\x0CW\x80c\xC2;\x9E\x9E\x14a\x07+W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xADW\x80c\x90\xC1C\x90\x14a\x05\xE9W\x80c\x96\xC1\xCAa\x14a\x06\x08W\x80c\x99\x83(\xE8\x14a\x06'W\x80c\x9B\xAA<\xC9\x14a\x06<W__\xFD[\x80cqP\x18\xA6\x14a\x05\x10W\x80cu|7\xAD\x14a\x05$W\x80cvg\x18\x08\x14a\x05>W\x80c\x82nA\xFC\x14a\x05RW\x80c\x85\x84\xD2?\x14a\x05qW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x95W\x80cC=\xBA\x9F\x14a\x04\xB6W\x80cO\x1E\xF2\x86\x14a\x04\xD5W\x80cR\xD1\x90-\x14a\x04\xE8W\x80ci\xCCj\x04\x14a\x04\xFCW__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04[W\x80c>\xD5[{\x14a\x04oW__\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)vV[a\x08\x03V[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)\x8FV[a\x08\xB6V[`@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\xFFV[`@Qa\x02\xA1\x91\x90a)\xA6V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+\xBDV[a\t\x14V[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\x7FV[a\t\x8BV[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+\xBDV[a\t\xA4V[`@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+\xBDV[a\n\x06V[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[Pa\x04Ma\n\x9BV[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04fW__\xFD[Pa\x02Ka\n\xFDV[4\x80\x15a\x04zW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\xA0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xC1W__\xFD[Pa\x02Ka\x04\xD06`\x04a.\xC6V[a\x0B\xF4V[a\x02Ka\x04\xE36`\x04a.\xDFV[a\x0C\x08V[4\x80\x15a\x04\xF3W__\xFD[Pa\x04Ma\x0C'V[4\x80\x15a\x05\x07W__\xFD[Pa\x02Ka\x0CBV[4\x80\x15a\x05\x1BW__\xFD[Pa\x02Ka\x0C\xB0V[4\x80\x15a\x05/W__\xFD[Pa\x02Ka\x03q6`\x04a/\xE2V[4\x80\x15a\x05IW__\xFD[Pa\x03\xCBa\x0C\xD1V[4\x80\x15a\x05]W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05|W__\xFD[Pa\x05\x90a\x05\x8B6`\x04a)\x8FV[a\x0C\xF6V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB8W__\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\xF4W__\xFD[Pa\x03\xCBa\x06\x036`\x04a0&V[a\x0E!V[4\x80\x15a\x06\x13W__\xFD[Pa\x02Ka\x06\"6`\x04a.\xC6V[a\x0E\x90V[4\x80\x15a\x062W__\xFD[Pa\x04M`\x0FT\x81V[4\x80\x15a\x06GW__\xFD[Pa\x02Ka\x06V6`\x04a0NV[a\x0F\x19V[4\x80\x15a\x06fW__\xFD[P`\x06T`\x07Ta\x06\x8A\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\xBBW__\xFD[Pa\x02Ka\x06\xCA6`\x04a0\xA3V[a\x10(V[4\x80\x15a\x06\xDAW__\xFD[Pa\x06\xFF`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0\xE7V[4\x80\x15a\x07\x17W__\xFD[Pa\x02Ka\x07&6`\x04a0&V[a\x13TV[4\x80\x15a\x076W__\xFD[P`\x08Ta\x07N\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\x07nW__\xFD[P`\x04T`\x05Ta\x06\x8A\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x9DW__\xFD[Pa\x03\x95a\x07\xAC6`\x04a1\x1CV[a\x14\xADV[4\x80\x15a\x07\xBCW__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xDBW__\xFD[Pa\x02Ka\x07\xEA6`\x04a)vV[a\x16\x0CV[4\x80\x15a\x07\xFAW__\xFD[P`\tTa\x04MV[a\x08\x0Ba\x16KV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x082W`@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\x08aW`@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\xC5W_\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\x07a&\xDDV[a\t\x0Fa\x16\xA6V[\x90P\x90V[a\t\x1Ca\x16KV[`\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\tb\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0E!V[`\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\xC4WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xD0WP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE7\x83`\x05a1PV[a\t\xF1\x91\x90a1\x83V[`\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\n2WP_\x91\x90PV[`\nTa\nH\x90`\x01`\x01`@\x1B\x03\x16\x83a1\x83V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x95WP`\nTa\np\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1\xB0V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x8A\x91\x16\x84a1\x83V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xD9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x0F\x91\x90a1\xCFV[a\x0B\x05a\x16KV[_Q` a7\x12_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x0B;WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x0BYW`@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\x93\x92\x91\x81\x04\x82\x16\x91\x16a\x0E!V[`\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\xFCa\x16KV[a\x0C\x05\x81a\x0E\x90V[PV[a\x0C\x10a\x1C\xD6V[a\x0C\x19\x82a\x1DzV[a\x0C#\x82\x82a\x1D\xBBV[PPV[_a\x0C0a\x1E|V[P_Q` a6\xF2_9_Q\x90_R\x90V[a\x0CJa\x16KV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C\x95W`\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\x0C\xB8a\x16KV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\t\x0F\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0E!V[`\t\x80T_\x91\x82\x91\x90a\r\n`\x01\x83a1\xE6V[\x81T\x81\x10a\r\x1AWa\r\x1Aa1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\rYW`@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\x0E\x1AW\x84`\t\x82\x81T\x81\x10a\r\x89Wa\r\x89a1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0E\x12W`\t\x81\x81T\x81\x10a\r\xC2Wa\r\xC2a1\xF9V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\r\xE5Wa\r\xE5a1\xF9V[\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\rmV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0E9WP_a\n\x95V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0EQWP`\x01a\n\x95V[a\x0E[\x82\x84a1\x83V[`\x01`\x01`@\x1B\x03\x16_\x03a\x0E{Wa\x0Et\x82\x84a2\rV[\x90Pa\n\x95V[a\x0E\x85\x82\x84a2\rV[a\x0Et\x90`\x01a1PV[a\x0E\x98a\x16KV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0E\xB7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0E\xD5WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0E\xF3W`@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` a7\x12_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0FJWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0FeWP0;\x15[\x90P\x81\x15\x80\x15a\x0FsWP\x80\x15[\x15a\x0F\x91W`@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\x0F\xBBW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\xC4\x86a\x1E\xC5V[a\x0F\xCCa\x1E\xD6V[a\x0F\xD7\x89\x89\x89a\x1E\xDEV[\x83\x15a\x10\x1DW\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\x10MWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x10kW`@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\xA4WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10\xC2W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xCF\x84`@\x01Qa \nV[a\x10\xDC\x83` \x01Qa \nV[a\x10\xE9\x83`@\x01Qa \nV[a\x10\xF6\x83``\x01Qa \nV[_a\x10\xFFa\x0C\xD1V[` \x86\x01Q`\nT\x91\x92P_\x91a\x11\x1F\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0E!V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x11cWa\x11E\x86` \x01Qa\n\x06V[\x15a\x11cW`@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\x12\x0FW`\x02a\x11\x86\x83\x83a1\xB0V[`\x01`\x01`@\x1B\x03\x16\x10a\x11\xADW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB8\x82`\x01a1PV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11\xF1WP`\x06Ta\x11\xEF\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\xA4V[\x15[\x15a\x12\x0FW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12\x1B\x86\x86\x86\x86a KV[\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\x12xWPa\x12x\x86` \x01Qa\t\xA4V[\x15a\x12\xE2W\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\xC6\x82`\x01a1PV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12\xF4a\x12\xEDa\n\x9BV[B\x88a\"uV[\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\x13D\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x13\\a\x16KV[_Q` a7\x12_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13\x92WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13\xB0W`@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\xF8W`@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\x14A\x83\x85a\x0E!V[`\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_\x90a\x14\xBAa\n\x9BV[\x84\x11\x80a\x14\xC5WP\x80\x15[\x80a\x15\x0FWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14\xF3Wa\x14\xF3a1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x15-W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x15;`\x01\x85a1\xE6V[\x90P[\x81a\x15\xD7W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15\xD7W\x86`\t\x82\x81T\x81\x10a\x15pWa\x15pa1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15\xC5W`\x01\x91P`\t\x81\x81T\x81\x10a\x15\xA5Wa\x15\xA5a1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15\xD7V[\x80a\x15\xCF\x81a2:V[\x91PPa\x15>V[\x81a\x15\xF5W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x16\0\x84\x89a1\xE6V[\x11\x97\x96PPPPPPPV[a\x16\x14a\x16KV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x16BW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0C\x05\x81a$^V[3a\x16}\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\x0C\xAEW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x169V[a\x16\xAEa&\xDDV[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\x1D\\WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1DP_Q` a6\xF2_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\xAEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x82a\x16KV[`@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\xABV[\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\x1E\x15WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\x12\x91\x81\x01\x90a1\xCFV[`\x01[a\x1E=W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x169V[_Q` a6\xF2_9_Q\x90_R\x81\x14a\x1EmW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x169V[a\x1Ew\x83\x83a$\xCEV[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\x0C\xAEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E\xCDa%#V[a\x0C\x05\x81a%YV[a\x0C\xAEa%#V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1F\x02WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1F\x0FWP` \x82\x01Q\x15[\x80a\x1F\x1CWP`@\x82\x01Q\x15[\x80a\x1F)WP``\x82\x01Q\x15[\x80a\x1F3WP\x81Q\x15[\x80a\x1FEWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1FYWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1FwW`@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\x0C#W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a Ta\x08\xFFV[\x90Pa ^a)BV[`\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 \xB6WPa \xB6\x87` \x01Qa\t\xA4V[\x15a \xFFW`@\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!:V[`@\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!\x8B\x91\x84\x90\x89\x90` \x01a2fV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!\xCF\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2\x88V[`\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\"\x0F\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4}V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\"*W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"N\x91\x90a6\x9DV[a\"kW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"\xEAWP`\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\"\xB5Wa\"\xB5a1\xF9V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"\xDF\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1\xB0V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#}W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\x17Wa#\x17a1\xF9V[_\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#W\x83a6\xBCV[\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$\xD7\x82a%aV[`@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%\x1BWa\x1Ew\x82\x82a%\xC4V[a\x0C#a&6V[_Q` a7\x12_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C\xAEW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x16\x14a%#V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\x96W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x169V[_Q` a6\xF2_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%\xE0\x91\x90a6\xE6V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&\x18W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&\x1DV[``\x91P[P\x91P\x91Pa&-\x85\x83\x83a&UV[\x95\x94PPPPPV[4\x15a\x0C\xAEW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&jWa&e\x82a&\xB4V[a&\xADV[\x81Q\x15\x80\x15a&\x81WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\xAAW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x169V[P\x80[\x93\x92PPPV[\x80Q\x15a&\xC4W\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'\x10`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'P`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'p`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x90`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xB0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xD0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xF0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x10`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(P`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(p`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x90`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xB0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xD0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xF0`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x10`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)0`@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\n\x01W__\xFD[_` \x82\x84\x03\x12\x15a)\x86W__\xFD[a&\xAD\x82a)`V[_` \x82\x84\x03\x12\x15a)\x9FW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)\xD8`@\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\n\x01W__\xFD[_` \x82\x84\x03\x12\x15a+\xCDW__\xFD[a&\xAD\x82a+\xA7V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\rWa,\ra+\xD6V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,;Wa,;a+\xD6V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a,SW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,uWa,ua+\xD6V[`@R\x90P\x80a,\x84\x83a+\xA7V[\x81Ra,\x92` \x84\x01a+\xA7V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,\xB8W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xDAWa,\xDAa+\xD6V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\x05W__\xFD[a-\ra+\xEAV[\x90Pa-\x19\x83\x83a,\xA8V[\x81Ra-(\x83`@\x84\x01a,\xA8V[` \x82\x01Ra-:\x83`\x80\x84\x01a,\xA8V[`@\x82\x01Ra-L\x83`\xC0\x84\x01a,\xA8V[``\x82\x01Ra-_\x83a\x01\0\x84\x01a,\xA8V[`\x80\x82\x01Ra-r\x83a\x01@\x84\x01a,\xA8V[`\xA0\x82\x01Ra-\x85\x83a\x01\x80\x84\x01a,\xA8V[`\xC0\x82\x01Ra-\x98\x83a\x01\xC0\x84\x01a,\xA8V[`\xE0\x82\x01Ra-\xAB\x83a\x02\0\x84\x01a,\xA8V[a\x01\0\x82\x01Ra-\xBF\x83a\x02@\x84\x01a,\xA8V[a\x01 \x82\x01Ra-\xD3\x83a\x02\x80\x84\x01a,\xA8V[a\x01@\x82\x01Ra-\xE7\x83a\x02\xC0\x84\x01a,\xA8V[a\x01`\x82\x01Ra-\xFB\x83a\x03\0\x84\x01a,\xA8V[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.\x91W__\xFD[a.\x9B\x84\x84a,CV[\x91Pa.\xAA\x84``\x85\x01a,\xF4V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n\x01W__\xFD[_` \x82\x84\x03\x12\x15a.\xD6W__\xFD[a&\xAD\x82a.\xB3V[__`@\x83\x85\x03\x12\x15a.\xF0W__\xFD[a.\xF9\x83a)`V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x13W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/#W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/<Wa/<a+\xD6V[a/O`\x1F\x82\x01`\x1F\x19\x16` \x01a,\x13V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a/cW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/\x92W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\xB4Wa/\xB4a+\xD6V[`@\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/\xF5W__\xFD[a/\xFF\x85\x85a,CV[\x92Pa0\x0E\x85``\x86\x01a/\x82V[\x91Pa0\x1D\x85`\xE0\x86\x01a,\xF4V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a07W__\xFD[a0@\x83a+\xA7V[\x91Pa.\xAA` \x84\x01a+\xA7V[____a\x01 \x85\x87\x03\x12\x15a0bW__\xFD[a0l\x86\x86a,CV[\x93Pa0{\x86``\x87\x01a/\x82V[\x92Pa0\x89`\xE0\x86\x01a.\xB3V[\x91Pa0\x98a\x01\0\x86\x01a)`V[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0\xB7W__\xFD[a0\xC1\x86\x86a,CV[\x93Pa0\xD0\x86``\x87\x01a/\x82V[\x92P`\xE0\x85\x015\x91Pa0\x98\x86a\x01\0\x87\x01a,\xF4V[` \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\x15a1-W__\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\x95Wa\n\x95a1<V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x9BWa1\x9Ba1oV[\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\x95Wa\n\x95a1<V[_` \x82\x84\x03\x12\x15a1\xDFW__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\n\x95Wa\n\x95a1<V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a2%Wa2%a1oV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a2HWa2Ha1<V[P_\x19\x01\x90V[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2za2t\x83\x87a2OV[\x85a2OV[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2\x96Wa2\x96a1oV[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2\xBDW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2\x9EV[PPPPV[a2\xD8\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\x01Qa4\xAF`@\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\x87a\x05\0\x83\x01\x85a2\x9BV[a6\x95a\x05\xA0\x83\x01\x84a2\xC3V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a6\xADW__\xFD[\x81Q\x80\x15\x15\x81\x14a&\xADW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6\xDDWa6\xDDa1<V[`\x01\x01\x92\x91PPV[_a&\xAD\x82\x84a2OV\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 [`LightClientArbitrumV3`](self) function calls.
14198    #[derive(Clone)]
14199    #[derive(serde::Serialize, serde::Deserialize)]
14200    #[derive()]
14201    pub enum LightClientArbitrumV3Calls {
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 LightClientArbitrumV3Calls {
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 LightClientArbitrumV3Calls {
14436        const NAME: &'static str = "LightClientArbitrumV3Calls";
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<LightClientArbitrumV3Calls>] = &[
14572                {
14573                    fn setPermissionedProver(
14574                        data: &[u8],
14575                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14576                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14577                                data,
14578                            )
14579                            .map(LightClientArbitrumV3Calls::setPermissionedProver)
14580                    }
14581                    setPermissionedProver
14582                },
14583                {
14584                    fn stateHistoryCommitments(
14585                        data: &[u8],
14586                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14587                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
14588                                data,
14589                            )
14590                            .map(LightClientArbitrumV3Calls::stateHistoryCommitments)
14591                    }
14592                    stateHistoryCommitments
14593                },
14594                {
14595                    fn votingStakeTableState(
14596                        data: &[u8],
14597                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14598                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14599                                data,
14600                            )
14601                            .map(LightClientArbitrumV3Calls::votingStakeTableState)
14602                    }
14603                    votingStakeTableState
14604                },
14605                {
14606                    fn getVersion(
14607                        data: &[u8],
14608                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14609                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
14610                                data,
14611                            )
14612                            .map(LightClientArbitrumV3Calls::getVersion)
14613                    }
14614                    getVersion
14615                },
14616                {
14617                    fn _getVk(
14618                        data: &[u8],
14619                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14620                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14621                            .map(LightClientArbitrumV3Calls::_getVk)
14622                    }
14623                    _getVk
14624                },
14625                {
14626                    fn updateEpochStartBlock(
14627                        data: &[u8],
14628                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14629                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14630                                data,
14631                            )
14632                            .map(LightClientArbitrumV3Calls::updateEpochStartBlock)
14633                    }
14634                    updateEpochStartBlock
14635                },
14636                {
14637                    fn newFinalizedState_0(
14638                        data: &[u8],
14639                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14640                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
14641                                data,
14642                            )
14643                            .map(LightClientArbitrumV3Calls::newFinalizedState_0)
14644                    }
14645                    newFinalizedState_0
14646                },
14647                {
14648                    fn isEpochRoot(
14649                        data: &[u8],
14650                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14651                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14652                                data,
14653                            )
14654                            .map(LightClientArbitrumV3Calls::isEpochRoot)
14655                    }
14656                    isEpochRoot
14657                },
14658                {
14659                    fn stateHistoryFirstIndex(
14660                        data: &[u8],
14661                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14662                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
14663                                data,
14664                            )
14665                            .map(LightClientArbitrumV3Calls::stateHistoryFirstIndex)
14666                    }
14667                    stateHistoryFirstIndex
14668                },
14669                {
14670                    fn isGtEpochRoot(
14671                        data: &[u8],
14672                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14673                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14674                                data,
14675                            )
14676                            .map(LightClientArbitrumV3Calls::isGtEpochRoot)
14677                    }
14678                    isGtEpochRoot
14679                },
14680                {
14681                    fn permissionedProver(
14682                        data: &[u8],
14683                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14684                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14685                                data,
14686                            )
14687                            .map(LightClientArbitrumV3Calls::permissionedProver)
14688                    }
14689                    permissionedProver
14690                },
14691                {
14692                    fn currentBlockNumber(
14693                        data: &[u8],
14694                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14695                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14696                                data,
14697                            )
14698                            .map(LightClientArbitrumV3Calls::currentBlockNumber)
14699                    }
14700                    currentBlockNumber
14701                },
14702                {
14703                    fn initializeV3(
14704                        data: &[u8],
14705                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14706                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
14707                                data,
14708                            )
14709                            .map(LightClientArbitrumV3Calls::initializeV3)
14710                    }
14711                    initializeV3
14712                },
14713                {
14714                    fn epochStartBlock(
14715                        data: &[u8],
14716                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14717                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14718                                data,
14719                            )
14720                            .map(LightClientArbitrumV3Calls::epochStartBlock)
14721                    }
14722                    epochStartBlock
14723                },
14724                {
14725                    fn genesisStakeTableState(
14726                        data: &[u8],
14727                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14728                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14729                                data,
14730                            )
14731                            .map(LightClientArbitrumV3Calls::genesisStakeTableState)
14732                    }
14733                    genesisStakeTableState
14734                },
14735                {
14736                    fn setStateHistoryRetentionPeriod(
14737                        data: &[u8],
14738                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14739                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14740                                data,
14741                            )
14742                            .map(
14743                                LightClientArbitrumV3Calls::setStateHistoryRetentionPeriod,
14744                            )
14745                    }
14746                    setStateHistoryRetentionPeriod
14747                },
14748                {
14749                    fn upgradeToAndCall(
14750                        data: &[u8],
14751                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14752                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
14753                                data,
14754                            )
14755                            .map(LightClientArbitrumV3Calls::upgradeToAndCall)
14756                    }
14757                    upgradeToAndCall
14758                },
14759                {
14760                    fn proxiableUUID(
14761                        data: &[u8],
14762                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14763                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
14764                                data,
14765                            )
14766                            .map(LightClientArbitrumV3Calls::proxiableUUID)
14767                    }
14768                    proxiableUUID
14769                },
14770                {
14771                    fn disablePermissionedProverMode(
14772                        data: &[u8],
14773                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14774                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14775                                data,
14776                            )
14777                            .map(
14778                                LightClientArbitrumV3Calls::disablePermissionedProverMode,
14779                            )
14780                    }
14781                    disablePermissionedProverMode
14782                },
14783                {
14784                    fn renounceOwnership(
14785                        data: &[u8],
14786                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14787                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14788                                data,
14789                            )
14790                            .map(LightClientArbitrumV3Calls::renounceOwnership)
14791                    }
14792                    renounceOwnership
14793                },
14794                {
14795                    fn newFinalizedState_1(
14796                        data: &[u8],
14797                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14798                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
14799                                data,
14800                            )
14801                            .map(LightClientArbitrumV3Calls::newFinalizedState_1)
14802                    }
14803                    newFinalizedState_1
14804                },
14805                {
14806                    fn currentEpoch(
14807                        data: &[u8],
14808                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14809                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14810                                data,
14811                            )
14812                            .map(LightClientArbitrumV3Calls::currentEpoch)
14813                    }
14814                    currentEpoch
14815                },
14816                {
14817                    fn isPermissionedProverEnabled(
14818                        data: &[u8],
14819                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14820                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
14821                                data,
14822                            )
14823                            .map(LightClientArbitrumV3Calls::isPermissionedProverEnabled)
14824                    }
14825                    isPermissionedProverEnabled
14826                },
14827                {
14828                    fn getHotShotCommitment(
14829                        data: &[u8],
14830                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14831                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
14832                                data,
14833                            )
14834                            .map(LightClientArbitrumV3Calls::getHotShotCommitment)
14835                    }
14836                    getHotShotCommitment
14837                },
14838                {
14839                    fn owner(
14840                        data: &[u8],
14841                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14842                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14843                            .map(LightClientArbitrumV3Calls::owner)
14844                    }
14845                    owner
14846                },
14847                {
14848                    fn epochFromBlockNumber(
14849                        data: &[u8],
14850                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14851                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14852                                data,
14853                            )
14854                            .map(LightClientArbitrumV3Calls::epochFromBlockNumber)
14855                    }
14856                    epochFromBlockNumber
14857                },
14858                {
14859                    fn setstateHistoryRetentionPeriod(
14860                        data: &[u8],
14861                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14862                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14863                                data,
14864                            )
14865                            .map(
14866                                LightClientArbitrumV3Calls::setstateHistoryRetentionPeriod,
14867                            )
14868                    }
14869                    setstateHistoryRetentionPeriod
14870                },
14871                {
14872                    fn authRoot(
14873                        data: &[u8],
14874                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14875                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14876                            .map(LightClientArbitrumV3Calls::authRoot)
14877                    }
14878                    authRoot
14879                },
14880                {
14881                    fn initialize(
14882                        data: &[u8],
14883                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14884                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14885                                data,
14886                            )
14887                            .map(LightClientArbitrumV3Calls::initialize)
14888                    }
14889                    initialize
14890                },
14891                {
14892                    fn finalizedState(
14893                        data: &[u8],
14894                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14895                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14896                                data,
14897                            )
14898                            .map(LightClientArbitrumV3Calls::finalizedState)
14899                    }
14900                    finalizedState
14901                },
14902                {
14903                    fn newFinalizedState_2(
14904                        data: &[u8],
14905                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14906                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14907                                data,
14908                            )
14909                            .map(LightClientArbitrumV3Calls::newFinalizedState_2)
14910                    }
14911                    newFinalizedState_2
14912                },
14913                {
14914                    fn UPGRADE_INTERFACE_VERSION(
14915                        data: &[u8],
14916                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14917                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
14918                                data,
14919                            )
14920                            .map(LightClientArbitrumV3Calls::UPGRADE_INTERFACE_VERSION)
14921                    }
14922                    UPGRADE_INTERFACE_VERSION
14923                },
14924                {
14925                    fn initializeV2(
14926                        data: &[u8],
14927                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14928                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14929                                data,
14930                            )
14931                            .map(LightClientArbitrumV3Calls::initializeV2)
14932                    }
14933                    initializeV2
14934                },
14935                {
14936                    fn stateHistoryRetentionPeriod(
14937                        data: &[u8],
14938                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14939                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14940                                data,
14941                            )
14942                            .map(LightClientArbitrumV3Calls::stateHistoryRetentionPeriod)
14943                    }
14944                    stateHistoryRetentionPeriod
14945                },
14946                {
14947                    fn genesisState(
14948                        data: &[u8],
14949                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14950                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14951                                data,
14952                            )
14953                            .map(LightClientArbitrumV3Calls::genesisState)
14954                    }
14955                    genesisState
14956                },
14957                {
14958                    fn lagOverEscapeHatchThreshold(
14959                        data: &[u8],
14960                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14961                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
14962                                data,
14963                            )
14964                            .map(LightClientArbitrumV3Calls::lagOverEscapeHatchThreshold)
14965                    }
14966                    lagOverEscapeHatchThreshold
14967                },
14968                {
14969                    fn blocksPerEpoch(
14970                        data: &[u8],
14971                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14972                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14973                                data,
14974                            )
14975                            .map(LightClientArbitrumV3Calls::blocksPerEpoch)
14976                    }
14977                    blocksPerEpoch
14978                },
14979                {
14980                    fn transferOwnership(
14981                        data: &[u8],
14982                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14983                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14984                                data,
14985                            )
14986                            .map(LightClientArbitrumV3Calls::transferOwnership)
14987                    }
14988                    transferOwnership
14989                },
14990                {
14991                    fn getStateHistoryCount(
14992                        data: &[u8],
14993                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
14994                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
14995                                data,
14996                            )
14997                            .map(LightClientArbitrumV3Calls::getStateHistoryCount)
14998                    }
14999                    getStateHistoryCount
15000                },
15001            ];
15002            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15003                return Err(
15004                    alloy_sol_types::Error::unknown_selector(
15005                        <Self as alloy_sol_types::SolInterface>::NAME,
15006                        selector,
15007                    ),
15008                );
15009            };
15010            DECODE_SHIMS[idx](data)
15011        }
15012        #[inline]
15013        #[allow(non_snake_case)]
15014        fn abi_decode_raw_validate(
15015            selector: [u8; 4],
15016            data: &[u8],
15017        ) -> alloy_sol_types::Result<Self> {
15018            static DECODE_VALIDATE_SHIMS: &[fn(
15019                &[u8],
15020            ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls>] = &[
15021                {
15022                    fn setPermissionedProver(
15023                        data: &[u8],
15024                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15025                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15026                                data,
15027                            )
15028                            .map(LightClientArbitrumV3Calls::setPermissionedProver)
15029                    }
15030                    setPermissionedProver
15031                },
15032                {
15033                    fn stateHistoryCommitments(
15034                        data: &[u8],
15035                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15036                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15037                                data,
15038                            )
15039                            .map(LightClientArbitrumV3Calls::stateHistoryCommitments)
15040                    }
15041                    stateHistoryCommitments
15042                },
15043                {
15044                    fn votingStakeTableState(
15045                        data: &[u8],
15046                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15047                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15048                                data,
15049                            )
15050                            .map(LightClientArbitrumV3Calls::votingStakeTableState)
15051                    }
15052                    votingStakeTableState
15053                },
15054                {
15055                    fn getVersion(
15056                        data: &[u8],
15057                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15058                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15059                                data,
15060                            )
15061                            .map(LightClientArbitrumV3Calls::getVersion)
15062                    }
15063                    getVersion
15064                },
15065                {
15066                    fn _getVk(
15067                        data: &[u8],
15068                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15069                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15070                                data,
15071                            )
15072                            .map(LightClientArbitrumV3Calls::_getVk)
15073                    }
15074                    _getVk
15075                },
15076                {
15077                    fn updateEpochStartBlock(
15078                        data: &[u8],
15079                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15080                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15081                                data,
15082                            )
15083                            .map(LightClientArbitrumV3Calls::updateEpochStartBlock)
15084                    }
15085                    updateEpochStartBlock
15086                },
15087                {
15088                    fn newFinalizedState_0(
15089                        data: &[u8],
15090                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15091                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15092                                data,
15093                            )
15094                            .map(LightClientArbitrumV3Calls::newFinalizedState_0)
15095                    }
15096                    newFinalizedState_0
15097                },
15098                {
15099                    fn isEpochRoot(
15100                        data: &[u8],
15101                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15102                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15103                                data,
15104                            )
15105                            .map(LightClientArbitrumV3Calls::isEpochRoot)
15106                    }
15107                    isEpochRoot
15108                },
15109                {
15110                    fn stateHistoryFirstIndex(
15111                        data: &[u8],
15112                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15113                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15114                                data,
15115                            )
15116                            .map(LightClientArbitrumV3Calls::stateHistoryFirstIndex)
15117                    }
15118                    stateHistoryFirstIndex
15119                },
15120                {
15121                    fn isGtEpochRoot(
15122                        data: &[u8],
15123                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15124                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15125                                data,
15126                            )
15127                            .map(LightClientArbitrumV3Calls::isGtEpochRoot)
15128                    }
15129                    isGtEpochRoot
15130                },
15131                {
15132                    fn permissionedProver(
15133                        data: &[u8],
15134                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15135                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15136                                data,
15137                            )
15138                            .map(LightClientArbitrumV3Calls::permissionedProver)
15139                    }
15140                    permissionedProver
15141                },
15142                {
15143                    fn currentBlockNumber(
15144                        data: &[u8],
15145                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15146                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15147                                data,
15148                            )
15149                            .map(LightClientArbitrumV3Calls::currentBlockNumber)
15150                    }
15151                    currentBlockNumber
15152                },
15153                {
15154                    fn initializeV3(
15155                        data: &[u8],
15156                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15157                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15158                                data,
15159                            )
15160                            .map(LightClientArbitrumV3Calls::initializeV3)
15161                    }
15162                    initializeV3
15163                },
15164                {
15165                    fn epochStartBlock(
15166                        data: &[u8],
15167                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15168                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15169                                data,
15170                            )
15171                            .map(LightClientArbitrumV3Calls::epochStartBlock)
15172                    }
15173                    epochStartBlock
15174                },
15175                {
15176                    fn genesisStakeTableState(
15177                        data: &[u8],
15178                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15179                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15180                                data,
15181                            )
15182                            .map(LightClientArbitrumV3Calls::genesisStakeTableState)
15183                    }
15184                    genesisStakeTableState
15185                },
15186                {
15187                    fn setStateHistoryRetentionPeriod(
15188                        data: &[u8],
15189                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15190                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15191                                data,
15192                            )
15193                            .map(
15194                                LightClientArbitrumV3Calls::setStateHistoryRetentionPeriod,
15195                            )
15196                    }
15197                    setStateHistoryRetentionPeriod
15198                },
15199                {
15200                    fn upgradeToAndCall(
15201                        data: &[u8],
15202                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15203                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15204                                data,
15205                            )
15206                            .map(LightClientArbitrumV3Calls::upgradeToAndCall)
15207                    }
15208                    upgradeToAndCall
15209                },
15210                {
15211                    fn proxiableUUID(
15212                        data: &[u8],
15213                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15214                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15215                                data,
15216                            )
15217                            .map(LightClientArbitrumV3Calls::proxiableUUID)
15218                    }
15219                    proxiableUUID
15220                },
15221                {
15222                    fn disablePermissionedProverMode(
15223                        data: &[u8],
15224                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15225                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15226                                data,
15227                            )
15228                            .map(
15229                                LightClientArbitrumV3Calls::disablePermissionedProverMode,
15230                            )
15231                    }
15232                    disablePermissionedProverMode
15233                },
15234                {
15235                    fn renounceOwnership(
15236                        data: &[u8],
15237                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15238                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15239                                data,
15240                            )
15241                            .map(LightClientArbitrumV3Calls::renounceOwnership)
15242                    }
15243                    renounceOwnership
15244                },
15245                {
15246                    fn newFinalizedState_1(
15247                        data: &[u8],
15248                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15249                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15250                                data,
15251                            )
15252                            .map(LightClientArbitrumV3Calls::newFinalizedState_1)
15253                    }
15254                    newFinalizedState_1
15255                },
15256                {
15257                    fn currentEpoch(
15258                        data: &[u8],
15259                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15260                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15261                                data,
15262                            )
15263                            .map(LightClientArbitrumV3Calls::currentEpoch)
15264                    }
15265                    currentEpoch
15266                },
15267                {
15268                    fn isPermissionedProverEnabled(
15269                        data: &[u8],
15270                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15271                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15272                                data,
15273                            )
15274                            .map(LightClientArbitrumV3Calls::isPermissionedProverEnabled)
15275                    }
15276                    isPermissionedProverEnabled
15277                },
15278                {
15279                    fn getHotShotCommitment(
15280                        data: &[u8],
15281                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15282                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15283                                data,
15284                            )
15285                            .map(LightClientArbitrumV3Calls::getHotShotCommitment)
15286                    }
15287                    getHotShotCommitment
15288                },
15289                {
15290                    fn owner(
15291                        data: &[u8],
15292                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15293                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15294                                data,
15295                            )
15296                            .map(LightClientArbitrumV3Calls::owner)
15297                    }
15298                    owner
15299                },
15300                {
15301                    fn epochFromBlockNumber(
15302                        data: &[u8],
15303                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15304                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15305                                data,
15306                            )
15307                            .map(LightClientArbitrumV3Calls::epochFromBlockNumber)
15308                    }
15309                    epochFromBlockNumber
15310                },
15311                {
15312                    fn setstateHistoryRetentionPeriod(
15313                        data: &[u8],
15314                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15315                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15316                                data,
15317                            )
15318                            .map(
15319                                LightClientArbitrumV3Calls::setstateHistoryRetentionPeriod,
15320                            )
15321                    }
15322                    setstateHistoryRetentionPeriod
15323                },
15324                {
15325                    fn authRoot(
15326                        data: &[u8],
15327                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15328                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15329                                data,
15330                            )
15331                            .map(LightClientArbitrumV3Calls::authRoot)
15332                    }
15333                    authRoot
15334                },
15335                {
15336                    fn initialize(
15337                        data: &[u8],
15338                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15339                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15340                                data,
15341                            )
15342                            .map(LightClientArbitrumV3Calls::initialize)
15343                    }
15344                    initialize
15345                },
15346                {
15347                    fn finalizedState(
15348                        data: &[u8],
15349                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15350                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15351                                data,
15352                            )
15353                            .map(LightClientArbitrumV3Calls::finalizedState)
15354                    }
15355                    finalizedState
15356                },
15357                {
15358                    fn newFinalizedState_2(
15359                        data: &[u8],
15360                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15361                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15362                                data,
15363                            )
15364                            .map(LightClientArbitrumV3Calls::newFinalizedState_2)
15365                    }
15366                    newFinalizedState_2
15367                },
15368                {
15369                    fn UPGRADE_INTERFACE_VERSION(
15370                        data: &[u8],
15371                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15372                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15373                                data,
15374                            )
15375                            .map(LightClientArbitrumV3Calls::UPGRADE_INTERFACE_VERSION)
15376                    }
15377                    UPGRADE_INTERFACE_VERSION
15378                },
15379                {
15380                    fn initializeV2(
15381                        data: &[u8],
15382                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15383                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15384                                data,
15385                            )
15386                            .map(LightClientArbitrumV3Calls::initializeV2)
15387                    }
15388                    initializeV2
15389                },
15390                {
15391                    fn stateHistoryRetentionPeriod(
15392                        data: &[u8],
15393                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15394                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15395                                data,
15396                            )
15397                            .map(LightClientArbitrumV3Calls::stateHistoryRetentionPeriod)
15398                    }
15399                    stateHistoryRetentionPeriod
15400                },
15401                {
15402                    fn genesisState(
15403                        data: &[u8],
15404                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15405                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15406                                data,
15407                            )
15408                            .map(LightClientArbitrumV3Calls::genesisState)
15409                    }
15410                    genesisState
15411                },
15412                {
15413                    fn lagOverEscapeHatchThreshold(
15414                        data: &[u8],
15415                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15416                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15417                                data,
15418                            )
15419                            .map(LightClientArbitrumV3Calls::lagOverEscapeHatchThreshold)
15420                    }
15421                    lagOverEscapeHatchThreshold
15422                },
15423                {
15424                    fn blocksPerEpoch(
15425                        data: &[u8],
15426                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15427                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15428                                data,
15429                            )
15430                            .map(LightClientArbitrumV3Calls::blocksPerEpoch)
15431                    }
15432                    blocksPerEpoch
15433                },
15434                {
15435                    fn transferOwnership(
15436                        data: &[u8],
15437                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15438                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15439                                data,
15440                            )
15441                            .map(LightClientArbitrumV3Calls::transferOwnership)
15442                    }
15443                    transferOwnership
15444                },
15445                {
15446                    fn getStateHistoryCount(
15447                        data: &[u8],
15448                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Calls> {
15449                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15450                                data,
15451                            )
15452                            .map(LightClientArbitrumV3Calls::getStateHistoryCount)
15453                    }
15454                    getStateHistoryCount
15455                },
15456            ];
15457            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15458                return Err(
15459                    alloy_sol_types::Error::unknown_selector(
15460                        <Self as alloy_sol_types::SolInterface>::NAME,
15461                        selector,
15462                    ),
15463                );
15464            };
15465            DECODE_VALIDATE_SHIMS[idx](data)
15466        }
15467        #[inline]
15468        fn abi_encoded_size(&self) -> usize {
15469            match self {
15470                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15471                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
15472                        inner,
15473                    )
15474                }
15475                Self::_getVk(inner) => {
15476                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15477                }
15478                Self::authRoot(inner) => {
15479                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15480                }
15481                Self::blocksPerEpoch(inner) => {
15482                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15483                        inner,
15484                    )
15485                }
15486                Self::currentBlockNumber(inner) => {
15487                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15488                        inner,
15489                    )
15490                }
15491                Self::currentEpoch(inner) => {
15492                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15493                        inner,
15494                    )
15495                }
15496                Self::disablePermissionedProverMode(inner) => {
15497                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
15498                        inner,
15499                    )
15500                }
15501                Self::epochFromBlockNumber(inner) => {
15502                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15503                        inner,
15504                    )
15505                }
15506                Self::epochStartBlock(inner) => {
15507                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15508                        inner,
15509                    )
15510                }
15511                Self::finalizedState(inner) => {
15512                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15513                        inner,
15514                    )
15515                }
15516                Self::genesisStakeTableState(inner) => {
15517                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15518                        inner,
15519                    )
15520                }
15521                Self::genesisState(inner) => {
15522                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15523                        inner,
15524                    )
15525                }
15526                Self::getHotShotCommitment(inner) => {
15527                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
15528                        inner,
15529                    )
15530                }
15531                Self::getStateHistoryCount(inner) => {
15532                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
15533                        inner,
15534                    )
15535                }
15536                Self::getVersion(inner) => {
15537                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15538                }
15539                Self::initialize(inner) => {
15540                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15541                }
15542                Self::initializeV2(inner) => {
15543                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15544                        inner,
15545                    )
15546                }
15547                Self::initializeV3(inner) => {
15548                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
15549                        inner,
15550                    )
15551                }
15552                Self::isEpochRoot(inner) => {
15553                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15554                        inner,
15555                    )
15556                }
15557                Self::isGtEpochRoot(inner) => {
15558                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15559                        inner,
15560                    )
15561                }
15562                Self::isPermissionedProverEnabled(inner) => {
15563                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
15564                        inner,
15565                    )
15566                }
15567                Self::lagOverEscapeHatchThreshold(inner) => {
15568                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
15569                        inner,
15570                    )
15571                }
15572                Self::newFinalizedState_0(inner) => {
15573                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
15574                        inner,
15575                    )
15576                }
15577                Self::newFinalizedState_1(inner) => {
15578                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
15579                        inner,
15580                    )
15581                }
15582                Self::newFinalizedState_2(inner) => {
15583                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15584                        inner,
15585                    )
15586                }
15587                Self::owner(inner) => {
15588                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15589                }
15590                Self::permissionedProver(inner) => {
15591                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15592                        inner,
15593                    )
15594                }
15595                Self::proxiableUUID(inner) => {
15596                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
15597                        inner,
15598                    )
15599                }
15600                Self::renounceOwnership(inner) => {
15601                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15602                        inner,
15603                    )
15604                }
15605                Self::setPermissionedProver(inner) => {
15606                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15607                        inner,
15608                    )
15609                }
15610                Self::setStateHistoryRetentionPeriod(inner) => {
15611                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15612                        inner,
15613                    )
15614                }
15615                Self::setstateHistoryRetentionPeriod(inner) => {
15616                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15617                        inner,
15618                    )
15619                }
15620                Self::stateHistoryCommitments(inner) => {
15621                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15622                        inner,
15623                    )
15624                }
15625                Self::stateHistoryFirstIndex(inner) => {
15626                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
15627                        inner,
15628                    )
15629                }
15630                Self::stateHistoryRetentionPeriod(inner) => {
15631                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15632                        inner,
15633                    )
15634                }
15635                Self::transferOwnership(inner) => {
15636                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15637                        inner,
15638                    )
15639                }
15640                Self::updateEpochStartBlock(inner) => {
15641                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15642                        inner,
15643                    )
15644                }
15645                Self::upgradeToAndCall(inner) => {
15646                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
15647                        inner,
15648                    )
15649                }
15650                Self::votingStakeTableState(inner) => {
15651                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15652                        inner,
15653                    )
15654                }
15655            }
15656        }
15657        #[inline]
15658        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15659            match self {
15660                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15661                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
15662                        inner,
15663                        out,
15664                    )
15665                }
15666                Self::_getVk(inner) => {
15667                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15668                }
15669                Self::authRoot(inner) => {
15670                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15671                        inner,
15672                        out,
15673                    )
15674                }
15675                Self::blocksPerEpoch(inner) => {
15676                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15677                        inner,
15678                        out,
15679                    )
15680                }
15681                Self::currentBlockNumber(inner) => {
15682                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15683                        inner,
15684                        out,
15685                    )
15686                }
15687                Self::currentEpoch(inner) => {
15688                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15689                        inner,
15690                        out,
15691                    )
15692                }
15693                Self::disablePermissionedProverMode(inner) => {
15694                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15695                        inner,
15696                        out,
15697                    )
15698                }
15699                Self::epochFromBlockNumber(inner) => {
15700                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15701                        inner,
15702                        out,
15703                    )
15704                }
15705                Self::epochStartBlock(inner) => {
15706                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15707                        inner,
15708                        out,
15709                    )
15710                }
15711                Self::finalizedState(inner) => {
15712                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15713                        inner,
15714                        out,
15715                    )
15716                }
15717                Self::genesisStakeTableState(inner) => {
15718                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15719                        inner,
15720                        out,
15721                    )
15722                }
15723                Self::genesisState(inner) => {
15724                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15725                        inner,
15726                        out,
15727                    )
15728                }
15729                Self::getHotShotCommitment(inner) => {
15730                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
15731                        inner,
15732                        out,
15733                    )
15734                }
15735                Self::getStateHistoryCount(inner) => {
15736                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
15737                        inner,
15738                        out,
15739                    )
15740                }
15741                Self::getVersion(inner) => {
15742                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
15743                        inner,
15744                        out,
15745                    )
15746                }
15747                Self::initialize(inner) => {
15748                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15749                        inner,
15750                        out,
15751                    )
15752                }
15753                Self::initializeV2(inner) => {
15754                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15755                        inner,
15756                        out,
15757                    )
15758                }
15759                Self::initializeV3(inner) => {
15760                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
15761                        inner,
15762                        out,
15763                    )
15764                }
15765                Self::isEpochRoot(inner) => {
15766                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15767                        inner,
15768                        out,
15769                    )
15770                }
15771                Self::isGtEpochRoot(inner) => {
15772                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15773                        inner,
15774                        out,
15775                    )
15776                }
15777                Self::isPermissionedProverEnabled(inner) => {
15778                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
15779                        inner,
15780                        out,
15781                    )
15782                }
15783                Self::lagOverEscapeHatchThreshold(inner) => {
15784                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
15785                        inner,
15786                        out,
15787                    )
15788                }
15789                Self::newFinalizedState_0(inner) => {
15790                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
15791                        inner,
15792                        out,
15793                    )
15794                }
15795                Self::newFinalizedState_1(inner) => {
15796                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
15797                        inner,
15798                        out,
15799                    )
15800                }
15801                Self::newFinalizedState_2(inner) => {
15802                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15803                        inner,
15804                        out,
15805                    )
15806                }
15807                Self::owner(inner) => {
15808                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15809                }
15810                Self::permissionedProver(inner) => {
15811                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15812                        inner,
15813                        out,
15814                    )
15815                }
15816                Self::proxiableUUID(inner) => {
15817                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
15818                        inner,
15819                        out,
15820                    )
15821                }
15822                Self::renounceOwnership(inner) => {
15823                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15824                        inner,
15825                        out,
15826                    )
15827                }
15828                Self::setPermissionedProver(inner) => {
15829                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15830                        inner,
15831                        out,
15832                    )
15833                }
15834                Self::setStateHistoryRetentionPeriod(inner) => {
15835                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15836                        inner,
15837                        out,
15838                    )
15839                }
15840                Self::setstateHistoryRetentionPeriod(inner) => {
15841                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15842                        inner,
15843                        out,
15844                    )
15845                }
15846                Self::stateHistoryCommitments(inner) => {
15847                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15848                        inner,
15849                        out,
15850                    )
15851                }
15852                Self::stateHistoryFirstIndex(inner) => {
15853                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
15854                        inner,
15855                        out,
15856                    )
15857                }
15858                Self::stateHistoryRetentionPeriod(inner) => {
15859                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15860                        inner,
15861                        out,
15862                    )
15863                }
15864                Self::transferOwnership(inner) => {
15865                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15866                        inner,
15867                        out,
15868                    )
15869                }
15870                Self::updateEpochStartBlock(inner) => {
15871                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15872                        inner,
15873                        out,
15874                    )
15875                }
15876                Self::upgradeToAndCall(inner) => {
15877                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
15878                        inner,
15879                        out,
15880                    )
15881                }
15882                Self::votingStakeTableState(inner) => {
15883                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15884                        inner,
15885                        out,
15886                    )
15887                }
15888            }
15889        }
15890    }
15891    ///Container for all the [`LightClientArbitrumV3`](self) custom errors.
15892    #[derive(Clone)]
15893    #[derive(serde::Serialize, serde::Deserialize)]
15894    #[derive(Debug, PartialEq, Eq, Hash)]
15895    pub enum LightClientArbitrumV3Errors {
15896        #[allow(missing_docs)]
15897        AddressEmptyCode(AddressEmptyCode),
15898        #[allow(missing_docs)]
15899        DeprecatedApi(DeprecatedApi),
15900        #[allow(missing_docs)]
15901        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
15902        #[allow(missing_docs)]
15903        ERC1967NonPayable(ERC1967NonPayable),
15904        #[allow(missing_docs)]
15905        FailedInnerCall(FailedInnerCall),
15906        #[allow(missing_docs)]
15907        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
15908        #[allow(missing_docs)]
15909        InvalidAddress(InvalidAddress),
15910        #[allow(missing_docs)]
15911        InvalidArgs(InvalidArgs),
15912        #[allow(missing_docs)]
15913        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
15914        #[allow(missing_docs)]
15915        InvalidInitialization(InvalidInitialization),
15916        #[allow(missing_docs)]
15917        InvalidMaxStateHistory(InvalidMaxStateHistory),
15918        #[allow(missing_docs)]
15919        InvalidProof(InvalidProof),
15920        #[allow(missing_docs)]
15921        InvalidScalar(InvalidScalar),
15922        #[allow(missing_docs)]
15923        MissingEpochRootUpdate(MissingEpochRootUpdate),
15924        #[allow(missing_docs)]
15925        NoChangeRequired(NoChangeRequired),
15926        #[allow(missing_docs)]
15927        NotInitializing(NotInitializing),
15928        #[allow(missing_docs)]
15929        OutdatedState(OutdatedState),
15930        #[allow(missing_docs)]
15931        OwnableInvalidOwner(OwnableInvalidOwner),
15932        #[allow(missing_docs)]
15933        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
15934        #[allow(missing_docs)]
15935        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
15936        #[allow(missing_docs)]
15937        ProverNotPermissioned(ProverNotPermissioned),
15938        #[allow(missing_docs)]
15939        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
15940        #[allow(missing_docs)]
15941        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
15942        #[allow(missing_docs)]
15943        WrongStakeTableUsed(WrongStakeTableUsed),
15944    }
15945    impl LightClientArbitrumV3Errors {
15946        /// All the selectors of this enum.
15947        ///
15948        /// Note that the selectors might not be in the same order as the variants.
15949        /// No guarantees are made about the order of the selectors.
15950        ///
15951        /// Prefer using `SolInterface` methods instead.
15952        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15953            [5u8, 28u8, 70u8, 239u8],
15954            [5u8, 176u8, 92u8, 204u8],
15955            [8u8, 10u8, 232u8, 217u8],
15956            [9u8, 189u8, 227u8, 57u8],
15957            [17u8, 140u8, 218u8, 167u8],
15958            [20u8, 37u8, 234u8, 66u8],
15959            [30u8, 79u8, 189u8, 247u8],
15960            [47u8, 171u8, 146u8, 202u8],
15961            [76u8, 156u8, 140u8, 227u8],
15962            [78u8, 64u8, 92u8, 141u8],
15963            [81u8, 97u8, 128u8, 137u8],
15964            [97u8, 90u8, 146u8, 100u8],
15965            [153u8, 150u8, 179u8, 21u8],
15966            [161u8, 186u8, 7u8, 238u8],
15967            [163u8, 166u8, 71u8, 128u8],
15968            [168u8, 99u8, 174u8, 201u8],
15969            [170u8, 29u8, 73u8, 164u8],
15970            [176u8, 180u8, 56u8, 119u8],
15971            [179u8, 152u8, 151u8, 159u8],
15972            [215u8, 230u8, 188u8, 248u8],
15973            [224u8, 124u8, 141u8, 186u8],
15974            [230u8, 196u8, 36u8, 123u8],
15975            [244u8, 160u8, 238u8, 224u8],
15976            [249u8, 46u8, 232u8, 169u8],
15977        ];
15978        /// The names of the variants in the same order as `SELECTORS`.
15979        pub const VARIANT_NAMES: &'static [&'static str] = &[
15980            ::core::stringify!(OutdatedState),
15981            ::core::stringify!(InvalidScalar),
15982            ::core::stringify!(MissingEpochRootUpdate),
15983            ::core::stringify!(InvalidProof),
15984            ::core::stringify!(OwnableUnauthorizedAccount),
15985            ::core::stringify!(FailedInnerCall),
15986            ::core::stringify!(OwnableInvalidOwner),
15987            ::core::stringify!(OwnershipCannotBeRenounced),
15988            ::core::stringify!(ERC1967InvalidImplementation),
15989            ::core::stringify!(DeprecatedApi),
15990            ::core::stringify!(WrongStakeTableUsed),
15991            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
15992            ::core::stringify!(AddressEmptyCode),
15993            ::core::stringify!(InvalidArgs),
15994            ::core::stringify!(ProverNotPermissioned),
15995            ::core::stringify!(NoChangeRequired),
15996            ::core::stringify!(UUPSUnsupportedProxiableUUID),
15997            ::core::stringify!(InsufficientSnapshotHistory),
15998            ::core::stringify!(ERC1967NonPayable),
15999            ::core::stringify!(NotInitializing),
16000            ::core::stringify!(UUPSUnauthorizedCallContext),
16001            ::core::stringify!(InvalidAddress),
16002            ::core::stringify!(InvalidMaxStateHistory),
16003            ::core::stringify!(InvalidInitialization),
16004        ];
16005        /// The signatures in the same order as `SELECTORS`.
16006        pub const SIGNATURES: &'static [&'static str] = &[
16007            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
16008            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
16009            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
16010            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
16011            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
16012            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
16013            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
16014            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
16015            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
16016            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
16017            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
16018            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
16019            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
16020            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
16021            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
16022            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
16023            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
16024            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
16025            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
16026            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
16027            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
16028            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
16029            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
16030            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
16031        ];
16032        /// Returns the signature for the given selector, if known.
16033        #[inline]
16034        pub fn signature_by_selector(
16035            selector: [u8; 4usize],
16036        ) -> ::core::option::Option<&'static str> {
16037            match Self::SELECTORS.binary_search(&selector) {
16038                ::core::result::Result::Ok(idx) => {
16039                    ::core::option::Option::Some(Self::SIGNATURES[idx])
16040                }
16041                ::core::result::Result::Err(_) => ::core::option::Option::None,
16042            }
16043        }
16044        /// Returns the enum variant name for the given selector, if known.
16045        #[inline]
16046        pub fn name_by_selector(
16047            selector: [u8; 4usize],
16048        ) -> ::core::option::Option<&'static str> {
16049            let sig = Self::signature_by_selector(selector)?;
16050            sig.split_once('(').map(|(name, _)| name)
16051        }
16052    }
16053    #[automatically_derived]
16054    impl alloy_sol_types::SolInterface for LightClientArbitrumV3Errors {
16055        const NAME: &'static str = "LightClientArbitrumV3Errors";
16056        const MIN_DATA_LENGTH: usize = 0usize;
16057        const COUNT: usize = 24usize;
16058        #[inline]
16059        fn selector(&self) -> [u8; 4] {
16060            match self {
16061                Self::AddressEmptyCode(_) => {
16062                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
16063                }
16064                Self::DeprecatedApi(_) => {
16065                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
16066                }
16067                Self::ERC1967InvalidImplementation(_) => {
16068                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
16069                }
16070                Self::ERC1967NonPayable(_) => {
16071                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
16072                }
16073                Self::FailedInnerCall(_) => {
16074                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
16075                }
16076                Self::InsufficientSnapshotHistory(_) => {
16077                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
16078                }
16079                Self::InvalidAddress(_) => {
16080                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
16081                }
16082                Self::InvalidArgs(_) => {
16083                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
16084                }
16085                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
16086                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
16087                }
16088                Self::InvalidInitialization(_) => {
16089                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
16090                }
16091                Self::InvalidMaxStateHistory(_) => {
16092                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
16093                }
16094                Self::InvalidProof(_) => {
16095                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
16096                }
16097                Self::InvalidScalar(_) => {
16098                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
16099                }
16100                Self::MissingEpochRootUpdate(_) => {
16101                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
16102                }
16103                Self::NoChangeRequired(_) => {
16104                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
16105                }
16106                Self::NotInitializing(_) => {
16107                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
16108                }
16109                Self::OutdatedState(_) => {
16110                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
16111                }
16112                Self::OwnableInvalidOwner(_) => {
16113                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
16114                }
16115                Self::OwnableUnauthorizedAccount(_) => {
16116                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
16117                }
16118                Self::OwnershipCannotBeRenounced(_) => {
16119                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
16120                }
16121                Self::ProverNotPermissioned(_) => {
16122                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
16123                }
16124                Self::UUPSUnauthorizedCallContext(_) => {
16125                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
16126                }
16127                Self::UUPSUnsupportedProxiableUUID(_) => {
16128                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
16129                }
16130                Self::WrongStakeTableUsed(_) => {
16131                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
16132                }
16133            }
16134        }
16135        #[inline]
16136        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16137            Self::SELECTORS.get(i).copied()
16138        }
16139        #[inline]
16140        fn valid_selector(selector: [u8; 4]) -> bool {
16141            Self::SELECTORS.binary_search(&selector).is_ok()
16142        }
16143        #[inline]
16144        #[allow(non_snake_case)]
16145        fn abi_decode_raw(
16146            selector: [u8; 4],
16147            data: &[u8],
16148        ) -> alloy_sol_types::Result<Self> {
16149            static DECODE_SHIMS: &[fn(
16150                &[u8],
16151            ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors>] = &[
16152                {
16153                    fn OutdatedState(
16154                        data: &[u8],
16155                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16156                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
16157                                data,
16158                            )
16159                            .map(LightClientArbitrumV3Errors::OutdatedState)
16160                    }
16161                    OutdatedState
16162                },
16163                {
16164                    fn InvalidScalar(
16165                        data: &[u8],
16166                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16167                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
16168                                data,
16169                            )
16170                            .map(LightClientArbitrumV3Errors::InvalidScalar)
16171                    }
16172                    InvalidScalar
16173                },
16174                {
16175                    fn MissingEpochRootUpdate(
16176                        data: &[u8],
16177                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16178                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
16179                                data,
16180                            )
16181                            .map(LightClientArbitrumV3Errors::MissingEpochRootUpdate)
16182                    }
16183                    MissingEpochRootUpdate
16184                },
16185                {
16186                    fn InvalidProof(
16187                        data: &[u8],
16188                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16189                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
16190                            .map(LightClientArbitrumV3Errors::InvalidProof)
16191                    }
16192                    InvalidProof
16193                },
16194                {
16195                    fn OwnableUnauthorizedAccount(
16196                        data: &[u8],
16197                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16198                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
16199                                data,
16200                            )
16201                            .map(LightClientArbitrumV3Errors::OwnableUnauthorizedAccount)
16202                    }
16203                    OwnableUnauthorizedAccount
16204                },
16205                {
16206                    fn FailedInnerCall(
16207                        data: &[u8],
16208                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16209                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
16210                                data,
16211                            )
16212                            .map(LightClientArbitrumV3Errors::FailedInnerCall)
16213                    }
16214                    FailedInnerCall
16215                },
16216                {
16217                    fn OwnableInvalidOwner(
16218                        data: &[u8],
16219                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16220                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
16221                                data,
16222                            )
16223                            .map(LightClientArbitrumV3Errors::OwnableInvalidOwner)
16224                    }
16225                    OwnableInvalidOwner
16226                },
16227                {
16228                    fn OwnershipCannotBeRenounced(
16229                        data: &[u8],
16230                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16231                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
16232                                data,
16233                            )
16234                            .map(LightClientArbitrumV3Errors::OwnershipCannotBeRenounced)
16235                    }
16236                    OwnershipCannotBeRenounced
16237                },
16238                {
16239                    fn ERC1967InvalidImplementation(
16240                        data: &[u8],
16241                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16242                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
16243                                data,
16244                            )
16245                            .map(
16246                                LightClientArbitrumV3Errors::ERC1967InvalidImplementation,
16247                            )
16248                    }
16249                    ERC1967InvalidImplementation
16250                },
16251                {
16252                    fn DeprecatedApi(
16253                        data: &[u8],
16254                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16255                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
16256                                data,
16257                            )
16258                            .map(LightClientArbitrumV3Errors::DeprecatedApi)
16259                    }
16260                    DeprecatedApi
16261                },
16262                {
16263                    fn WrongStakeTableUsed(
16264                        data: &[u8],
16265                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16266                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
16267                                data,
16268                            )
16269                            .map(LightClientArbitrumV3Errors::WrongStakeTableUsed)
16270                    }
16271                    WrongStakeTableUsed
16272                },
16273                {
16274                    fn InvalidHotShotBlockForCommitmentCheck(
16275                        data: &[u8],
16276                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16277                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
16278                                data,
16279                            )
16280                            .map(
16281                                LightClientArbitrumV3Errors::InvalidHotShotBlockForCommitmentCheck,
16282                            )
16283                    }
16284                    InvalidHotShotBlockForCommitmentCheck
16285                },
16286                {
16287                    fn AddressEmptyCode(
16288                        data: &[u8],
16289                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16290                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
16291                                data,
16292                            )
16293                            .map(LightClientArbitrumV3Errors::AddressEmptyCode)
16294                    }
16295                    AddressEmptyCode
16296                },
16297                {
16298                    fn InvalidArgs(
16299                        data: &[u8],
16300                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16301                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
16302                            .map(LightClientArbitrumV3Errors::InvalidArgs)
16303                    }
16304                    InvalidArgs
16305                },
16306                {
16307                    fn ProverNotPermissioned(
16308                        data: &[u8],
16309                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16310                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
16311                                data,
16312                            )
16313                            .map(LightClientArbitrumV3Errors::ProverNotPermissioned)
16314                    }
16315                    ProverNotPermissioned
16316                },
16317                {
16318                    fn NoChangeRequired(
16319                        data: &[u8],
16320                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16321                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
16322                                data,
16323                            )
16324                            .map(LightClientArbitrumV3Errors::NoChangeRequired)
16325                    }
16326                    NoChangeRequired
16327                },
16328                {
16329                    fn UUPSUnsupportedProxiableUUID(
16330                        data: &[u8],
16331                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16332                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
16333                                data,
16334                            )
16335                            .map(
16336                                LightClientArbitrumV3Errors::UUPSUnsupportedProxiableUUID,
16337                            )
16338                    }
16339                    UUPSUnsupportedProxiableUUID
16340                },
16341                {
16342                    fn InsufficientSnapshotHistory(
16343                        data: &[u8],
16344                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16345                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
16346                                data,
16347                            )
16348                            .map(
16349                                LightClientArbitrumV3Errors::InsufficientSnapshotHistory,
16350                            )
16351                    }
16352                    InsufficientSnapshotHistory
16353                },
16354                {
16355                    fn ERC1967NonPayable(
16356                        data: &[u8],
16357                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16358                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
16359                                data,
16360                            )
16361                            .map(LightClientArbitrumV3Errors::ERC1967NonPayable)
16362                    }
16363                    ERC1967NonPayable
16364                },
16365                {
16366                    fn NotInitializing(
16367                        data: &[u8],
16368                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16369                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
16370                                data,
16371                            )
16372                            .map(LightClientArbitrumV3Errors::NotInitializing)
16373                    }
16374                    NotInitializing
16375                },
16376                {
16377                    fn UUPSUnauthorizedCallContext(
16378                        data: &[u8],
16379                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16380                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
16381                                data,
16382                            )
16383                            .map(
16384                                LightClientArbitrumV3Errors::UUPSUnauthorizedCallContext,
16385                            )
16386                    }
16387                    UUPSUnauthorizedCallContext
16388                },
16389                {
16390                    fn InvalidAddress(
16391                        data: &[u8],
16392                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16393                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
16394                                data,
16395                            )
16396                            .map(LightClientArbitrumV3Errors::InvalidAddress)
16397                    }
16398                    InvalidAddress
16399                },
16400                {
16401                    fn InvalidMaxStateHistory(
16402                        data: &[u8],
16403                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16404                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
16405                                data,
16406                            )
16407                            .map(LightClientArbitrumV3Errors::InvalidMaxStateHistory)
16408                    }
16409                    InvalidMaxStateHistory
16410                },
16411                {
16412                    fn InvalidInitialization(
16413                        data: &[u8],
16414                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16415                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
16416                                data,
16417                            )
16418                            .map(LightClientArbitrumV3Errors::InvalidInitialization)
16419                    }
16420                    InvalidInitialization
16421                },
16422            ];
16423            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16424                return Err(
16425                    alloy_sol_types::Error::unknown_selector(
16426                        <Self as alloy_sol_types::SolInterface>::NAME,
16427                        selector,
16428                    ),
16429                );
16430            };
16431            DECODE_SHIMS[idx](data)
16432        }
16433        #[inline]
16434        #[allow(non_snake_case)]
16435        fn abi_decode_raw_validate(
16436            selector: [u8; 4],
16437            data: &[u8],
16438        ) -> alloy_sol_types::Result<Self> {
16439            static DECODE_VALIDATE_SHIMS: &[fn(
16440                &[u8],
16441            ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors>] = &[
16442                {
16443                    fn OutdatedState(
16444                        data: &[u8],
16445                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16446                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
16447                                data,
16448                            )
16449                            .map(LightClientArbitrumV3Errors::OutdatedState)
16450                    }
16451                    OutdatedState
16452                },
16453                {
16454                    fn InvalidScalar(
16455                        data: &[u8],
16456                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16457                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
16458                                data,
16459                            )
16460                            .map(LightClientArbitrumV3Errors::InvalidScalar)
16461                    }
16462                    InvalidScalar
16463                },
16464                {
16465                    fn MissingEpochRootUpdate(
16466                        data: &[u8],
16467                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16468                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
16469                                data,
16470                            )
16471                            .map(LightClientArbitrumV3Errors::MissingEpochRootUpdate)
16472                    }
16473                    MissingEpochRootUpdate
16474                },
16475                {
16476                    fn InvalidProof(
16477                        data: &[u8],
16478                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16479                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
16480                                data,
16481                            )
16482                            .map(LightClientArbitrumV3Errors::InvalidProof)
16483                    }
16484                    InvalidProof
16485                },
16486                {
16487                    fn OwnableUnauthorizedAccount(
16488                        data: &[u8],
16489                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16490                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
16491                                data,
16492                            )
16493                            .map(LightClientArbitrumV3Errors::OwnableUnauthorizedAccount)
16494                    }
16495                    OwnableUnauthorizedAccount
16496                },
16497                {
16498                    fn FailedInnerCall(
16499                        data: &[u8],
16500                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16501                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
16502                                data,
16503                            )
16504                            .map(LightClientArbitrumV3Errors::FailedInnerCall)
16505                    }
16506                    FailedInnerCall
16507                },
16508                {
16509                    fn OwnableInvalidOwner(
16510                        data: &[u8],
16511                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16512                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
16513                                data,
16514                            )
16515                            .map(LightClientArbitrumV3Errors::OwnableInvalidOwner)
16516                    }
16517                    OwnableInvalidOwner
16518                },
16519                {
16520                    fn OwnershipCannotBeRenounced(
16521                        data: &[u8],
16522                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16523                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
16524                                data,
16525                            )
16526                            .map(LightClientArbitrumV3Errors::OwnershipCannotBeRenounced)
16527                    }
16528                    OwnershipCannotBeRenounced
16529                },
16530                {
16531                    fn ERC1967InvalidImplementation(
16532                        data: &[u8],
16533                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16534                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
16535                                data,
16536                            )
16537                            .map(
16538                                LightClientArbitrumV3Errors::ERC1967InvalidImplementation,
16539                            )
16540                    }
16541                    ERC1967InvalidImplementation
16542                },
16543                {
16544                    fn DeprecatedApi(
16545                        data: &[u8],
16546                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16547                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
16548                                data,
16549                            )
16550                            .map(LightClientArbitrumV3Errors::DeprecatedApi)
16551                    }
16552                    DeprecatedApi
16553                },
16554                {
16555                    fn WrongStakeTableUsed(
16556                        data: &[u8],
16557                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16558                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
16559                                data,
16560                            )
16561                            .map(LightClientArbitrumV3Errors::WrongStakeTableUsed)
16562                    }
16563                    WrongStakeTableUsed
16564                },
16565                {
16566                    fn InvalidHotShotBlockForCommitmentCheck(
16567                        data: &[u8],
16568                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16569                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
16570                                data,
16571                            )
16572                            .map(
16573                                LightClientArbitrumV3Errors::InvalidHotShotBlockForCommitmentCheck,
16574                            )
16575                    }
16576                    InvalidHotShotBlockForCommitmentCheck
16577                },
16578                {
16579                    fn AddressEmptyCode(
16580                        data: &[u8],
16581                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16582                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
16583                                data,
16584                            )
16585                            .map(LightClientArbitrumV3Errors::AddressEmptyCode)
16586                    }
16587                    AddressEmptyCode
16588                },
16589                {
16590                    fn InvalidArgs(
16591                        data: &[u8],
16592                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16593                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
16594                                data,
16595                            )
16596                            .map(LightClientArbitrumV3Errors::InvalidArgs)
16597                    }
16598                    InvalidArgs
16599                },
16600                {
16601                    fn ProverNotPermissioned(
16602                        data: &[u8],
16603                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16604                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
16605                                data,
16606                            )
16607                            .map(LightClientArbitrumV3Errors::ProverNotPermissioned)
16608                    }
16609                    ProverNotPermissioned
16610                },
16611                {
16612                    fn NoChangeRequired(
16613                        data: &[u8],
16614                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16615                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
16616                                data,
16617                            )
16618                            .map(LightClientArbitrumV3Errors::NoChangeRequired)
16619                    }
16620                    NoChangeRequired
16621                },
16622                {
16623                    fn UUPSUnsupportedProxiableUUID(
16624                        data: &[u8],
16625                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16626                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
16627                                data,
16628                            )
16629                            .map(
16630                                LightClientArbitrumV3Errors::UUPSUnsupportedProxiableUUID,
16631                            )
16632                    }
16633                    UUPSUnsupportedProxiableUUID
16634                },
16635                {
16636                    fn InsufficientSnapshotHistory(
16637                        data: &[u8],
16638                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16639                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
16640                                data,
16641                            )
16642                            .map(
16643                                LightClientArbitrumV3Errors::InsufficientSnapshotHistory,
16644                            )
16645                    }
16646                    InsufficientSnapshotHistory
16647                },
16648                {
16649                    fn ERC1967NonPayable(
16650                        data: &[u8],
16651                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16652                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
16653                                data,
16654                            )
16655                            .map(LightClientArbitrumV3Errors::ERC1967NonPayable)
16656                    }
16657                    ERC1967NonPayable
16658                },
16659                {
16660                    fn NotInitializing(
16661                        data: &[u8],
16662                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16663                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
16664                                data,
16665                            )
16666                            .map(LightClientArbitrumV3Errors::NotInitializing)
16667                    }
16668                    NotInitializing
16669                },
16670                {
16671                    fn UUPSUnauthorizedCallContext(
16672                        data: &[u8],
16673                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16674                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
16675                                data,
16676                            )
16677                            .map(
16678                                LightClientArbitrumV3Errors::UUPSUnauthorizedCallContext,
16679                            )
16680                    }
16681                    UUPSUnauthorizedCallContext
16682                },
16683                {
16684                    fn InvalidAddress(
16685                        data: &[u8],
16686                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16687                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
16688                                data,
16689                            )
16690                            .map(LightClientArbitrumV3Errors::InvalidAddress)
16691                    }
16692                    InvalidAddress
16693                },
16694                {
16695                    fn InvalidMaxStateHistory(
16696                        data: &[u8],
16697                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16698                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
16699                                data,
16700                            )
16701                            .map(LightClientArbitrumV3Errors::InvalidMaxStateHistory)
16702                    }
16703                    InvalidMaxStateHistory
16704                },
16705                {
16706                    fn InvalidInitialization(
16707                        data: &[u8],
16708                    ) -> alloy_sol_types::Result<LightClientArbitrumV3Errors> {
16709                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
16710                                data,
16711                            )
16712                            .map(LightClientArbitrumV3Errors::InvalidInitialization)
16713                    }
16714                    InvalidInitialization
16715                },
16716            ];
16717            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16718                return Err(
16719                    alloy_sol_types::Error::unknown_selector(
16720                        <Self as alloy_sol_types::SolInterface>::NAME,
16721                        selector,
16722                    ),
16723                );
16724            };
16725            DECODE_VALIDATE_SHIMS[idx](data)
16726        }
16727        #[inline]
16728        fn abi_encoded_size(&self) -> usize {
16729            match self {
16730                Self::AddressEmptyCode(inner) => {
16731                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
16732                        inner,
16733                    )
16734                }
16735                Self::DeprecatedApi(inner) => {
16736                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
16737                }
16738                Self::ERC1967InvalidImplementation(inner) => {
16739                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
16740                        inner,
16741                    )
16742                }
16743                Self::ERC1967NonPayable(inner) => {
16744                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
16745                        inner,
16746                    )
16747                }
16748                Self::FailedInnerCall(inner) => {
16749                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
16750                        inner,
16751                    )
16752                }
16753                Self::InsufficientSnapshotHistory(inner) => {
16754                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
16755                        inner,
16756                    )
16757                }
16758                Self::InvalidAddress(inner) => {
16759                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
16760                        inner,
16761                    )
16762                }
16763                Self::InvalidArgs(inner) => {
16764                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
16765                }
16766                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16767                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
16768                        inner,
16769                    )
16770                }
16771                Self::InvalidInitialization(inner) => {
16772                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
16773                        inner,
16774                    )
16775                }
16776                Self::InvalidMaxStateHistory(inner) => {
16777                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
16778                        inner,
16779                    )
16780                }
16781                Self::InvalidProof(inner) => {
16782                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
16783                }
16784                Self::InvalidScalar(inner) => {
16785                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
16786                }
16787                Self::MissingEpochRootUpdate(inner) => {
16788                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
16789                        inner,
16790                    )
16791                }
16792                Self::NoChangeRequired(inner) => {
16793                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
16794                        inner,
16795                    )
16796                }
16797                Self::NotInitializing(inner) => {
16798                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
16799                        inner,
16800                    )
16801                }
16802                Self::OutdatedState(inner) => {
16803                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
16804                }
16805                Self::OwnableInvalidOwner(inner) => {
16806                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
16807                        inner,
16808                    )
16809                }
16810                Self::OwnableUnauthorizedAccount(inner) => {
16811                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
16812                        inner,
16813                    )
16814                }
16815                Self::OwnershipCannotBeRenounced(inner) => {
16816                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
16817                        inner,
16818                    )
16819                }
16820                Self::ProverNotPermissioned(inner) => {
16821                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
16822                        inner,
16823                    )
16824                }
16825                Self::UUPSUnauthorizedCallContext(inner) => {
16826                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
16827                        inner,
16828                    )
16829                }
16830                Self::UUPSUnsupportedProxiableUUID(inner) => {
16831                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
16832                        inner,
16833                    )
16834                }
16835                Self::WrongStakeTableUsed(inner) => {
16836                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
16837                        inner,
16838                    )
16839                }
16840            }
16841        }
16842        #[inline]
16843        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16844            match self {
16845                Self::AddressEmptyCode(inner) => {
16846                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
16847                        inner,
16848                        out,
16849                    )
16850                }
16851                Self::DeprecatedApi(inner) => {
16852                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
16853                        inner,
16854                        out,
16855                    )
16856                }
16857                Self::ERC1967InvalidImplementation(inner) => {
16858                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
16859                        inner,
16860                        out,
16861                    )
16862                }
16863                Self::ERC1967NonPayable(inner) => {
16864                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
16865                        inner,
16866                        out,
16867                    )
16868                }
16869                Self::FailedInnerCall(inner) => {
16870                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
16871                        inner,
16872                        out,
16873                    )
16874                }
16875                Self::InsufficientSnapshotHistory(inner) => {
16876                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
16877                        inner,
16878                        out,
16879                    )
16880                }
16881                Self::InvalidAddress(inner) => {
16882                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
16883                        inner,
16884                        out,
16885                    )
16886                }
16887                Self::InvalidArgs(inner) => {
16888                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
16889                        inner,
16890                        out,
16891                    )
16892                }
16893                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16894                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
16895                        inner,
16896                        out,
16897                    )
16898                }
16899                Self::InvalidInitialization(inner) => {
16900                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
16901                        inner,
16902                        out,
16903                    )
16904                }
16905                Self::InvalidMaxStateHistory(inner) => {
16906                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
16907                        inner,
16908                        out,
16909                    )
16910                }
16911                Self::InvalidProof(inner) => {
16912                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
16913                        inner,
16914                        out,
16915                    )
16916                }
16917                Self::InvalidScalar(inner) => {
16918                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
16919                        inner,
16920                        out,
16921                    )
16922                }
16923                Self::MissingEpochRootUpdate(inner) => {
16924                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
16925                        inner,
16926                        out,
16927                    )
16928                }
16929                Self::NoChangeRequired(inner) => {
16930                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
16931                        inner,
16932                        out,
16933                    )
16934                }
16935                Self::NotInitializing(inner) => {
16936                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
16937                        inner,
16938                        out,
16939                    )
16940                }
16941                Self::OutdatedState(inner) => {
16942                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
16943                        inner,
16944                        out,
16945                    )
16946                }
16947                Self::OwnableInvalidOwner(inner) => {
16948                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
16949                        inner,
16950                        out,
16951                    )
16952                }
16953                Self::OwnableUnauthorizedAccount(inner) => {
16954                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
16955                        inner,
16956                        out,
16957                    )
16958                }
16959                Self::OwnershipCannotBeRenounced(inner) => {
16960                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
16961                        inner,
16962                        out,
16963                    )
16964                }
16965                Self::ProverNotPermissioned(inner) => {
16966                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
16967                        inner,
16968                        out,
16969                    )
16970                }
16971                Self::UUPSUnauthorizedCallContext(inner) => {
16972                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
16973                        inner,
16974                        out,
16975                    )
16976                }
16977                Self::UUPSUnsupportedProxiableUUID(inner) => {
16978                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
16979                        inner,
16980                        out,
16981                    )
16982                }
16983                Self::WrongStakeTableUsed(inner) => {
16984                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
16985                        inner,
16986                        out,
16987                    )
16988                }
16989            }
16990        }
16991    }
16992    ///Container for all the [`LightClientArbitrumV3`](self) events.
16993    #[derive(Clone)]
16994    #[derive(serde::Serialize, serde::Deserialize)]
16995    #[derive(Debug, PartialEq, Eq, Hash)]
16996    pub enum LightClientArbitrumV3Events {
16997        #[allow(missing_docs)]
16998        Initialized(Initialized),
16999        #[allow(missing_docs)]
17000        NewEpoch(NewEpoch),
17001        #[allow(missing_docs)]
17002        NewState(NewState),
17003        #[allow(missing_docs)]
17004        OwnershipTransferred(OwnershipTransferred),
17005        #[allow(missing_docs)]
17006        PermissionedProverNotRequired(PermissionedProverNotRequired),
17007        #[allow(missing_docs)]
17008        PermissionedProverRequired(PermissionedProverRequired),
17009        #[allow(missing_docs)]
17010        Upgrade(Upgrade),
17011        #[allow(missing_docs)]
17012        Upgraded(Upgraded),
17013    }
17014    impl LightClientArbitrumV3Events {
17015        /// All the selectors of this enum.
17016        ///
17017        /// Note that the selectors might not be in the same order as the variants.
17018        /// No guarantees are made about the order of the selectors.
17019        ///
17020        /// Prefer using `SolInterface` methods instead.
17021        pub const SELECTORS: &'static [[u8; 32usize]] = &[
17022            [
17023                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
17024                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
17025                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
17026            ],
17027            [
17028                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
17029                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
17030                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
17031            ],
17032            [
17033                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
17034                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
17035                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
17036            ],
17037            [
17038                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
17039                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
17040                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
17041            ],
17042            [
17043                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
17044                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
17045                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
17046            ],
17047            [
17048                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
17049                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
17050                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
17051            ],
17052            [
17053                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
17054                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
17055                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
17056            ],
17057            [
17058                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
17059                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
17060                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
17061            ],
17062        ];
17063        /// The names of the variants in the same order as `SELECTORS`.
17064        pub const VARIANT_NAMES: &'static [&'static str] = &[
17065            ::core::stringify!(NewEpoch),
17066            ::core::stringify!(PermissionedProverRequired),
17067            ::core::stringify!(OwnershipTransferred),
17068            ::core::stringify!(PermissionedProverNotRequired),
17069            ::core::stringify!(NewState),
17070            ::core::stringify!(Upgraded),
17071            ::core::stringify!(Initialized),
17072            ::core::stringify!(Upgrade),
17073        ];
17074        /// The signatures in the same order as `SELECTORS`.
17075        pub const SIGNATURES: &'static [&'static str] = &[
17076            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
17077            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
17078            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
17079            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
17080            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
17081            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
17082            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
17083            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
17084        ];
17085        /// Returns the signature for the given selector, if known.
17086        #[inline]
17087        pub fn signature_by_selector(
17088            selector: [u8; 32usize],
17089        ) -> ::core::option::Option<&'static str> {
17090            match Self::SELECTORS.binary_search(&selector) {
17091                ::core::result::Result::Ok(idx) => {
17092                    ::core::option::Option::Some(Self::SIGNATURES[idx])
17093                }
17094                ::core::result::Result::Err(_) => ::core::option::Option::None,
17095            }
17096        }
17097        /// Returns the enum variant name for the given selector, if known.
17098        #[inline]
17099        pub fn name_by_selector(
17100            selector: [u8; 32usize],
17101        ) -> ::core::option::Option<&'static str> {
17102            let sig = Self::signature_by_selector(selector)?;
17103            sig.split_once('(').map(|(name, _)| name)
17104        }
17105    }
17106    #[automatically_derived]
17107    impl alloy_sol_types::SolEventInterface for LightClientArbitrumV3Events {
17108        const NAME: &'static str = "LightClientArbitrumV3Events";
17109        const COUNT: usize = 8usize;
17110        fn decode_raw_log(
17111            topics: &[alloy_sol_types::Word],
17112            data: &[u8],
17113        ) -> alloy_sol_types::Result<Self> {
17114            match topics.first().copied() {
17115                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17116                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
17117                            topics,
17118                            data,
17119                        )
17120                        .map(Self::Initialized)
17121                }
17122                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17123                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17124                        .map(Self::NewEpoch)
17125                }
17126                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17127                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17128                        .map(Self::NewState)
17129                }
17130                Some(
17131                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17132                ) => {
17133                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
17134                            topics,
17135                            data,
17136                        )
17137                        .map(Self::OwnershipTransferred)
17138                }
17139                Some(
17140                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17141                ) => {
17142                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17143                            topics,
17144                            data,
17145                        )
17146                        .map(Self::PermissionedProverNotRequired)
17147                }
17148                Some(
17149                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17150                ) => {
17151                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17152                            topics,
17153                            data,
17154                        )
17155                        .map(Self::PermissionedProverRequired)
17156                }
17157                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17158                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17159                        .map(Self::Upgrade)
17160                }
17161                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17162                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17163                        .map(Self::Upgraded)
17164                }
17165                _ => {
17166                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
17167                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
17168                        log: alloy_sol_types::private::Box::new(
17169                            alloy_sol_types::private::LogData::new_unchecked(
17170                                topics.to_vec(),
17171                                data.to_vec().into(),
17172                            ),
17173                        ),
17174                    })
17175                }
17176            }
17177        }
17178    }
17179    #[automatically_derived]
17180    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumV3Events {
17181        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
17182            match self {
17183                Self::Initialized(inner) => {
17184                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17185                }
17186                Self::NewEpoch(inner) => {
17187                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17188                }
17189                Self::NewState(inner) => {
17190                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17191                }
17192                Self::OwnershipTransferred(inner) => {
17193                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17194                }
17195                Self::PermissionedProverNotRequired(inner) => {
17196                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17197                }
17198                Self::PermissionedProverRequired(inner) => {
17199                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17200                }
17201                Self::Upgrade(inner) => {
17202                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17203                }
17204                Self::Upgraded(inner) => {
17205                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17206                }
17207            }
17208        }
17209        fn into_log_data(self) -> alloy_sol_types::private::LogData {
17210            match self {
17211                Self::Initialized(inner) => {
17212                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17213                }
17214                Self::NewEpoch(inner) => {
17215                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17216                }
17217                Self::NewState(inner) => {
17218                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17219                }
17220                Self::OwnershipTransferred(inner) => {
17221                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17222                }
17223                Self::PermissionedProverNotRequired(inner) => {
17224                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17225                }
17226                Self::PermissionedProverRequired(inner) => {
17227                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17228                }
17229                Self::Upgrade(inner) => {
17230                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17231                }
17232                Self::Upgraded(inner) => {
17233                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17234                }
17235            }
17236        }
17237    }
17238    use alloy::contract as alloy_contract;
17239    /**Creates a new wrapper around an on-chain [`LightClientArbitrumV3`](self) contract instance.
17240
17241See the [wrapper's documentation](`LightClientArbitrumV3Instance`) for more details.*/
17242    #[inline]
17243    pub const fn new<
17244        P: alloy_contract::private::Provider<N>,
17245        N: alloy_contract::private::Network,
17246    >(
17247        address: alloy_sol_types::private::Address,
17248        __provider: P,
17249    ) -> LightClientArbitrumV3Instance<P, N> {
17250        LightClientArbitrumV3Instance::<P, N>::new(address, __provider)
17251    }
17252    /**Deploys this contract using the given `provider` and constructor arguments, if any.
17253
17254Returns a new instance of the contract, if the deployment was successful.
17255
17256For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17257    #[inline]
17258    pub fn deploy<
17259        P: alloy_contract::private::Provider<N>,
17260        N: alloy_contract::private::Network,
17261    >(
17262        __provider: P,
17263    ) -> impl ::core::future::Future<
17264        Output = alloy_contract::Result<LightClientArbitrumV3Instance<P, N>>,
17265    > {
17266        LightClientArbitrumV3Instance::<P, N>::deploy(__provider)
17267    }
17268    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17269and constructor arguments, if any.
17270
17271This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17272the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17273    #[inline]
17274    pub fn deploy_builder<
17275        P: alloy_contract::private::Provider<N>,
17276        N: alloy_contract::private::Network,
17277    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17278        LightClientArbitrumV3Instance::<P, N>::deploy_builder(__provider)
17279    }
17280    /**A [`LightClientArbitrumV3`](self) instance.
17281
17282Contains type-safe methods for interacting with an on-chain instance of the
17283[`LightClientArbitrumV3`](self) contract located at a given `address`, using a given
17284provider `P`.
17285
17286If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
17287documentation on how to provide it), the `deploy` and `deploy_builder` methods can
17288be used to deploy a new instance of the contract.
17289
17290See the [module-level documentation](self) for all the available methods.*/
17291    #[derive(Clone)]
17292    pub struct LightClientArbitrumV3Instance<P, N = alloy_contract::private::Ethereum> {
17293        address: alloy_sol_types::private::Address,
17294        provider: P,
17295        _network: ::core::marker::PhantomData<N>,
17296    }
17297    #[automatically_derived]
17298    impl<P, N> ::core::fmt::Debug for LightClientArbitrumV3Instance<P, N> {
17299        #[inline]
17300        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
17301            f.debug_tuple("LightClientArbitrumV3Instance").field(&self.address).finish()
17302        }
17303    }
17304    /// Instantiation and getters/setters.
17305    impl<
17306        P: alloy_contract::private::Provider<N>,
17307        N: alloy_contract::private::Network,
17308    > LightClientArbitrumV3Instance<P, N> {
17309        /**Creates a new wrapper around an on-chain [`LightClientArbitrumV3`](self) contract instance.
17310
17311See the [wrapper's documentation](`LightClientArbitrumV3Instance`) for more details.*/
17312        #[inline]
17313        pub const fn new(
17314            address: alloy_sol_types::private::Address,
17315            __provider: P,
17316        ) -> Self {
17317            Self {
17318                address,
17319                provider: __provider,
17320                _network: ::core::marker::PhantomData,
17321            }
17322        }
17323        /**Deploys this contract using the given `provider` and constructor arguments, if any.
17324
17325Returns a new instance of the contract, if the deployment was successful.
17326
17327For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17328        #[inline]
17329        pub async fn deploy(
17330            __provider: P,
17331        ) -> alloy_contract::Result<LightClientArbitrumV3Instance<P, N>> {
17332            let call_builder = Self::deploy_builder(__provider);
17333            let contract_address = call_builder.deploy().await?;
17334            Ok(Self::new(contract_address, call_builder.provider))
17335        }
17336        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17337and constructor arguments, if any.
17338
17339This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17340the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17341        #[inline]
17342        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17343            alloy_contract::RawCallBuilder::new_raw_deploy(
17344                __provider,
17345                ::core::clone::Clone::clone(&BYTECODE),
17346            )
17347        }
17348        /// Returns a reference to the address.
17349        #[inline]
17350        pub const fn address(&self) -> &alloy_sol_types::private::Address {
17351            &self.address
17352        }
17353        /// Sets the address.
17354        #[inline]
17355        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
17356            self.address = address;
17357        }
17358        /// Sets the address and returns `self`.
17359        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
17360            self.set_address(address);
17361            self
17362        }
17363        /// Returns a reference to the provider.
17364        #[inline]
17365        pub const fn provider(&self) -> &P {
17366            &self.provider
17367        }
17368    }
17369    impl<P: ::core::clone::Clone, N> LightClientArbitrumV3Instance<&P, N> {
17370        /// Clones the provider and returns a new instance with the cloned provider.
17371        #[inline]
17372        pub fn with_cloned_provider(self) -> LightClientArbitrumV3Instance<P, N> {
17373            LightClientArbitrumV3Instance {
17374                address: self.address,
17375                provider: ::core::clone::Clone::clone(&self.provider),
17376                _network: ::core::marker::PhantomData,
17377            }
17378        }
17379    }
17380    /// Function calls.
17381    impl<
17382        P: alloy_contract::private::Provider<N>,
17383        N: alloy_contract::private::Network,
17384    > LightClientArbitrumV3Instance<P, N> {
17385        /// Creates a new call builder using this contract instance's provider and address.
17386        ///
17387        /// Note that the call can be any function call, not just those defined in this
17388        /// contract. Prefer using the other methods for building type-safe contract calls.
17389        pub fn call_builder<C: alloy_sol_types::SolCall>(
17390            &self,
17391            call: &C,
17392        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
17393            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
17394        }
17395        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
17396        pub fn UPGRADE_INTERFACE_VERSION(
17397            &self,
17398        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
17399            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
17400        }
17401        ///Creates a new call builder for the [`_getVk`] function.
17402        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
17403            self.call_builder(&_getVkCall)
17404        }
17405        ///Creates a new call builder for the [`authRoot`] function.
17406        pub fn authRoot(&self) -> alloy_contract::SolCallBuilder<&P, authRootCall, N> {
17407            self.call_builder(&authRootCall)
17408        }
17409        ///Creates a new call builder for the [`blocksPerEpoch`] function.
17410        pub fn blocksPerEpoch(
17411            &self,
17412        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
17413            self.call_builder(&blocksPerEpochCall)
17414        }
17415        ///Creates a new call builder for the [`currentBlockNumber`] function.
17416        pub fn currentBlockNumber(
17417            &self,
17418        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
17419            self.call_builder(&currentBlockNumberCall)
17420        }
17421        ///Creates a new call builder for the [`currentEpoch`] function.
17422        pub fn currentEpoch(
17423            &self,
17424        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
17425            self.call_builder(&currentEpochCall)
17426        }
17427        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
17428        pub fn disablePermissionedProverMode(
17429            &self,
17430        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
17431            self.call_builder(&disablePermissionedProverModeCall)
17432        }
17433        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
17434        pub fn epochFromBlockNumber(
17435            &self,
17436            _blockNum: u64,
17437            _blocksPerEpoch: u64,
17438        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
17439            self.call_builder(
17440                &epochFromBlockNumberCall {
17441                    _blockNum,
17442                    _blocksPerEpoch,
17443                },
17444            )
17445        }
17446        ///Creates a new call builder for the [`epochStartBlock`] function.
17447        pub fn epochStartBlock(
17448            &self,
17449        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
17450            self.call_builder(&epochStartBlockCall)
17451        }
17452        ///Creates a new call builder for the [`finalizedState`] function.
17453        pub fn finalizedState(
17454            &self,
17455        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
17456            self.call_builder(&finalizedStateCall)
17457        }
17458        ///Creates a new call builder for the [`genesisStakeTableState`] function.
17459        pub fn genesisStakeTableState(
17460            &self,
17461        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
17462            self.call_builder(&genesisStakeTableStateCall)
17463        }
17464        ///Creates a new call builder for the [`genesisState`] function.
17465        pub fn genesisState(
17466            &self,
17467        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
17468            self.call_builder(&genesisStateCall)
17469        }
17470        ///Creates a new call builder for the [`getHotShotCommitment`] function.
17471        pub fn getHotShotCommitment(
17472            &self,
17473            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
17474        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
17475            self.call_builder(
17476                &getHotShotCommitmentCall {
17477                    hotShotBlockHeight,
17478                },
17479            )
17480        }
17481        ///Creates a new call builder for the [`getStateHistoryCount`] function.
17482        pub fn getStateHistoryCount(
17483            &self,
17484        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
17485            self.call_builder(&getStateHistoryCountCall)
17486        }
17487        ///Creates a new call builder for the [`getVersion`] function.
17488        pub fn getVersion(
17489            &self,
17490        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
17491            self.call_builder(&getVersionCall)
17492        }
17493        ///Creates a new call builder for the [`initialize`] function.
17494        pub fn initialize(
17495            &self,
17496            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17497            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17498            _stateHistoryRetentionPeriod: u32,
17499            owner: alloy::sol_types::private::Address,
17500        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
17501            self.call_builder(
17502                &initializeCall {
17503                    _genesis,
17504                    _genesisStakeTableState,
17505                    _stateHistoryRetentionPeriod,
17506                    owner,
17507                },
17508            )
17509        }
17510        ///Creates a new call builder for the [`initializeV2`] function.
17511        pub fn initializeV2(
17512            &self,
17513            _blocksPerEpoch: u64,
17514            _epochStartBlock: u64,
17515        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
17516            self.call_builder(
17517                &initializeV2Call {
17518                    _blocksPerEpoch,
17519                    _epochStartBlock,
17520                },
17521            )
17522        }
17523        ///Creates a new call builder for the [`initializeV3`] function.
17524        pub fn initializeV3(
17525            &self,
17526        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
17527            self.call_builder(&initializeV3Call)
17528        }
17529        ///Creates a new call builder for the [`isEpochRoot`] function.
17530        pub fn isEpochRoot(
17531            &self,
17532            blockHeight: u64,
17533        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
17534            self.call_builder(&isEpochRootCall { blockHeight })
17535        }
17536        ///Creates a new call builder for the [`isGtEpochRoot`] function.
17537        pub fn isGtEpochRoot(
17538            &self,
17539            blockHeight: u64,
17540        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
17541            self.call_builder(&isGtEpochRootCall { blockHeight })
17542        }
17543        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
17544        pub fn isPermissionedProverEnabled(
17545            &self,
17546        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
17547            self.call_builder(&isPermissionedProverEnabledCall)
17548        }
17549        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
17550        pub fn lagOverEscapeHatchThreshold(
17551            &self,
17552            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
17553            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
17554        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
17555            self.call_builder(
17556                &lagOverEscapeHatchThresholdCall {
17557                    blockNumber,
17558                    blockThreshold,
17559                },
17560            )
17561        }
17562        ///Creates a new call builder for the [`newFinalizedState_0`] function.
17563        pub fn newFinalizedState_0(
17564            &self,
17565            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17566            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17567        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
17568            self.call_builder(&newFinalizedState_0Call { _0, _1 })
17569        }
17570        ///Creates a new call builder for the [`newFinalizedState_1`] function.
17571        pub fn newFinalizedState_1(
17572            &self,
17573            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17574            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17575            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17576        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
17577            self.call_builder(
17578                &newFinalizedState_1Call {
17579                    _0,
17580                    _1,
17581                    _2,
17582                },
17583            )
17584        }
17585        ///Creates a new call builder for the [`newFinalizedState_2`] function.
17586        pub fn newFinalizedState_2(
17587            &self,
17588            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17589            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17590            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
17591            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17592        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_2Call, N> {
17593            self.call_builder(
17594                &newFinalizedState_2Call {
17595                    newState,
17596                    nextStakeTable,
17597                    newAuthRoot,
17598                    proof,
17599                },
17600            )
17601        }
17602        ///Creates a new call builder for the [`owner`] function.
17603        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
17604            self.call_builder(&ownerCall)
17605        }
17606        ///Creates a new call builder for the [`permissionedProver`] function.
17607        pub fn permissionedProver(
17608            &self,
17609        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
17610            self.call_builder(&permissionedProverCall)
17611        }
17612        ///Creates a new call builder for the [`proxiableUUID`] function.
17613        pub fn proxiableUUID(
17614            &self,
17615        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
17616            self.call_builder(&proxiableUUIDCall)
17617        }
17618        ///Creates a new call builder for the [`renounceOwnership`] function.
17619        pub fn renounceOwnership(
17620            &self,
17621        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
17622            self.call_builder(&renounceOwnershipCall)
17623        }
17624        ///Creates a new call builder for the [`setPermissionedProver`] function.
17625        pub fn setPermissionedProver(
17626            &self,
17627            prover: alloy::sol_types::private::Address,
17628        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
17629            self.call_builder(
17630                &setPermissionedProverCall {
17631                    prover,
17632                },
17633            )
17634        }
17635        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
17636        pub fn setStateHistoryRetentionPeriod(
17637            &self,
17638            historySeconds: u32,
17639        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
17640            self.call_builder(
17641                &setStateHistoryRetentionPeriodCall {
17642                    historySeconds,
17643                },
17644            )
17645        }
17646        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
17647        pub fn setstateHistoryRetentionPeriod(
17648            &self,
17649            historySeconds: u32,
17650        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
17651            self.call_builder(
17652                &setstateHistoryRetentionPeriodCall {
17653                    historySeconds,
17654                },
17655            )
17656        }
17657        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
17658        pub fn stateHistoryCommitments(
17659            &self,
17660            _0: alloy::sol_types::private::primitives::aliases::U256,
17661        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
17662            self.call_builder(&stateHistoryCommitmentsCall(_0))
17663        }
17664        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
17665        pub fn stateHistoryFirstIndex(
17666            &self,
17667        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
17668            self.call_builder(&stateHistoryFirstIndexCall)
17669        }
17670        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
17671        pub fn stateHistoryRetentionPeriod(
17672            &self,
17673        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
17674            self.call_builder(&stateHistoryRetentionPeriodCall)
17675        }
17676        ///Creates a new call builder for the [`transferOwnership`] function.
17677        pub fn transferOwnership(
17678            &self,
17679            newOwner: alloy::sol_types::private::Address,
17680        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
17681            self.call_builder(&transferOwnershipCall { newOwner })
17682        }
17683        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
17684        pub fn updateEpochStartBlock(
17685            &self,
17686            newEpochStartBlock: u64,
17687        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
17688            self.call_builder(
17689                &updateEpochStartBlockCall {
17690                    newEpochStartBlock,
17691                },
17692            )
17693        }
17694        ///Creates a new call builder for the [`upgradeToAndCall`] function.
17695        pub fn upgradeToAndCall(
17696            &self,
17697            newImplementation: alloy::sol_types::private::Address,
17698            data: alloy::sol_types::private::Bytes,
17699        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
17700            self.call_builder(
17701                &upgradeToAndCallCall {
17702                    newImplementation,
17703                    data,
17704                },
17705            )
17706        }
17707        ///Creates a new call builder for the [`votingStakeTableState`] function.
17708        pub fn votingStakeTableState(
17709            &self,
17710        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
17711            self.call_builder(&votingStakeTableStateCall)
17712        }
17713    }
17714    /// Event filters.
17715    impl<
17716        P: alloy_contract::private::Provider<N>,
17717        N: alloy_contract::private::Network,
17718    > LightClientArbitrumV3Instance<P, N> {
17719        /// Creates a new event filter using this contract instance's provider and address.
17720        ///
17721        /// Note that the type can be any event, not just those defined in this contract.
17722        /// Prefer using the other methods for building type-safe event filters.
17723        pub fn event_filter<E: alloy_sol_types::SolEvent>(
17724            &self,
17725        ) -> alloy_contract::Event<&P, E, N> {
17726            alloy_contract::Event::new_sol(&self.provider, &self.address)
17727        }
17728        ///Creates a new event filter for the [`Initialized`] event.
17729        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
17730            self.event_filter::<Initialized>()
17731        }
17732        ///Creates a new event filter for the [`NewEpoch`] event.
17733        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
17734            self.event_filter::<NewEpoch>()
17735        }
17736        ///Creates a new event filter for the [`NewState`] event.
17737        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
17738            self.event_filter::<NewState>()
17739        }
17740        ///Creates a new event filter for the [`OwnershipTransferred`] event.
17741        pub fn OwnershipTransferred_filter(
17742            &self,
17743        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
17744            self.event_filter::<OwnershipTransferred>()
17745        }
17746        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
17747        pub fn PermissionedProverNotRequired_filter(
17748            &self,
17749        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
17750            self.event_filter::<PermissionedProverNotRequired>()
17751        }
17752        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
17753        pub fn PermissionedProverRequired_filter(
17754            &self,
17755        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
17756            self.event_filter::<PermissionedProverRequired>()
17757        }
17758        ///Creates a new event filter for the [`Upgrade`] event.
17759        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
17760            self.event_filter::<Upgrade>()
17761        }
17762        ///Creates a new event filter for the [`Upgraded`] event.
17763        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
17764            self.event_filter::<Upgraded>()
17765        }
17766    }
17767}