hotshot_contract_adapter/bindings/
lightclientv3.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(Default, Debug, PartialEq, Eq, Hash)]
22    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23    #[derive(Clone)]
24    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
25    const _: () = {
26        use alloy::sol_types as alloy_sol_types;
27        #[automatically_derived]
28        impl alloy_sol_types::private::SolTypeValue<BaseField>
29        for alloy::sol_types::private::primitives::aliases::U256 {
30            #[inline]
31            fn stv_to_tokens(
32                &self,
33            ) -> <alloy::sol_types::sol_data::Uint<
34                256,
35            > as alloy_sol_types::SolType>::Token<'_> {
36                alloy_sol_types::private::SolTypeValue::<
37                    alloy::sol_types::sol_data::Uint<256>,
38                >::stv_to_tokens(self)
39            }
40            #[inline]
41            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
42                <alloy::sol_types::sol_data::Uint<
43                    256,
44                > as alloy_sol_types::SolType>::tokenize(self)
45                    .0
46            }
47            #[inline]
48            fn stv_abi_encode_packed_to(
49                &self,
50                out: &mut alloy_sol_types::private::Vec<u8>,
51            ) {
52                <alloy::sol_types::sol_data::Uint<
53                    256,
54                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
55            }
56            #[inline]
57            fn stv_abi_packed_encoded_size(&self) -> usize {
58                <alloy::sol_types::sol_data::Uint<
59                    256,
60                > as alloy_sol_types::SolType>::abi_encoded_size(self)
61            }
62        }
63        #[automatically_derived]
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(
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(
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 alloy_sol_types::SolType for BaseField {
96            type RustType = alloy::sol_types::private::primitives::aliases::U256;
97            type Token<'a> = <alloy::sol_types::sol_data::Uint<
98                256,
99            > as alloy_sol_types::SolType>::Token<'a>;
100            const SOL_NAME: &'static str = Self::NAME;
101            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
102                256,
103            > as alloy_sol_types::SolType>::ENCODED_SIZE;
104            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
105                256,
106            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
107            #[inline]
108            fn valid_token(token: &Self::Token<'_>) -> bool {
109                Self::type_check(token).is_ok()
110            }
111            #[inline]
112            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
113                <alloy::sol_types::sol_data::Uint<
114                    256,
115                > as alloy_sol_types::SolType>::type_check(token)
116            }
117            #[inline]
118            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
119                <alloy::sol_types::sol_data::Uint<
120                    256,
121                > as alloy_sol_types::SolType>::detokenize(token)
122            }
123        }
124        #[automatically_derived]
125        impl alloy_sol_types::EventTopic for BaseField {
126            #[inline]
127            fn topic_preimage_length(rust: &Self::RustType) -> usize {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
131            }
132            #[inline]
133            fn encode_topic_preimage(
134                rust: &Self::RustType,
135                out: &mut alloy_sol_types::private::Vec<u8>,
136            ) {
137                <alloy::sol_types::sol_data::Uint<
138                    256,
139                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
140            }
141            #[inline]
142            fn encode_topic(
143                rust: &Self::RustType,
144            ) -> alloy_sol_types::abi::token::WordToken {
145                <alloy::sol_types::sol_data::Uint<
146                    256,
147                > as alloy_sol_types::EventTopic>::encode_topic(rust)
148            }
149        }
150    };
151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
153    #[derive(Clone)]
154    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
155    const _: () = {
156        use alloy::sol_types as alloy_sol_types;
157        #[automatically_derived]
158        impl alloy_sol_types::private::SolTypeValue<ScalarField>
159        for alloy::sol_types::private::primitives::aliases::U256 {
160            #[inline]
161            fn stv_to_tokens(
162                &self,
163            ) -> <alloy::sol_types::sol_data::Uint<
164                256,
165            > as alloy_sol_types::SolType>::Token<'_> {
166                alloy_sol_types::private::SolTypeValue::<
167                    alloy::sol_types::sol_data::Uint<256>,
168                >::stv_to_tokens(self)
169            }
170            #[inline]
171            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
172                <alloy::sol_types::sol_data::Uint<
173                    256,
174                > as alloy_sol_types::SolType>::tokenize(self)
175                    .0
176            }
177            #[inline]
178            fn stv_abi_encode_packed_to(
179                &self,
180                out: &mut alloy_sol_types::private::Vec<u8>,
181            ) {
182                <alloy::sol_types::sol_data::Uint<
183                    256,
184                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
185            }
186            #[inline]
187            fn stv_abi_packed_encoded_size(&self) -> usize {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::abi_encoded_size(self)
191            }
192        }
193        #[automatically_derived]
194        impl ScalarField {
195            /// The Solidity type name.
196            pub const NAME: &'static str = stringify!(@ name);
197            /// Convert from the underlying value type.
198            #[inline]
199            pub const fn from(
200                value: alloy::sol_types::private::primitives::aliases::U256,
201            ) -> Self {
202                Self(value)
203            }
204            /// Return the underlying value.
205            #[inline]
206            pub const fn into(
207                self,
208            ) -> alloy::sol_types::private::primitives::aliases::U256 {
209                self.0
210            }
211            /// Return the single encoding of this value, delegating to the
212            /// underlying type.
213            #[inline]
214            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
215                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
216            }
217            /// Return the packed encoding of this value, delegating to the
218            /// underlying type.
219            #[inline]
220            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
221                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
222            }
223        }
224        #[automatically_derived]
225        impl alloy_sol_types::SolType for ScalarField {
226            type RustType = alloy::sol_types::private::primitives::aliases::U256;
227            type Token<'a> = <alloy::sol_types::sol_data::Uint<
228                256,
229            > as alloy_sol_types::SolType>::Token<'a>;
230            const SOL_NAME: &'static str = Self::NAME;
231            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
232                256,
233            > as alloy_sol_types::SolType>::ENCODED_SIZE;
234            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
235                256,
236            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
237            #[inline]
238            fn valid_token(token: &Self::Token<'_>) -> bool {
239                Self::type_check(token).is_ok()
240            }
241            #[inline]
242            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
243                <alloy::sol_types::sol_data::Uint<
244                    256,
245                > as alloy_sol_types::SolType>::type_check(token)
246            }
247            #[inline]
248            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
249                <alloy::sol_types::sol_data::Uint<
250                    256,
251                > as alloy_sol_types::SolType>::detokenize(token)
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::EventTopic for ScalarField {
256            #[inline]
257            fn topic_preimage_length(rust: &Self::RustType) -> usize {
258                <alloy::sol_types::sol_data::Uint<
259                    256,
260                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
261            }
262            #[inline]
263            fn encode_topic_preimage(
264                rust: &Self::RustType,
265                out: &mut alloy_sol_types::private::Vec<u8>,
266            ) {
267                <alloy::sol_types::sol_data::Uint<
268                    256,
269                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
270            }
271            #[inline]
272            fn encode_topic(
273                rust: &Self::RustType,
274            ) -> alloy_sol_types::abi::token::WordToken {
275                <alloy::sol_types::sol_data::Uint<
276                    256,
277                > as alloy_sol_types::EventTopic>::encode_topic(rust)
278            }
279        }
280    };
281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
282    /**```solidity
283struct G1Point { BaseField x; BaseField y; }
284```*/
285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
286    #[derive(Clone)]
287    pub struct G1Point {
288        #[allow(missing_docs)]
289        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
290        #[allow(missing_docs)]
291        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
292    }
293    #[allow(
294        non_camel_case_types,
295        non_snake_case,
296        clippy::pub_underscore_fields,
297        clippy::style
298    )]
299    const _: () = {
300        use alloy::sol_types as alloy_sol_types;
301        #[doc(hidden)]
302        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
303        #[doc(hidden)]
304        type UnderlyingRustTuple<'a> = (
305            <BaseField as alloy::sol_types::SolType>::RustType,
306            <BaseField as alloy::sol_types::SolType>::RustType,
307        );
308        #[cfg(test)]
309        #[allow(dead_code, unreachable_patterns)]
310        fn _type_assertion(
311            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
312        ) {
313            match _t {
314                alloy_sol_types::private::AssertTypeEq::<
315                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
316                >(_) => {}
317            }
318        }
319        #[automatically_derived]
320        #[doc(hidden)]
321        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
322            fn from(value: G1Point) -> Self {
323                (value.x, value.y)
324            }
325        }
326        #[automatically_derived]
327        #[doc(hidden)]
328        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
329            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
330                Self { x: tuple.0, y: tuple.1 }
331            }
332        }
333        #[automatically_derived]
334        impl alloy_sol_types::SolValue for G1Point {
335            type SolType = Self;
336        }
337        #[automatically_derived]
338        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
339            #[inline]
340            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
341                (
342                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
343                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
344                )
345            }
346            #[inline]
347            fn stv_abi_encoded_size(&self) -> usize {
348                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
349                    return size;
350                }
351                let tuple = <UnderlyingRustTuple<
352                    '_,
353                > as ::core::convert::From<Self>>::from(self.clone());
354                <UnderlyingSolTuple<
355                    '_,
356                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
357            }
358            #[inline]
359            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
360                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
361            }
362            #[inline]
363            fn stv_abi_encode_packed_to(
364                &self,
365                out: &mut alloy_sol_types::private::Vec<u8>,
366            ) {
367                let tuple = <UnderlyingRustTuple<
368                    '_,
369                > as ::core::convert::From<Self>>::from(self.clone());
370                <UnderlyingSolTuple<
371                    '_,
372                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
373            }
374            #[inline]
375            fn stv_abi_packed_encoded_size(&self) -> usize {
376                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
377                    return size;
378                }
379                let tuple = <UnderlyingRustTuple<
380                    '_,
381                > as ::core::convert::From<Self>>::from(self.clone());
382                <UnderlyingSolTuple<
383                    '_,
384                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
385            }
386        }
387        #[automatically_derived]
388        impl alloy_sol_types::SolType for G1Point {
389            type RustType = Self;
390            type Token<'a> = <UnderlyingSolTuple<
391                'a,
392            > as alloy_sol_types::SolType>::Token<'a>;
393            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
394            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
395                '_,
396            > as alloy_sol_types::SolType>::ENCODED_SIZE;
397            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
398                '_,
399            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
400            #[inline]
401            fn valid_token(token: &Self::Token<'_>) -> bool {
402                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
403            }
404            #[inline]
405            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
406                let tuple = <UnderlyingSolTuple<
407                    '_,
408                > as alloy_sol_types::SolType>::detokenize(token);
409                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
410            }
411        }
412        #[automatically_derived]
413        impl alloy_sol_types::SolStruct for G1Point {
414            const NAME: &'static str = "G1Point";
415            #[inline]
416            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
417                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
418            }
419            #[inline]
420            fn eip712_components() -> alloy_sol_types::private::Vec<
421                alloy_sol_types::private::Cow<'static, str>,
422            > {
423                alloy_sol_types::private::Vec::new()
424            }
425            #[inline]
426            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
427                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
428            }
429            #[inline]
430            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
431                [
432                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
433                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
434                ]
435                    .concat()
436            }
437        }
438        #[automatically_derived]
439        impl alloy_sol_types::EventTopic for G1Point {
440            #[inline]
441            fn topic_preimage_length(rust: &Self::RustType) -> usize {
442                0usize
443                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
444                        &rust.x,
445                    )
446                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
447                        &rust.y,
448                    )
449            }
450            #[inline]
451            fn encode_topic_preimage(
452                rust: &Self::RustType,
453                out: &mut alloy_sol_types::private::Vec<u8>,
454            ) {
455                out.reserve(
456                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
457                );
458                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
459                    &rust.x,
460                    out,
461                );
462                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
463                    &rust.y,
464                    out,
465                );
466            }
467            #[inline]
468            fn encode_topic(
469                rust: &Self::RustType,
470            ) -> alloy_sol_types::abi::token::WordToken {
471                let mut out = alloy_sol_types::private::Vec::new();
472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
473                    rust,
474                    &mut out,
475                );
476                alloy_sol_types::abi::token::WordToken(
477                    alloy_sol_types::private::keccak256(out),
478                )
479            }
480        }
481    };
482    use alloy::contract as alloy_contract;
483    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
484
485See the [wrapper's documentation](`BN254Instance`) for more details.*/
486    #[inline]
487    pub const fn new<
488        T: alloy_contract::private::Transport + ::core::clone::Clone,
489        P: alloy_contract::private::Provider<T, N>,
490        N: alloy_contract::private::Network,
491    >(
492        address: alloy_sol_types::private::Address,
493        provider: P,
494    ) -> BN254Instance<T, P, N> {
495        BN254Instance::<T, P, N>::new(address, provider)
496    }
497    /**A [`BN254`](self) instance.
498
499Contains type-safe methods for interacting with an on-chain instance of the
500[`BN254`](self) contract located at a given `address`, using a given
501provider `P`.
502
503If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
504documentation on how to provide it), the `deploy` and `deploy_builder` methods can
505be used to deploy a new instance of the contract.
506
507See the [module-level documentation](self) for all the available methods.*/
508    #[derive(Clone)]
509    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
510        address: alloy_sol_types::private::Address,
511        provider: P,
512        _network_transport: ::core::marker::PhantomData<(N, T)>,
513    }
514    #[automatically_derived]
515    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
516        #[inline]
517        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
518            f.debug_tuple("BN254Instance").field(&self.address).finish()
519        }
520    }
521    /// Instantiation and getters/setters.
522    #[automatically_derived]
523    impl<
524        T: alloy_contract::private::Transport + ::core::clone::Clone,
525        P: alloy_contract::private::Provider<T, N>,
526        N: alloy_contract::private::Network,
527    > BN254Instance<T, P, N> {
528        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
529
530See the [wrapper's documentation](`BN254Instance`) for more details.*/
531        #[inline]
532        pub const fn new(
533            address: alloy_sol_types::private::Address,
534            provider: P,
535        ) -> Self {
536            Self {
537                address,
538                provider,
539                _network_transport: ::core::marker::PhantomData,
540            }
541        }
542        /// Returns a reference to the address.
543        #[inline]
544        pub const fn address(&self) -> &alloy_sol_types::private::Address {
545            &self.address
546        }
547        /// Sets the address.
548        #[inline]
549        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
550            self.address = address;
551        }
552        /// Sets the address and returns `self`.
553        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
554            self.set_address(address);
555            self
556        }
557        /// Returns a reference to the provider.
558        #[inline]
559        pub const fn provider(&self) -> &P {
560            &self.provider
561        }
562    }
563    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
564        /// Clones the provider and returns a new instance with the cloned provider.
565        #[inline]
566        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
567            BN254Instance {
568                address: self.address,
569                provider: ::core::clone::Clone::clone(&self.provider),
570                _network_transport: ::core::marker::PhantomData,
571            }
572        }
573    }
574    /// Function calls.
575    #[automatically_derived]
576    impl<
577        T: alloy_contract::private::Transport + ::core::clone::Clone,
578        P: alloy_contract::private::Provider<T, N>,
579        N: alloy_contract::private::Network,
580    > BN254Instance<T, P, N> {
581        /// Creates a new call builder using this contract instance's provider and address.
582        ///
583        /// Note that the call can be any function call, not just those defined in this
584        /// contract. Prefer using the other methods for building type-safe contract calls.
585        pub fn call_builder<C: alloy_sol_types::SolCall>(
586            &self,
587            call: &C,
588        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
589            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
590        }
591    }
592    /// Event filters.
593    #[automatically_derived]
594    impl<
595        T: alloy_contract::private::Transport + ::core::clone::Clone,
596        P: alloy_contract::private::Provider<T, N>,
597        N: alloy_contract::private::Network,
598    > BN254Instance<T, P, N> {
599        /// Creates a new event filter using this contract instance's provider and address.
600        ///
601        /// Note that the type can be any event, not just those defined in this contract.
602        /// Prefer using the other methods for building type-safe event filters.
603        pub fn event_filter<E: alloy_sol_types::SolEvent>(
604            &self,
605        ) -> alloy_contract::Event<T, &P, E, N> {
606            alloy_contract::Event::new_sol(&self.provider, &self.address)
607        }
608    }
609}
610///Module containing a contract's types and functions.
611/**
612
613```solidity
614library IPlonkVerifier {
615    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; }
616    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; }
617}
618```*/
619#[allow(
620    non_camel_case_types,
621    non_snake_case,
622    clippy::pub_underscore_fields,
623    clippy::style,
624    clippy::empty_structs_with_brackets
625)]
626pub mod IPlonkVerifier {
627    use super::*;
628    use alloy::sol_types as alloy_sol_types;
629    #[derive()]
630    /**```solidity
631struct 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; }
632```*/
633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
634    #[derive(Clone)]
635    pub struct PlonkProof {
636        #[allow(missing_docs)]
637        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
638        #[allow(missing_docs)]
639        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
640        #[allow(missing_docs)]
641        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
642        #[allow(missing_docs)]
643        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
644        #[allow(missing_docs)]
645        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
646        #[allow(missing_docs)]
647        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
648        #[allow(missing_docs)]
649        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
650        #[allow(missing_docs)]
651        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
652        #[allow(missing_docs)]
653        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
654        #[allow(missing_docs)]
655        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
656        #[allow(missing_docs)]
657        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
658        #[allow(missing_docs)]
659        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
660        #[allow(missing_docs)]
661        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
662        #[allow(missing_docs)]
663        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682    }
683    #[allow(
684        non_camel_case_types,
685        non_snake_case,
686        clippy::pub_underscore_fields,
687        clippy::style
688    )]
689    const _: () = {
690        use alloy::sol_types as alloy_sol_types;
691        #[doc(hidden)]
692        type UnderlyingSolTuple<'a> = (
693            BN254::G1Point,
694            BN254::G1Point,
695            BN254::G1Point,
696            BN254::G1Point,
697            BN254::G1Point,
698            BN254::G1Point,
699            BN254::G1Point,
700            BN254::G1Point,
701            BN254::G1Point,
702            BN254::G1Point,
703            BN254::G1Point,
704            BN254::G1Point,
705            BN254::G1Point,
706            BN254::ScalarField,
707            BN254::ScalarField,
708            BN254::ScalarField,
709            BN254::ScalarField,
710            BN254::ScalarField,
711            BN254::ScalarField,
712            BN254::ScalarField,
713            BN254::ScalarField,
714            BN254::ScalarField,
715            BN254::ScalarField,
716        );
717        #[doc(hidden)]
718        type UnderlyingRustTuple<'a> = (
719            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
720            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
721            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
722            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
723            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
724            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
725            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
726            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
727            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
728            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
729            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
730            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
731            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
732            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
733            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
734            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
735            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
736            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
737            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
738            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
739            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
740            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
741            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
742        );
743        #[cfg(test)]
744        #[allow(dead_code, unreachable_patterns)]
745        fn _type_assertion(
746            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
747        ) {
748            match _t {
749                alloy_sol_types::private::AssertTypeEq::<
750                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
751                >(_) => {}
752            }
753        }
754        #[automatically_derived]
755        #[doc(hidden)]
756        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
757            fn from(value: PlonkProof) -> Self {
758                (
759                    value.wire0,
760                    value.wire1,
761                    value.wire2,
762                    value.wire3,
763                    value.wire4,
764                    value.prodPerm,
765                    value.split0,
766                    value.split1,
767                    value.split2,
768                    value.split3,
769                    value.split4,
770                    value.zeta,
771                    value.zetaOmega,
772                    value.wireEval0,
773                    value.wireEval1,
774                    value.wireEval2,
775                    value.wireEval3,
776                    value.wireEval4,
777                    value.sigmaEval0,
778                    value.sigmaEval1,
779                    value.sigmaEval2,
780                    value.sigmaEval3,
781                    value.prodPermZetaOmegaEval,
782                )
783            }
784        }
785        #[automatically_derived]
786        #[doc(hidden)]
787        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
788            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
789                Self {
790                    wire0: tuple.0,
791                    wire1: tuple.1,
792                    wire2: tuple.2,
793                    wire3: tuple.3,
794                    wire4: tuple.4,
795                    prodPerm: tuple.5,
796                    split0: tuple.6,
797                    split1: tuple.7,
798                    split2: tuple.8,
799                    split3: tuple.9,
800                    split4: tuple.10,
801                    zeta: tuple.11,
802                    zetaOmega: tuple.12,
803                    wireEval0: tuple.13,
804                    wireEval1: tuple.14,
805                    wireEval2: tuple.15,
806                    wireEval3: tuple.16,
807                    wireEval4: tuple.17,
808                    sigmaEval0: tuple.18,
809                    sigmaEval1: tuple.19,
810                    sigmaEval2: tuple.20,
811                    sigmaEval3: tuple.21,
812                    prodPermZetaOmegaEval: tuple.22,
813                }
814            }
815        }
816        #[automatically_derived]
817        impl alloy_sol_types::SolValue for PlonkProof {
818            type SolType = Self;
819        }
820        #[automatically_derived]
821        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
822            #[inline]
823            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
824                (
825                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
826                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
827                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
828                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
829                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
830                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
831                        &self.prodPerm,
832                    ),
833                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
834                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
835                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
836                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
837                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
838                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
839                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
840                        &self.zetaOmega,
841                    ),
842                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
843                        &self.wireEval0,
844                    ),
845                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
846                        &self.wireEval1,
847                    ),
848                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
849                        &self.wireEval2,
850                    ),
851                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
852                        &self.wireEval3,
853                    ),
854                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
855                        &self.wireEval4,
856                    ),
857                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
858                        &self.sigmaEval0,
859                    ),
860                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
861                        &self.sigmaEval1,
862                    ),
863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
864                        &self.sigmaEval2,
865                    ),
866                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
867                        &self.sigmaEval3,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.prodPermZetaOmegaEval,
871                    ),
872                )
873            }
874            #[inline]
875            fn stv_abi_encoded_size(&self) -> usize {
876                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
877                    return size;
878                }
879                let tuple = <UnderlyingRustTuple<
880                    '_,
881                > as ::core::convert::From<Self>>::from(self.clone());
882                <UnderlyingSolTuple<
883                    '_,
884                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
885            }
886            #[inline]
887            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
888                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
889            }
890            #[inline]
891            fn stv_abi_encode_packed_to(
892                &self,
893                out: &mut alloy_sol_types::private::Vec<u8>,
894            ) {
895                let tuple = <UnderlyingRustTuple<
896                    '_,
897                > as ::core::convert::From<Self>>::from(self.clone());
898                <UnderlyingSolTuple<
899                    '_,
900                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
901            }
902            #[inline]
903            fn stv_abi_packed_encoded_size(&self) -> usize {
904                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
905                    return size;
906                }
907                let tuple = <UnderlyingRustTuple<
908                    '_,
909                > as ::core::convert::From<Self>>::from(self.clone());
910                <UnderlyingSolTuple<
911                    '_,
912                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::SolType for PlonkProof {
917            type RustType = Self;
918            type Token<'a> = <UnderlyingSolTuple<
919                'a,
920            > as alloy_sol_types::SolType>::Token<'a>;
921            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
922            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
923                '_,
924            > as alloy_sol_types::SolType>::ENCODED_SIZE;
925            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
926                '_,
927            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
928            #[inline]
929            fn valid_token(token: &Self::Token<'_>) -> bool {
930                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
931            }
932            #[inline]
933            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
934                let tuple = <UnderlyingSolTuple<
935                    '_,
936                > as alloy_sol_types::SolType>::detokenize(token);
937                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolStruct for PlonkProof {
942            const NAME: &'static str = "PlonkProof";
943            #[inline]
944            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
945                alloy_sol_types::private::Cow::Borrowed(
946                    "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,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
947                )
948            }
949            #[inline]
950            fn eip712_components() -> alloy_sol_types::private::Vec<
951                alloy_sol_types::private::Cow<'static, str>,
952            > {
953                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
954                components
955                    .push(
956                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
957                    );
958                components
959                    .extend(
960                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
961                    );
962                components
963                    .push(
964                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
965                    );
966                components
967                    .extend(
968                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
969                    );
970                components
971                    .push(
972                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
973                    );
974                components
975                    .extend(
976                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
977                    );
978                components
979                    .push(
980                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
981                    );
982                components
983                    .extend(
984                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
985                    );
986                components
987                    .push(
988                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
989                    );
990                components
991                    .extend(
992                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
993                    );
994                components
995                    .push(
996                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
997                    );
998                components
999                    .extend(
1000                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1001                    );
1002                components
1003                    .push(
1004                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1005                    );
1006                components
1007                    .extend(
1008                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1009                    );
1010                components
1011                    .push(
1012                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1013                    );
1014                components
1015                    .extend(
1016                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1017                    );
1018                components
1019                    .push(
1020                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1021                    );
1022                components
1023                    .extend(
1024                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1025                    );
1026                components
1027                    .push(
1028                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1029                    );
1030                components
1031                    .extend(
1032                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1033                    );
1034                components
1035                    .push(
1036                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1037                    );
1038                components
1039                    .extend(
1040                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1041                    );
1042                components
1043                    .push(
1044                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1045                    );
1046                components
1047                    .extend(
1048                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1049                    );
1050                components
1051                    .push(
1052                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1053                    );
1054                components
1055                    .extend(
1056                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1057                    );
1058                components
1059            }
1060            #[inline]
1061            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1062                [
1063                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1064                            &self.wire0,
1065                        )
1066                        .0,
1067                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1068                            &self.wire1,
1069                        )
1070                        .0,
1071                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1072                            &self.wire2,
1073                        )
1074                        .0,
1075                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1076                            &self.wire3,
1077                        )
1078                        .0,
1079                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1080                            &self.wire4,
1081                        )
1082                        .0,
1083                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1084                            &self.prodPerm,
1085                        )
1086                        .0,
1087                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1088                            &self.split0,
1089                        )
1090                        .0,
1091                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1092                            &self.split1,
1093                        )
1094                        .0,
1095                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1096                            &self.split2,
1097                        )
1098                        .0,
1099                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1100                            &self.split3,
1101                        )
1102                        .0,
1103                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1104                            &self.split4,
1105                        )
1106                        .0,
1107                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1108                            &self.zeta,
1109                        )
1110                        .0,
1111                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1112                            &self.zetaOmega,
1113                        )
1114                        .0,
1115                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1116                            &self.wireEval0,
1117                        )
1118                        .0,
1119                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1120                            &self.wireEval1,
1121                        )
1122                        .0,
1123                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1124                            &self.wireEval2,
1125                        )
1126                        .0,
1127                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1128                            &self.wireEval3,
1129                        )
1130                        .0,
1131                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1132                            &self.wireEval4,
1133                        )
1134                        .0,
1135                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1136                            &self.sigmaEval0,
1137                        )
1138                        .0,
1139                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1140                            &self.sigmaEval1,
1141                        )
1142                        .0,
1143                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1144                            &self.sigmaEval2,
1145                        )
1146                        .0,
1147                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1148                            &self.sigmaEval3,
1149                        )
1150                        .0,
1151                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1152                            &self.prodPermZetaOmegaEval,
1153                        )
1154                        .0,
1155                ]
1156                    .concat()
1157            }
1158        }
1159        #[automatically_derived]
1160        impl alloy_sol_types::EventTopic for PlonkProof {
1161            #[inline]
1162            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1163                0usize
1164                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1165                        &rust.wire0,
1166                    )
1167                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1168                        &rust.wire1,
1169                    )
1170                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1171                        &rust.wire2,
1172                    )
1173                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1174                        &rust.wire3,
1175                    )
1176                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1177                        &rust.wire4,
1178                    )
1179                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1180                        &rust.prodPerm,
1181                    )
1182                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1183                        &rust.split0,
1184                    )
1185                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1186                        &rust.split1,
1187                    )
1188                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1189                        &rust.split2,
1190                    )
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.split3,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.split4,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.zeta,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.zetaOmega,
1202                    )
1203                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wireEval0,
1205                    )
1206                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.wireEval1,
1208                    )
1209                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.wireEval2,
1211                    )
1212                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.wireEval3,
1214                    )
1215                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.wireEval4,
1217                    )
1218                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.sigmaEval0,
1220                    )
1221                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.sigmaEval1,
1223                    )
1224                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.sigmaEval2,
1226                    )
1227                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.sigmaEval3,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.prodPermZetaOmegaEval,
1232                    )
1233            }
1234            #[inline]
1235            fn encode_topic_preimage(
1236                rust: &Self::RustType,
1237                out: &mut alloy_sol_types::private::Vec<u8>,
1238            ) {
1239                out.reserve(
1240                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1241                );
1242                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1243                    &rust.wire0,
1244                    out,
1245                );
1246                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1247                    &rust.wire1,
1248                    out,
1249                );
1250                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1251                    &rust.wire2,
1252                    out,
1253                );
1254                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1255                    &rust.wire3,
1256                    out,
1257                );
1258                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1259                    &rust.wire4,
1260                    out,
1261                );
1262                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1263                    &rust.prodPerm,
1264                    out,
1265                );
1266                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1267                    &rust.split0,
1268                    out,
1269                );
1270                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1271                    &rust.split1,
1272                    out,
1273                );
1274                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1275                    &rust.split2,
1276                    out,
1277                );
1278                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1279                    &rust.split3,
1280                    out,
1281                );
1282                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1283                    &rust.split4,
1284                    out,
1285                );
1286                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1287                    &rust.zeta,
1288                    out,
1289                );
1290                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1291                    &rust.zetaOmega,
1292                    out,
1293                );
1294                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1295                    &rust.wireEval0,
1296                    out,
1297                );
1298                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1299                    &rust.wireEval1,
1300                    out,
1301                );
1302                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1303                    &rust.wireEval2,
1304                    out,
1305                );
1306                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1307                    &rust.wireEval3,
1308                    out,
1309                );
1310                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1311                    &rust.wireEval4,
1312                    out,
1313                );
1314                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1315                    &rust.sigmaEval0,
1316                    out,
1317                );
1318                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1319                    &rust.sigmaEval1,
1320                    out,
1321                );
1322                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1323                    &rust.sigmaEval2,
1324                    out,
1325                );
1326                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1327                    &rust.sigmaEval3,
1328                    out,
1329                );
1330                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1331                    &rust.prodPermZetaOmegaEval,
1332                    out,
1333                );
1334            }
1335            #[inline]
1336            fn encode_topic(
1337                rust: &Self::RustType,
1338            ) -> alloy_sol_types::abi::token::WordToken {
1339                let mut out = alloy_sol_types::private::Vec::new();
1340                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    rust,
1342                    &mut out,
1343                );
1344                alloy_sol_types::abi::token::WordToken(
1345                    alloy_sol_types::private::keccak256(out),
1346                )
1347            }
1348        }
1349    };
1350    #[derive()]
1351    /**```solidity
1352struct 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; }
1353```*/
1354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1355    #[derive(Clone)]
1356    pub struct VerifyingKey {
1357        #[allow(missing_docs)]
1358        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1359        #[allow(missing_docs)]
1360        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1361        #[allow(missing_docs)]
1362        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1363        #[allow(missing_docs)]
1364        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1365        #[allow(missing_docs)]
1366        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1367        #[allow(missing_docs)]
1368        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1369        #[allow(missing_docs)]
1370        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1371        #[allow(missing_docs)]
1372        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1373        #[allow(missing_docs)]
1374        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1375        #[allow(missing_docs)]
1376        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1377        #[allow(missing_docs)]
1378        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1379        #[allow(missing_docs)]
1380        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1381        #[allow(missing_docs)]
1382        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1383        #[allow(missing_docs)]
1384        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1385        #[allow(missing_docs)]
1386        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1387        #[allow(missing_docs)]
1388        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1399        #[allow(missing_docs)]
1400        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1401    }
1402    #[allow(
1403        non_camel_case_types,
1404        non_snake_case,
1405        clippy::pub_underscore_fields,
1406        clippy::style
1407    )]
1408    const _: () = {
1409        use alloy::sol_types as alloy_sol_types;
1410        #[doc(hidden)]
1411        type UnderlyingSolTuple<'a> = (
1412            alloy::sol_types::sol_data::Uint<256>,
1413            alloy::sol_types::sol_data::Uint<256>,
1414            BN254::G1Point,
1415            BN254::G1Point,
1416            BN254::G1Point,
1417            BN254::G1Point,
1418            BN254::G1Point,
1419            BN254::G1Point,
1420            BN254::G1Point,
1421            BN254::G1Point,
1422            BN254::G1Point,
1423            BN254::G1Point,
1424            BN254::G1Point,
1425            BN254::G1Point,
1426            BN254::G1Point,
1427            BN254::G1Point,
1428            BN254::G1Point,
1429            BN254::G1Point,
1430            BN254::G1Point,
1431            BN254::G1Point,
1432            alloy::sol_types::sol_data::FixedBytes<32>,
1433            alloy::sol_types::sol_data::FixedBytes<32>,
1434        );
1435        #[doc(hidden)]
1436        type UnderlyingRustTuple<'a> = (
1437            alloy::sol_types::private::primitives::aliases::U256,
1438            alloy::sol_types::private::primitives::aliases::U256,
1439            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1440            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1441            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1442            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1443            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1444            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1445            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1446            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1447            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1448            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1449            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1450            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1451            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1452            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1453            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1454            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1455            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1456            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1457            alloy::sol_types::private::FixedBytes<32>,
1458            alloy::sol_types::private::FixedBytes<32>,
1459        );
1460        #[cfg(test)]
1461        #[allow(dead_code, unreachable_patterns)]
1462        fn _type_assertion(
1463            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1464        ) {
1465            match _t {
1466                alloy_sol_types::private::AssertTypeEq::<
1467                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1468                >(_) => {}
1469            }
1470        }
1471        #[automatically_derived]
1472        #[doc(hidden)]
1473        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1474            fn from(value: VerifyingKey) -> Self {
1475                (
1476                    value.domainSize,
1477                    value.numInputs,
1478                    value.sigma0,
1479                    value.sigma1,
1480                    value.sigma2,
1481                    value.sigma3,
1482                    value.sigma4,
1483                    value.q1,
1484                    value.q2,
1485                    value.q3,
1486                    value.q4,
1487                    value.qM12,
1488                    value.qM34,
1489                    value.qO,
1490                    value.qC,
1491                    value.qH1,
1492                    value.qH2,
1493                    value.qH3,
1494                    value.qH4,
1495                    value.qEcc,
1496                    value.g2LSB,
1497                    value.g2MSB,
1498                )
1499            }
1500        }
1501        #[automatically_derived]
1502        #[doc(hidden)]
1503        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1504            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1505                Self {
1506                    domainSize: tuple.0,
1507                    numInputs: tuple.1,
1508                    sigma0: tuple.2,
1509                    sigma1: tuple.3,
1510                    sigma2: tuple.4,
1511                    sigma3: tuple.5,
1512                    sigma4: tuple.6,
1513                    q1: tuple.7,
1514                    q2: tuple.8,
1515                    q3: tuple.9,
1516                    q4: tuple.10,
1517                    qM12: tuple.11,
1518                    qM34: tuple.12,
1519                    qO: tuple.13,
1520                    qC: tuple.14,
1521                    qH1: tuple.15,
1522                    qH2: tuple.16,
1523                    qH3: tuple.17,
1524                    qH4: tuple.18,
1525                    qEcc: tuple.19,
1526                    g2LSB: tuple.20,
1527                    g2MSB: tuple.21,
1528                }
1529            }
1530        }
1531        #[automatically_derived]
1532        impl alloy_sol_types::SolValue for VerifyingKey {
1533            type SolType = Self;
1534        }
1535        #[automatically_derived]
1536        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1537            #[inline]
1538            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1539                (
1540                    <alloy::sol_types::sol_data::Uint<
1541                        256,
1542                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1543                    <alloy::sol_types::sol_data::Uint<
1544                        256,
1545                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1546                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1547                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1548                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1549                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1550                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1551                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1552                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1553                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1554                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1555                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1556                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1557                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1558                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1559                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1560                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1561                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1562                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1563                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1564                    <alloy::sol_types::sol_data::FixedBytes<
1565                        32,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1567                    <alloy::sol_types::sol_data::FixedBytes<
1568                        32,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1570                )
1571            }
1572            #[inline]
1573            fn stv_abi_encoded_size(&self) -> usize {
1574                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1575                    return size;
1576                }
1577                let tuple = <UnderlyingRustTuple<
1578                    '_,
1579                > as ::core::convert::From<Self>>::from(self.clone());
1580                <UnderlyingSolTuple<
1581                    '_,
1582                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1583            }
1584            #[inline]
1585            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1586                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1587            }
1588            #[inline]
1589            fn stv_abi_encode_packed_to(
1590                &self,
1591                out: &mut alloy_sol_types::private::Vec<u8>,
1592            ) {
1593                let tuple = <UnderlyingRustTuple<
1594                    '_,
1595                > as ::core::convert::From<Self>>::from(self.clone());
1596                <UnderlyingSolTuple<
1597                    '_,
1598                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1599            }
1600            #[inline]
1601            fn stv_abi_packed_encoded_size(&self) -> usize {
1602                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1603                    return size;
1604                }
1605                let tuple = <UnderlyingRustTuple<
1606                    '_,
1607                > as ::core::convert::From<Self>>::from(self.clone());
1608                <UnderlyingSolTuple<
1609                    '_,
1610                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1611            }
1612        }
1613        #[automatically_derived]
1614        impl alloy_sol_types::SolType for VerifyingKey {
1615            type RustType = Self;
1616            type Token<'a> = <UnderlyingSolTuple<
1617                'a,
1618            > as alloy_sol_types::SolType>::Token<'a>;
1619            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1620            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1621                '_,
1622            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1623            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1624                '_,
1625            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1626            #[inline]
1627            fn valid_token(token: &Self::Token<'_>) -> bool {
1628                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1629            }
1630            #[inline]
1631            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1632                let tuple = <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::detokenize(token);
1635                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1636            }
1637        }
1638        #[automatically_derived]
1639        impl alloy_sol_types::SolStruct for VerifyingKey {
1640            const NAME: &'static str = "VerifyingKey";
1641            #[inline]
1642            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1643                alloy_sol_types::private::Cow::Borrowed(
1644                    "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)",
1645                )
1646            }
1647            #[inline]
1648            fn eip712_components() -> alloy_sol_types::private::Vec<
1649                alloy_sol_types::private::Cow<'static, str>,
1650            > {
1651                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1652                components
1653                    .push(
1654                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1655                    );
1656                components
1657                    .extend(
1658                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1659                    );
1660                components
1661                    .push(
1662                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1663                    );
1664                components
1665                    .extend(
1666                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1667                    );
1668                components
1669                    .push(
1670                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1671                    );
1672                components
1673                    .extend(
1674                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1675                    );
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            }
1798            #[inline]
1799            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1800                [
1801                    <alloy::sol_types::sol_data::Uint<
1802                        256,
1803                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1804                        .0,
1805                    <alloy::sol_types::sol_data::Uint<
1806                        256,
1807                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1808                        .0,
1809                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1810                            &self.sigma0,
1811                        )
1812                        .0,
1813                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1814                            &self.sigma1,
1815                        )
1816                        .0,
1817                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1818                            &self.sigma2,
1819                        )
1820                        .0,
1821                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1822                            &self.sigma3,
1823                        )
1824                        .0,
1825                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1826                            &self.sigma4,
1827                        )
1828                        .0,
1829                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1830                            &self.q1,
1831                        )
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.q2,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.q3,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.q4,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.qM12,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.qM34,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.qO,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.qC,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.qH1,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.qH2,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qH3,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qH4,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qEcc,
1879                        )
1880                        .0,
1881                    <alloy::sol_types::sol_data::FixedBytes<
1882                        32,
1883                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1884                        .0,
1885                    <alloy::sol_types::sol_data::FixedBytes<
1886                        32,
1887                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1888                        .0,
1889                ]
1890                    .concat()
1891            }
1892        }
1893        #[automatically_derived]
1894        impl alloy_sol_types::EventTopic for VerifyingKey {
1895            #[inline]
1896            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1897                0usize
1898                    + <alloy::sol_types::sol_data::Uint<
1899                        256,
1900                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1901                        &rust.domainSize,
1902                    )
1903                    + <alloy::sol_types::sol_data::Uint<
1904                        256,
1905                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1906                        &rust.numInputs,
1907                    )
1908                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1909                        &rust.sigma0,
1910                    )
1911                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1912                        &rust.sigma1,
1913                    )
1914                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1915                        &rust.sigma2,
1916                    )
1917                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1918                        &rust.sigma3,
1919                    )
1920                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1921                        &rust.sigma4,
1922                    )
1923                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1924                        &rust.q1,
1925                    )
1926                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.q2,
1928                    )
1929                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.q3,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.q4,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.qM12,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.qM34,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.qO,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.qC,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.qH1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.qH2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.qH3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.qH4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qEcc,
1961                    )
1962                    + <alloy::sol_types::sol_data::FixedBytes<
1963                        32,
1964                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1965                    + <alloy::sol_types::sol_data::FixedBytes<
1966                        32,
1967                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1968            }
1969            #[inline]
1970            fn encode_topic_preimage(
1971                rust: &Self::RustType,
1972                out: &mut alloy_sol_types::private::Vec<u8>,
1973            ) {
1974                out.reserve(
1975                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1976                );
1977                <alloy::sol_types::sol_data::Uint<
1978                    256,
1979                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1980                    &rust.domainSize,
1981                    out,
1982                );
1983                <alloy::sol_types::sol_data::Uint<
1984                    256,
1985                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1986                    &rust.numInputs,
1987                    out,
1988                );
1989                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1990                    &rust.sigma0,
1991                    out,
1992                );
1993                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1994                    &rust.sigma1,
1995                    out,
1996                );
1997                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1998                    &rust.sigma2,
1999                    out,
2000                );
2001                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2002                    &rust.sigma3,
2003                    out,
2004                );
2005                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.sigma4,
2007                    out,
2008                );
2009                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.q1,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.q2,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.q3,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.q4,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.qM12,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.qM34,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.qO,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.qC,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.qH1,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.qH2,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qH3,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qH4,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qEcc,
2059                    out,
2060                );
2061                <alloy::sol_types::sol_data::FixedBytes<
2062                    32,
2063                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.g2LSB,
2065                    out,
2066                );
2067                <alloy::sol_types::sol_data::FixedBytes<
2068                    32,
2069                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.g2MSB,
2071                    out,
2072                );
2073            }
2074            #[inline]
2075            fn encode_topic(
2076                rust: &Self::RustType,
2077            ) -> alloy_sol_types::abi::token::WordToken {
2078                let mut out = alloy_sol_types::private::Vec::new();
2079                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    rust,
2081                    &mut out,
2082                );
2083                alloy_sol_types::abi::token::WordToken(
2084                    alloy_sol_types::private::keccak256(out),
2085                )
2086            }
2087        }
2088    };
2089    use alloy::contract as alloy_contract;
2090    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2091
2092See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2093    #[inline]
2094    pub const fn new<
2095        T: alloy_contract::private::Transport + ::core::clone::Clone,
2096        P: alloy_contract::private::Provider<T, N>,
2097        N: alloy_contract::private::Network,
2098    >(
2099        address: alloy_sol_types::private::Address,
2100        provider: P,
2101    ) -> IPlonkVerifierInstance<T, P, N> {
2102        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
2103    }
2104    /**A [`IPlonkVerifier`](self) instance.
2105
2106Contains type-safe methods for interacting with an on-chain instance of the
2107[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2108provider `P`.
2109
2110If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2111documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2112be used to deploy a new instance of the contract.
2113
2114See the [module-level documentation](self) for all the available methods.*/
2115    #[derive(Clone)]
2116    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
2117        address: alloy_sol_types::private::Address,
2118        provider: P,
2119        _network_transport: ::core::marker::PhantomData<(N, T)>,
2120    }
2121    #[automatically_derived]
2122    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
2123        #[inline]
2124        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2125            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2126        }
2127    }
2128    /// Instantiation and getters/setters.
2129    #[automatically_derived]
2130    impl<
2131        T: alloy_contract::private::Transport + ::core::clone::Clone,
2132        P: alloy_contract::private::Provider<T, N>,
2133        N: alloy_contract::private::Network,
2134    > IPlonkVerifierInstance<T, P, N> {
2135        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2136
2137See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2138        #[inline]
2139        pub const fn new(
2140            address: alloy_sol_types::private::Address,
2141            provider: P,
2142        ) -> Self {
2143            Self {
2144                address,
2145                provider,
2146                _network_transport: ::core::marker::PhantomData,
2147            }
2148        }
2149        /// Returns a reference to the address.
2150        #[inline]
2151        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2152            &self.address
2153        }
2154        /// Sets the address.
2155        #[inline]
2156        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2157            self.address = address;
2158        }
2159        /// Sets the address and returns `self`.
2160        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2161            self.set_address(address);
2162            self
2163        }
2164        /// Returns a reference to the provider.
2165        #[inline]
2166        pub const fn provider(&self) -> &P {
2167            &self.provider
2168        }
2169    }
2170    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
2171        /// Clones the provider and returns a new instance with the cloned provider.
2172        #[inline]
2173        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
2174            IPlonkVerifierInstance {
2175                address: self.address,
2176                provider: ::core::clone::Clone::clone(&self.provider),
2177                _network_transport: ::core::marker::PhantomData,
2178            }
2179        }
2180    }
2181    /// Function calls.
2182    #[automatically_derived]
2183    impl<
2184        T: alloy_contract::private::Transport + ::core::clone::Clone,
2185        P: alloy_contract::private::Provider<T, N>,
2186        N: alloy_contract::private::Network,
2187    > IPlonkVerifierInstance<T, P, N> {
2188        /// Creates a new call builder using this contract instance's provider and address.
2189        ///
2190        /// Note that the call can be any function call, not just those defined in this
2191        /// contract. Prefer using the other methods for building type-safe contract calls.
2192        pub fn call_builder<C: alloy_sol_types::SolCall>(
2193            &self,
2194            call: &C,
2195        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2196            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2197        }
2198    }
2199    /// Event filters.
2200    #[automatically_derived]
2201    impl<
2202        T: alloy_contract::private::Transport + ::core::clone::Clone,
2203        P: alloy_contract::private::Provider<T, N>,
2204        N: alloy_contract::private::Network,
2205    > IPlonkVerifierInstance<T, P, N> {
2206        /// Creates a new event filter using this contract instance's provider and address.
2207        ///
2208        /// Note that the type can be any event, not just those defined in this contract.
2209        /// Prefer using the other methods for building type-safe event filters.
2210        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2211            &self,
2212        ) -> alloy_contract::Event<T, &P, E, N> {
2213            alloy_contract::Event::new_sol(&self.provider, &self.address)
2214        }
2215    }
2216}
2217///Module containing a contract's types and functions.
2218/**
2219
2220```solidity
2221library LightClient {
2222    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2223    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2224}
2225```*/
2226#[allow(
2227    non_camel_case_types,
2228    non_snake_case,
2229    clippy::pub_underscore_fields,
2230    clippy::style,
2231    clippy::empty_structs_with_brackets
2232)]
2233pub mod LightClient {
2234    use super::*;
2235    use alloy::sol_types as alloy_sol_types;
2236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2237    /**```solidity
2238struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2239```*/
2240    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2241    #[derive(Clone)]
2242    pub struct LightClientState {
2243        #[allow(missing_docs)]
2244        pub viewNum: u64,
2245        #[allow(missing_docs)]
2246        pub blockHeight: u64,
2247        #[allow(missing_docs)]
2248        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2249    }
2250    #[allow(
2251        non_camel_case_types,
2252        non_snake_case,
2253        clippy::pub_underscore_fields,
2254        clippy::style
2255    )]
2256    const _: () = {
2257        use alloy::sol_types as alloy_sol_types;
2258        #[doc(hidden)]
2259        type UnderlyingSolTuple<'a> = (
2260            alloy::sol_types::sol_data::Uint<64>,
2261            alloy::sol_types::sol_data::Uint<64>,
2262            BN254::ScalarField,
2263        );
2264        #[doc(hidden)]
2265        type UnderlyingRustTuple<'a> = (
2266            u64,
2267            u64,
2268            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2269        );
2270        #[cfg(test)]
2271        #[allow(dead_code, unreachable_patterns)]
2272        fn _type_assertion(
2273            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2274        ) {
2275            match _t {
2276                alloy_sol_types::private::AssertTypeEq::<
2277                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2278                >(_) => {}
2279            }
2280        }
2281        #[automatically_derived]
2282        #[doc(hidden)]
2283        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2284            fn from(value: LightClientState) -> Self {
2285                (value.viewNum, value.blockHeight, value.blockCommRoot)
2286            }
2287        }
2288        #[automatically_derived]
2289        #[doc(hidden)]
2290        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2291            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2292                Self {
2293                    viewNum: tuple.0,
2294                    blockHeight: tuple.1,
2295                    blockCommRoot: tuple.2,
2296                }
2297            }
2298        }
2299        #[automatically_derived]
2300        impl alloy_sol_types::SolValue for LightClientState {
2301            type SolType = Self;
2302        }
2303        #[automatically_derived]
2304        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2305            #[inline]
2306            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2307                (
2308                    <alloy::sol_types::sol_data::Uint<
2309                        64,
2310                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2311                    <alloy::sol_types::sol_data::Uint<
2312                        64,
2313                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2314                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2315                        &self.blockCommRoot,
2316                    ),
2317                )
2318            }
2319            #[inline]
2320            fn stv_abi_encoded_size(&self) -> usize {
2321                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2322                    return size;
2323                }
2324                let tuple = <UnderlyingRustTuple<
2325                    '_,
2326                > as ::core::convert::From<Self>>::from(self.clone());
2327                <UnderlyingSolTuple<
2328                    '_,
2329                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2330            }
2331            #[inline]
2332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2334            }
2335            #[inline]
2336            fn stv_abi_encode_packed_to(
2337                &self,
2338                out: &mut alloy_sol_types::private::Vec<u8>,
2339            ) {
2340                let tuple = <UnderlyingRustTuple<
2341                    '_,
2342                > as ::core::convert::From<Self>>::from(self.clone());
2343                <UnderlyingSolTuple<
2344                    '_,
2345                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2346            }
2347            #[inline]
2348            fn stv_abi_packed_encoded_size(&self) -> usize {
2349                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2350                    return size;
2351                }
2352                let tuple = <UnderlyingRustTuple<
2353                    '_,
2354                > as ::core::convert::From<Self>>::from(self.clone());
2355                <UnderlyingSolTuple<
2356                    '_,
2357                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2358            }
2359        }
2360        #[automatically_derived]
2361        impl alloy_sol_types::SolType for LightClientState {
2362            type RustType = Self;
2363            type Token<'a> = <UnderlyingSolTuple<
2364                'a,
2365            > as alloy_sol_types::SolType>::Token<'a>;
2366            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2367            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2368                '_,
2369            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2370            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2371                '_,
2372            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2373            #[inline]
2374            fn valid_token(token: &Self::Token<'_>) -> bool {
2375                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2376            }
2377            #[inline]
2378            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2379                let tuple = <UnderlyingSolTuple<
2380                    '_,
2381                > as alloy_sol_types::SolType>::detokenize(token);
2382                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2383            }
2384        }
2385        #[automatically_derived]
2386        impl alloy_sol_types::SolStruct for LightClientState {
2387            const NAME: &'static str = "LightClientState";
2388            #[inline]
2389            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2390                alloy_sol_types::private::Cow::Borrowed(
2391                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2392                )
2393            }
2394            #[inline]
2395            fn eip712_components() -> alloy_sol_types::private::Vec<
2396                alloy_sol_types::private::Cow<'static, str>,
2397            > {
2398                alloy_sol_types::private::Vec::new()
2399            }
2400            #[inline]
2401            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2402                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2403            }
2404            #[inline]
2405            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2406                [
2407                    <alloy::sol_types::sol_data::Uint<
2408                        64,
2409                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2410                        .0,
2411                    <alloy::sol_types::sol_data::Uint<
2412                        64,
2413                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2414                        .0,
2415                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2416                            &self.blockCommRoot,
2417                        )
2418                        .0,
2419                ]
2420                    .concat()
2421            }
2422        }
2423        #[automatically_derived]
2424        impl alloy_sol_types::EventTopic for LightClientState {
2425            #[inline]
2426            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2427                0usize
2428                    + <alloy::sol_types::sol_data::Uint<
2429                        64,
2430                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2431                        &rust.viewNum,
2432                    )
2433                    + <alloy::sol_types::sol_data::Uint<
2434                        64,
2435                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2436                        &rust.blockHeight,
2437                    )
2438                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2439                        &rust.blockCommRoot,
2440                    )
2441            }
2442            #[inline]
2443            fn encode_topic_preimage(
2444                rust: &Self::RustType,
2445                out: &mut alloy_sol_types::private::Vec<u8>,
2446            ) {
2447                out.reserve(
2448                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2449                );
2450                <alloy::sol_types::sol_data::Uint<
2451                    64,
2452                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2453                    &rust.viewNum,
2454                    out,
2455                );
2456                <alloy::sol_types::sol_data::Uint<
2457                    64,
2458                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2459                    &rust.blockHeight,
2460                    out,
2461                );
2462                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2463                    &rust.blockCommRoot,
2464                    out,
2465                );
2466            }
2467            #[inline]
2468            fn encode_topic(
2469                rust: &Self::RustType,
2470            ) -> alloy_sol_types::abi::token::WordToken {
2471                let mut out = alloy_sol_types::private::Vec::new();
2472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2473                    rust,
2474                    &mut out,
2475                );
2476                alloy_sol_types::abi::token::WordToken(
2477                    alloy_sol_types::private::keccak256(out),
2478                )
2479            }
2480        }
2481    };
2482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2483    /**```solidity
2484struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2485```*/
2486    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2487    #[derive(Clone)]
2488    pub struct StakeTableState {
2489        #[allow(missing_docs)]
2490        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2491        #[allow(missing_docs)]
2492        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2493        #[allow(missing_docs)]
2494        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2495        #[allow(missing_docs)]
2496        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2497    }
2498    #[allow(
2499        non_camel_case_types,
2500        non_snake_case,
2501        clippy::pub_underscore_fields,
2502        clippy::style
2503    )]
2504    const _: () = {
2505        use alloy::sol_types as alloy_sol_types;
2506        #[doc(hidden)]
2507        type UnderlyingSolTuple<'a> = (
2508            alloy::sol_types::sol_data::Uint<256>,
2509            BN254::ScalarField,
2510            BN254::ScalarField,
2511            BN254::ScalarField,
2512        );
2513        #[doc(hidden)]
2514        type UnderlyingRustTuple<'a> = (
2515            alloy::sol_types::private::primitives::aliases::U256,
2516            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2519        );
2520        #[cfg(test)]
2521        #[allow(dead_code, unreachable_patterns)]
2522        fn _type_assertion(
2523            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2524        ) {
2525            match _t {
2526                alloy_sol_types::private::AssertTypeEq::<
2527                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2528                >(_) => {}
2529            }
2530        }
2531        #[automatically_derived]
2532        #[doc(hidden)]
2533        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2534            fn from(value: StakeTableState) -> Self {
2535                (
2536                    value.threshold,
2537                    value.blsKeyComm,
2538                    value.schnorrKeyComm,
2539                    value.amountComm,
2540                )
2541            }
2542        }
2543        #[automatically_derived]
2544        #[doc(hidden)]
2545        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2546            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2547                Self {
2548                    threshold: tuple.0,
2549                    blsKeyComm: tuple.1,
2550                    schnorrKeyComm: tuple.2,
2551                    amountComm: tuple.3,
2552                }
2553            }
2554        }
2555        #[automatically_derived]
2556        impl alloy_sol_types::SolValue for StakeTableState {
2557            type SolType = Self;
2558        }
2559        #[automatically_derived]
2560        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2561            #[inline]
2562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2563                (
2564                    <alloy::sol_types::sol_data::Uint<
2565                        256,
2566                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2567                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2568                        &self.blsKeyComm,
2569                    ),
2570                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2571                        &self.schnorrKeyComm,
2572                    ),
2573                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2574                        &self.amountComm,
2575                    ),
2576                )
2577            }
2578            #[inline]
2579            fn stv_abi_encoded_size(&self) -> usize {
2580                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2581                    return size;
2582                }
2583                let tuple = <UnderlyingRustTuple<
2584                    '_,
2585                > as ::core::convert::From<Self>>::from(self.clone());
2586                <UnderlyingSolTuple<
2587                    '_,
2588                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2589            }
2590            #[inline]
2591            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2592                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2593            }
2594            #[inline]
2595            fn stv_abi_encode_packed_to(
2596                &self,
2597                out: &mut alloy_sol_types::private::Vec<u8>,
2598            ) {
2599                let tuple = <UnderlyingRustTuple<
2600                    '_,
2601                > as ::core::convert::From<Self>>::from(self.clone());
2602                <UnderlyingSolTuple<
2603                    '_,
2604                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2605            }
2606            #[inline]
2607            fn stv_abi_packed_encoded_size(&self) -> usize {
2608                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2609                    return size;
2610                }
2611                let tuple = <UnderlyingRustTuple<
2612                    '_,
2613                > as ::core::convert::From<Self>>::from(self.clone());
2614                <UnderlyingSolTuple<
2615                    '_,
2616                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2617            }
2618        }
2619        #[automatically_derived]
2620        impl alloy_sol_types::SolType for StakeTableState {
2621            type RustType = Self;
2622            type Token<'a> = <UnderlyingSolTuple<
2623                'a,
2624            > as alloy_sol_types::SolType>::Token<'a>;
2625            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2626            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2627                '_,
2628            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2629            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2630                '_,
2631            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2632            #[inline]
2633            fn valid_token(token: &Self::Token<'_>) -> bool {
2634                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2635            }
2636            #[inline]
2637            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2638                let tuple = <UnderlyingSolTuple<
2639                    '_,
2640                > as alloy_sol_types::SolType>::detokenize(token);
2641                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2642            }
2643        }
2644        #[automatically_derived]
2645        impl alloy_sol_types::SolStruct for StakeTableState {
2646            const NAME: &'static str = "StakeTableState";
2647            #[inline]
2648            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2649                alloy_sol_types::private::Cow::Borrowed(
2650                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2651                )
2652            }
2653            #[inline]
2654            fn eip712_components() -> alloy_sol_types::private::Vec<
2655                alloy_sol_types::private::Cow<'static, str>,
2656            > {
2657                alloy_sol_types::private::Vec::new()
2658            }
2659            #[inline]
2660            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2661                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2662            }
2663            #[inline]
2664            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2665                [
2666                    <alloy::sol_types::sol_data::Uint<
2667                        256,
2668                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2669                        .0,
2670                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2671                            &self.blsKeyComm,
2672                        )
2673                        .0,
2674                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2675                            &self.schnorrKeyComm,
2676                        )
2677                        .0,
2678                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2679                            &self.amountComm,
2680                        )
2681                        .0,
2682                ]
2683                    .concat()
2684            }
2685        }
2686        #[automatically_derived]
2687        impl alloy_sol_types::EventTopic for StakeTableState {
2688            #[inline]
2689            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2690                0usize
2691                    + <alloy::sol_types::sol_data::Uint<
2692                        256,
2693                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2694                        &rust.threshold,
2695                    )
2696                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2697                        &rust.blsKeyComm,
2698                    )
2699                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2700                        &rust.schnorrKeyComm,
2701                    )
2702                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2703                        &rust.amountComm,
2704                    )
2705            }
2706            #[inline]
2707            fn encode_topic_preimage(
2708                rust: &Self::RustType,
2709                out: &mut alloy_sol_types::private::Vec<u8>,
2710            ) {
2711                out.reserve(
2712                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2713                );
2714                <alloy::sol_types::sol_data::Uint<
2715                    256,
2716                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2717                    &rust.threshold,
2718                    out,
2719                );
2720                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2721                    &rust.blsKeyComm,
2722                    out,
2723                );
2724                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2725                    &rust.schnorrKeyComm,
2726                    out,
2727                );
2728                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2729                    &rust.amountComm,
2730                    out,
2731                );
2732            }
2733            #[inline]
2734            fn encode_topic(
2735                rust: &Self::RustType,
2736            ) -> alloy_sol_types::abi::token::WordToken {
2737                let mut out = alloy_sol_types::private::Vec::new();
2738                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2739                    rust,
2740                    &mut out,
2741                );
2742                alloy_sol_types::abi::token::WordToken(
2743                    alloy_sol_types::private::keccak256(out),
2744                )
2745            }
2746        }
2747    };
2748    use alloy::contract as alloy_contract;
2749    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2750
2751See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2752    #[inline]
2753    pub const fn new<
2754        T: alloy_contract::private::Transport + ::core::clone::Clone,
2755        P: alloy_contract::private::Provider<T, N>,
2756        N: alloy_contract::private::Network,
2757    >(
2758        address: alloy_sol_types::private::Address,
2759        provider: P,
2760    ) -> LightClientInstance<T, P, N> {
2761        LightClientInstance::<T, P, N>::new(address, provider)
2762    }
2763    /**A [`LightClient`](self) instance.
2764
2765Contains type-safe methods for interacting with an on-chain instance of the
2766[`LightClient`](self) contract located at a given `address`, using a given
2767provider `P`.
2768
2769If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2770documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2771be used to deploy a new instance of the contract.
2772
2773See the [module-level documentation](self) for all the available methods.*/
2774    #[derive(Clone)]
2775    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
2776        address: alloy_sol_types::private::Address,
2777        provider: P,
2778        _network_transport: ::core::marker::PhantomData<(N, T)>,
2779    }
2780    #[automatically_derived]
2781    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
2782        #[inline]
2783        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2784            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2785        }
2786    }
2787    /// Instantiation and getters/setters.
2788    #[automatically_derived]
2789    impl<
2790        T: alloy_contract::private::Transport + ::core::clone::Clone,
2791        P: alloy_contract::private::Provider<T, N>,
2792        N: alloy_contract::private::Network,
2793    > LightClientInstance<T, P, N> {
2794        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2795
2796See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2797        #[inline]
2798        pub const fn new(
2799            address: alloy_sol_types::private::Address,
2800            provider: P,
2801        ) -> Self {
2802            Self {
2803                address,
2804                provider,
2805                _network_transport: ::core::marker::PhantomData,
2806            }
2807        }
2808        /// Returns a reference to the address.
2809        #[inline]
2810        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2811            &self.address
2812        }
2813        /// Sets the address.
2814        #[inline]
2815        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2816            self.address = address;
2817        }
2818        /// Sets the address and returns `self`.
2819        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2820            self.set_address(address);
2821            self
2822        }
2823        /// Returns a reference to the provider.
2824        #[inline]
2825        pub const fn provider(&self) -> &P {
2826            &self.provider
2827        }
2828    }
2829    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
2830        /// Clones the provider and returns a new instance with the cloned provider.
2831        #[inline]
2832        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
2833            LightClientInstance {
2834                address: self.address,
2835                provider: ::core::clone::Clone::clone(&self.provider),
2836                _network_transport: ::core::marker::PhantomData,
2837            }
2838        }
2839    }
2840    /// Function calls.
2841    #[automatically_derived]
2842    impl<
2843        T: alloy_contract::private::Transport + ::core::clone::Clone,
2844        P: alloy_contract::private::Provider<T, N>,
2845        N: alloy_contract::private::Network,
2846    > LightClientInstance<T, P, N> {
2847        /// Creates a new call builder using this contract instance's provider and address.
2848        ///
2849        /// Note that the call can be any function call, not just those defined in this
2850        /// contract. Prefer using the other methods for building type-safe contract calls.
2851        pub fn call_builder<C: alloy_sol_types::SolCall>(
2852            &self,
2853            call: &C,
2854        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2855            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2856        }
2857    }
2858    /// Event filters.
2859    #[automatically_derived]
2860    impl<
2861        T: alloy_contract::private::Transport + ::core::clone::Clone,
2862        P: alloy_contract::private::Provider<T, N>,
2863        N: alloy_contract::private::Network,
2864    > LightClientInstance<T, P, N> {
2865        /// Creates a new event filter using this contract instance's provider and address.
2866        ///
2867        /// Note that the type can be any event, not just those defined in this contract.
2868        /// Prefer using the other methods for building type-safe event filters.
2869        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2870            &self,
2871        ) -> alloy_contract::Event<T, &P, E, N> {
2872            alloy_contract::Event::new_sol(&self.provider, &self.address)
2873        }
2874    }
2875}
2876/**
2877
2878Generated by the following Solidity interface...
2879```solidity
2880library BN254 {
2881    type BaseField is uint256;
2882    type ScalarField is uint256;
2883    struct G1Point {
2884        BaseField x;
2885        BaseField y;
2886    }
2887}
2888
2889library IPlonkVerifier {
2890    struct PlonkProof {
2891        BN254.G1Point wire0;
2892        BN254.G1Point wire1;
2893        BN254.G1Point wire2;
2894        BN254.G1Point wire3;
2895        BN254.G1Point wire4;
2896        BN254.G1Point prodPerm;
2897        BN254.G1Point split0;
2898        BN254.G1Point split1;
2899        BN254.G1Point split2;
2900        BN254.G1Point split3;
2901        BN254.G1Point split4;
2902        BN254.G1Point zeta;
2903        BN254.G1Point zetaOmega;
2904        BN254.ScalarField wireEval0;
2905        BN254.ScalarField wireEval1;
2906        BN254.ScalarField wireEval2;
2907        BN254.ScalarField wireEval3;
2908        BN254.ScalarField wireEval4;
2909        BN254.ScalarField sigmaEval0;
2910        BN254.ScalarField sigmaEval1;
2911        BN254.ScalarField sigmaEval2;
2912        BN254.ScalarField sigmaEval3;
2913        BN254.ScalarField prodPermZetaOmegaEval;
2914    }
2915    struct VerifyingKey {
2916        uint256 domainSize;
2917        uint256 numInputs;
2918        BN254.G1Point sigma0;
2919        BN254.G1Point sigma1;
2920        BN254.G1Point sigma2;
2921        BN254.G1Point sigma3;
2922        BN254.G1Point sigma4;
2923        BN254.G1Point q1;
2924        BN254.G1Point q2;
2925        BN254.G1Point q3;
2926        BN254.G1Point q4;
2927        BN254.G1Point qM12;
2928        BN254.G1Point qM34;
2929        BN254.G1Point qO;
2930        BN254.G1Point qC;
2931        BN254.G1Point qH1;
2932        BN254.G1Point qH2;
2933        BN254.G1Point qH3;
2934        BN254.G1Point qH4;
2935        BN254.G1Point qEcc;
2936        bytes32 g2LSB;
2937        bytes32 g2MSB;
2938    }
2939}
2940
2941library LightClient {
2942    struct LightClientState {
2943        uint64 viewNum;
2944        uint64 blockHeight;
2945        BN254.ScalarField blockCommRoot;
2946    }
2947    struct StakeTableState {
2948        uint256 threshold;
2949        BN254.ScalarField blsKeyComm;
2950        BN254.ScalarField schnorrKeyComm;
2951        BN254.ScalarField amountComm;
2952    }
2953}
2954
2955interface LightClientV3 {
2956    error AddressEmptyCode(address target);
2957    error DeprecatedApi();
2958    error ERC1967InvalidImplementation(address implementation);
2959    error ERC1967NonPayable();
2960    error FailedInnerCall();
2961    error InsufficientSnapshotHistory();
2962    error InvalidAddress();
2963    error InvalidArgs();
2964    error InvalidHotShotBlockForCommitmentCheck();
2965    error InvalidInitialization();
2966    error InvalidMaxStateHistory();
2967    error InvalidProof();
2968    error MissingEpochRootUpdate();
2969    error NoChangeRequired();
2970    error NotInitializing();
2971    error OutdatedState();
2972    error OwnableInvalidOwner(address owner);
2973    error OwnableUnauthorizedAccount(address account);
2974    error ProverNotPermissioned();
2975    error UUPSUnauthorizedCallContext();
2976    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2977    error WrongStakeTableUsed();
2978
2979    event Initialized(uint64 version);
2980    event NewEpoch(uint64 epoch);
2981    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2982    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2983    event PermissionedProverNotRequired();
2984    event PermissionedProverRequired(address permissionedProver);
2985    event Upgrade(address implementation);
2986    event Upgraded(address indexed implementation);
2987
2988    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2989    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2990    function authRoot() external view returns (uint256);
2991    function blocksPerEpoch() external view returns (uint64);
2992    function currentBlockNumber() external view returns (uint256);
2993    function currentEpoch() external view returns (uint64);
2994    function disablePermissionedProverMode() external;
2995    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
2996    function epochStartBlock() external view returns (uint64);
2997    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2998    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2999    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3000    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3001    function getStateHistoryCount() external view returns (uint256);
3002    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3003    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3004    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3005    function initializeV3() external;
3006    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3007    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3008    function isPermissionedProverEnabled() external view returns (bool);
3009    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3010    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3011    function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
3012    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
3013    function owner() external view returns (address);
3014    function permissionedProver() external view returns (address);
3015    function proxiableUUID() external view returns (bytes32);
3016    function renounceOwnership() external;
3017    function setPermissionedProver(address prover) external;
3018    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3019    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3020    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3021    function stateHistoryFirstIndex() external view returns (uint64);
3022    function stateHistoryRetentionPeriod() external view returns (uint32);
3023    function transferOwnership(address newOwner) external;
3024    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3025    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3026    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3027}
3028```
3029
3030...which was generated by the following JSON ABI:
3031```json
3032[
3033  {
3034    "type": "function",
3035    "name": "UPGRADE_INTERFACE_VERSION",
3036    "inputs": [],
3037    "outputs": [
3038      {
3039        "name": "",
3040        "type": "string",
3041        "internalType": "string"
3042      }
3043    ],
3044    "stateMutability": "view"
3045  },
3046  {
3047    "type": "function",
3048    "name": "_getVk",
3049    "inputs": [],
3050    "outputs": [
3051      {
3052        "name": "vk",
3053        "type": "tuple",
3054        "internalType": "struct IPlonkVerifier.VerifyingKey",
3055        "components": [
3056          {
3057            "name": "domainSize",
3058            "type": "uint256",
3059            "internalType": "uint256"
3060          },
3061          {
3062            "name": "numInputs",
3063            "type": "uint256",
3064            "internalType": "uint256"
3065          },
3066          {
3067            "name": "sigma0",
3068            "type": "tuple",
3069            "internalType": "struct BN254.G1Point",
3070            "components": [
3071              {
3072                "name": "x",
3073                "type": "uint256",
3074                "internalType": "BN254.BaseField"
3075              },
3076              {
3077                "name": "y",
3078                "type": "uint256",
3079                "internalType": "BN254.BaseField"
3080              }
3081            ]
3082          },
3083          {
3084            "name": "sigma1",
3085            "type": "tuple",
3086            "internalType": "struct BN254.G1Point",
3087            "components": [
3088              {
3089                "name": "x",
3090                "type": "uint256",
3091                "internalType": "BN254.BaseField"
3092              },
3093              {
3094                "name": "y",
3095                "type": "uint256",
3096                "internalType": "BN254.BaseField"
3097              }
3098            ]
3099          },
3100          {
3101            "name": "sigma2",
3102            "type": "tuple",
3103            "internalType": "struct BN254.G1Point",
3104            "components": [
3105              {
3106                "name": "x",
3107                "type": "uint256",
3108                "internalType": "BN254.BaseField"
3109              },
3110              {
3111                "name": "y",
3112                "type": "uint256",
3113                "internalType": "BN254.BaseField"
3114              }
3115            ]
3116          },
3117          {
3118            "name": "sigma3",
3119            "type": "tuple",
3120            "internalType": "struct BN254.G1Point",
3121            "components": [
3122              {
3123                "name": "x",
3124                "type": "uint256",
3125                "internalType": "BN254.BaseField"
3126              },
3127              {
3128                "name": "y",
3129                "type": "uint256",
3130                "internalType": "BN254.BaseField"
3131              }
3132            ]
3133          },
3134          {
3135            "name": "sigma4",
3136            "type": "tuple",
3137            "internalType": "struct BN254.G1Point",
3138            "components": [
3139              {
3140                "name": "x",
3141                "type": "uint256",
3142                "internalType": "BN254.BaseField"
3143              },
3144              {
3145                "name": "y",
3146                "type": "uint256",
3147                "internalType": "BN254.BaseField"
3148              }
3149            ]
3150          },
3151          {
3152            "name": "q1",
3153            "type": "tuple",
3154            "internalType": "struct BN254.G1Point",
3155            "components": [
3156              {
3157                "name": "x",
3158                "type": "uint256",
3159                "internalType": "BN254.BaseField"
3160              },
3161              {
3162                "name": "y",
3163                "type": "uint256",
3164                "internalType": "BN254.BaseField"
3165              }
3166            ]
3167          },
3168          {
3169            "name": "q2",
3170            "type": "tuple",
3171            "internalType": "struct BN254.G1Point",
3172            "components": [
3173              {
3174                "name": "x",
3175                "type": "uint256",
3176                "internalType": "BN254.BaseField"
3177              },
3178              {
3179                "name": "y",
3180                "type": "uint256",
3181                "internalType": "BN254.BaseField"
3182              }
3183            ]
3184          },
3185          {
3186            "name": "q3",
3187            "type": "tuple",
3188            "internalType": "struct BN254.G1Point",
3189            "components": [
3190              {
3191                "name": "x",
3192                "type": "uint256",
3193                "internalType": "BN254.BaseField"
3194              },
3195              {
3196                "name": "y",
3197                "type": "uint256",
3198                "internalType": "BN254.BaseField"
3199              }
3200            ]
3201          },
3202          {
3203            "name": "q4",
3204            "type": "tuple",
3205            "internalType": "struct BN254.G1Point",
3206            "components": [
3207              {
3208                "name": "x",
3209                "type": "uint256",
3210                "internalType": "BN254.BaseField"
3211              },
3212              {
3213                "name": "y",
3214                "type": "uint256",
3215                "internalType": "BN254.BaseField"
3216              }
3217            ]
3218          },
3219          {
3220            "name": "qM12",
3221            "type": "tuple",
3222            "internalType": "struct BN254.G1Point",
3223            "components": [
3224              {
3225                "name": "x",
3226                "type": "uint256",
3227                "internalType": "BN254.BaseField"
3228              },
3229              {
3230                "name": "y",
3231                "type": "uint256",
3232                "internalType": "BN254.BaseField"
3233              }
3234            ]
3235          },
3236          {
3237            "name": "qM34",
3238            "type": "tuple",
3239            "internalType": "struct BN254.G1Point",
3240            "components": [
3241              {
3242                "name": "x",
3243                "type": "uint256",
3244                "internalType": "BN254.BaseField"
3245              },
3246              {
3247                "name": "y",
3248                "type": "uint256",
3249                "internalType": "BN254.BaseField"
3250              }
3251            ]
3252          },
3253          {
3254            "name": "qO",
3255            "type": "tuple",
3256            "internalType": "struct BN254.G1Point",
3257            "components": [
3258              {
3259                "name": "x",
3260                "type": "uint256",
3261                "internalType": "BN254.BaseField"
3262              },
3263              {
3264                "name": "y",
3265                "type": "uint256",
3266                "internalType": "BN254.BaseField"
3267              }
3268            ]
3269          },
3270          {
3271            "name": "qC",
3272            "type": "tuple",
3273            "internalType": "struct BN254.G1Point",
3274            "components": [
3275              {
3276                "name": "x",
3277                "type": "uint256",
3278                "internalType": "BN254.BaseField"
3279              },
3280              {
3281                "name": "y",
3282                "type": "uint256",
3283                "internalType": "BN254.BaseField"
3284              }
3285            ]
3286          },
3287          {
3288            "name": "qH1",
3289            "type": "tuple",
3290            "internalType": "struct BN254.G1Point",
3291            "components": [
3292              {
3293                "name": "x",
3294                "type": "uint256",
3295                "internalType": "BN254.BaseField"
3296              },
3297              {
3298                "name": "y",
3299                "type": "uint256",
3300                "internalType": "BN254.BaseField"
3301              }
3302            ]
3303          },
3304          {
3305            "name": "qH2",
3306            "type": "tuple",
3307            "internalType": "struct BN254.G1Point",
3308            "components": [
3309              {
3310                "name": "x",
3311                "type": "uint256",
3312                "internalType": "BN254.BaseField"
3313              },
3314              {
3315                "name": "y",
3316                "type": "uint256",
3317                "internalType": "BN254.BaseField"
3318              }
3319            ]
3320          },
3321          {
3322            "name": "qH3",
3323            "type": "tuple",
3324            "internalType": "struct BN254.G1Point",
3325            "components": [
3326              {
3327                "name": "x",
3328                "type": "uint256",
3329                "internalType": "BN254.BaseField"
3330              },
3331              {
3332                "name": "y",
3333                "type": "uint256",
3334                "internalType": "BN254.BaseField"
3335              }
3336            ]
3337          },
3338          {
3339            "name": "qH4",
3340            "type": "tuple",
3341            "internalType": "struct BN254.G1Point",
3342            "components": [
3343              {
3344                "name": "x",
3345                "type": "uint256",
3346                "internalType": "BN254.BaseField"
3347              },
3348              {
3349                "name": "y",
3350                "type": "uint256",
3351                "internalType": "BN254.BaseField"
3352              }
3353            ]
3354          },
3355          {
3356            "name": "qEcc",
3357            "type": "tuple",
3358            "internalType": "struct BN254.G1Point",
3359            "components": [
3360              {
3361                "name": "x",
3362                "type": "uint256",
3363                "internalType": "BN254.BaseField"
3364              },
3365              {
3366                "name": "y",
3367                "type": "uint256",
3368                "internalType": "BN254.BaseField"
3369              }
3370            ]
3371          },
3372          {
3373            "name": "g2LSB",
3374            "type": "bytes32",
3375            "internalType": "bytes32"
3376          },
3377          {
3378            "name": "g2MSB",
3379            "type": "bytes32",
3380            "internalType": "bytes32"
3381          }
3382        ]
3383      }
3384    ],
3385    "stateMutability": "pure"
3386  },
3387  {
3388    "type": "function",
3389    "name": "authRoot",
3390    "inputs": [],
3391    "outputs": [
3392      {
3393        "name": "",
3394        "type": "uint256",
3395        "internalType": "uint256"
3396      }
3397    ],
3398    "stateMutability": "view"
3399  },
3400  {
3401    "type": "function",
3402    "name": "blocksPerEpoch",
3403    "inputs": [],
3404    "outputs": [
3405      {
3406        "name": "",
3407        "type": "uint64",
3408        "internalType": "uint64"
3409      }
3410    ],
3411    "stateMutability": "view"
3412  },
3413  {
3414    "type": "function",
3415    "name": "currentBlockNumber",
3416    "inputs": [],
3417    "outputs": [
3418      {
3419        "name": "",
3420        "type": "uint256",
3421        "internalType": "uint256"
3422      }
3423    ],
3424    "stateMutability": "view"
3425  },
3426  {
3427    "type": "function",
3428    "name": "currentEpoch",
3429    "inputs": [],
3430    "outputs": [
3431      {
3432        "name": "",
3433        "type": "uint64",
3434        "internalType": "uint64"
3435      }
3436    ],
3437    "stateMutability": "view"
3438  },
3439  {
3440    "type": "function",
3441    "name": "disablePermissionedProverMode",
3442    "inputs": [],
3443    "outputs": [],
3444    "stateMutability": "nonpayable"
3445  },
3446  {
3447    "type": "function",
3448    "name": "epochFromBlockNumber",
3449    "inputs": [
3450      {
3451        "name": "_blockNum",
3452        "type": "uint64",
3453        "internalType": "uint64"
3454      },
3455      {
3456        "name": "_blocksPerEpoch",
3457        "type": "uint64",
3458        "internalType": "uint64"
3459      }
3460    ],
3461    "outputs": [
3462      {
3463        "name": "",
3464        "type": "uint64",
3465        "internalType": "uint64"
3466      }
3467    ],
3468    "stateMutability": "pure"
3469  },
3470  {
3471    "type": "function",
3472    "name": "epochStartBlock",
3473    "inputs": [],
3474    "outputs": [
3475      {
3476        "name": "",
3477        "type": "uint64",
3478        "internalType": "uint64"
3479      }
3480    ],
3481    "stateMutability": "view"
3482  },
3483  {
3484    "type": "function",
3485    "name": "finalizedState",
3486    "inputs": [],
3487    "outputs": [
3488      {
3489        "name": "viewNum",
3490        "type": "uint64",
3491        "internalType": "uint64"
3492      },
3493      {
3494        "name": "blockHeight",
3495        "type": "uint64",
3496        "internalType": "uint64"
3497      },
3498      {
3499        "name": "blockCommRoot",
3500        "type": "uint256",
3501        "internalType": "BN254.ScalarField"
3502      }
3503    ],
3504    "stateMutability": "view"
3505  },
3506  {
3507    "type": "function",
3508    "name": "genesisStakeTableState",
3509    "inputs": [],
3510    "outputs": [
3511      {
3512        "name": "threshold",
3513        "type": "uint256",
3514        "internalType": "uint256"
3515      },
3516      {
3517        "name": "blsKeyComm",
3518        "type": "uint256",
3519        "internalType": "BN254.ScalarField"
3520      },
3521      {
3522        "name": "schnorrKeyComm",
3523        "type": "uint256",
3524        "internalType": "BN254.ScalarField"
3525      },
3526      {
3527        "name": "amountComm",
3528        "type": "uint256",
3529        "internalType": "BN254.ScalarField"
3530      }
3531    ],
3532    "stateMutability": "view"
3533  },
3534  {
3535    "type": "function",
3536    "name": "genesisState",
3537    "inputs": [],
3538    "outputs": [
3539      {
3540        "name": "viewNum",
3541        "type": "uint64",
3542        "internalType": "uint64"
3543      },
3544      {
3545        "name": "blockHeight",
3546        "type": "uint64",
3547        "internalType": "uint64"
3548      },
3549      {
3550        "name": "blockCommRoot",
3551        "type": "uint256",
3552        "internalType": "BN254.ScalarField"
3553      }
3554    ],
3555    "stateMutability": "view"
3556  },
3557  {
3558    "type": "function",
3559    "name": "getHotShotCommitment",
3560    "inputs": [
3561      {
3562        "name": "hotShotBlockHeight",
3563        "type": "uint256",
3564        "internalType": "uint256"
3565      }
3566    ],
3567    "outputs": [
3568      {
3569        "name": "hotShotBlockCommRoot",
3570        "type": "uint256",
3571        "internalType": "BN254.ScalarField"
3572      },
3573      {
3574        "name": "hotshotBlockHeight",
3575        "type": "uint64",
3576        "internalType": "uint64"
3577      }
3578    ],
3579    "stateMutability": "view"
3580  },
3581  {
3582    "type": "function",
3583    "name": "getStateHistoryCount",
3584    "inputs": [],
3585    "outputs": [
3586      {
3587        "name": "",
3588        "type": "uint256",
3589        "internalType": "uint256"
3590      }
3591    ],
3592    "stateMutability": "view"
3593  },
3594  {
3595    "type": "function",
3596    "name": "getVersion",
3597    "inputs": [],
3598    "outputs": [
3599      {
3600        "name": "majorVersion",
3601        "type": "uint8",
3602        "internalType": "uint8"
3603      },
3604      {
3605        "name": "minorVersion",
3606        "type": "uint8",
3607        "internalType": "uint8"
3608      },
3609      {
3610        "name": "patchVersion",
3611        "type": "uint8",
3612        "internalType": "uint8"
3613      }
3614    ],
3615    "stateMutability": "pure"
3616  },
3617  {
3618    "type": "function",
3619    "name": "initialize",
3620    "inputs": [
3621      {
3622        "name": "_genesis",
3623        "type": "tuple",
3624        "internalType": "struct LightClient.LightClientState",
3625        "components": [
3626          {
3627            "name": "viewNum",
3628            "type": "uint64",
3629            "internalType": "uint64"
3630          },
3631          {
3632            "name": "blockHeight",
3633            "type": "uint64",
3634            "internalType": "uint64"
3635          },
3636          {
3637            "name": "blockCommRoot",
3638            "type": "uint256",
3639            "internalType": "BN254.ScalarField"
3640          }
3641        ]
3642      },
3643      {
3644        "name": "_genesisStakeTableState",
3645        "type": "tuple",
3646        "internalType": "struct LightClient.StakeTableState",
3647        "components": [
3648          {
3649            "name": "threshold",
3650            "type": "uint256",
3651            "internalType": "uint256"
3652          },
3653          {
3654            "name": "blsKeyComm",
3655            "type": "uint256",
3656            "internalType": "BN254.ScalarField"
3657          },
3658          {
3659            "name": "schnorrKeyComm",
3660            "type": "uint256",
3661            "internalType": "BN254.ScalarField"
3662          },
3663          {
3664            "name": "amountComm",
3665            "type": "uint256",
3666            "internalType": "BN254.ScalarField"
3667          }
3668        ]
3669      },
3670      {
3671        "name": "_stateHistoryRetentionPeriod",
3672        "type": "uint32",
3673        "internalType": "uint32"
3674      },
3675      {
3676        "name": "owner",
3677        "type": "address",
3678        "internalType": "address"
3679      }
3680    ],
3681    "outputs": [],
3682    "stateMutability": "nonpayable"
3683  },
3684  {
3685    "type": "function",
3686    "name": "initializeV2",
3687    "inputs": [
3688      {
3689        "name": "_blocksPerEpoch",
3690        "type": "uint64",
3691        "internalType": "uint64"
3692      },
3693      {
3694        "name": "_epochStartBlock",
3695        "type": "uint64",
3696        "internalType": "uint64"
3697      }
3698    ],
3699    "outputs": [],
3700    "stateMutability": "nonpayable"
3701  },
3702  {
3703    "type": "function",
3704    "name": "initializeV3",
3705    "inputs": [],
3706    "outputs": [],
3707    "stateMutability": "nonpayable"
3708  },
3709  {
3710    "type": "function",
3711    "name": "isEpochRoot",
3712    "inputs": [
3713      {
3714        "name": "blockHeight",
3715        "type": "uint64",
3716        "internalType": "uint64"
3717      }
3718    ],
3719    "outputs": [
3720      {
3721        "name": "",
3722        "type": "bool",
3723        "internalType": "bool"
3724      }
3725    ],
3726    "stateMutability": "view"
3727  },
3728  {
3729    "type": "function",
3730    "name": "isGtEpochRoot",
3731    "inputs": [
3732      {
3733        "name": "blockHeight",
3734        "type": "uint64",
3735        "internalType": "uint64"
3736      }
3737    ],
3738    "outputs": [
3739      {
3740        "name": "",
3741        "type": "bool",
3742        "internalType": "bool"
3743      }
3744    ],
3745    "stateMutability": "view"
3746  },
3747  {
3748    "type": "function",
3749    "name": "isPermissionedProverEnabled",
3750    "inputs": [],
3751    "outputs": [
3752      {
3753        "name": "",
3754        "type": "bool",
3755        "internalType": "bool"
3756      }
3757    ],
3758    "stateMutability": "view"
3759  },
3760  {
3761    "type": "function",
3762    "name": "lagOverEscapeHatchThreshold",
3763    "inputs": [
3764      {
3765        "name": "blockNumber",
3766        "type": "uint256",
3767        "internalType": "uint256"
3768      },
3769      {
3770        "name": "blockThreshold",
3771        "type": "uint256",
3772        "internalType": "uint256"
3773      }
3774    ],
3775    "outputs": [
3776      {
3777        "name": "",
3778        "type": "bool",
3779        "internalType": "bool"
3780      }
3781    ],
3782    "stateMutability": "view"
3783  },
3784  {
3785    "type": "function",
3786    "name": "newFinalizedState",
3787    "inputs": [
3788      {
3789        "name": "",
3790        "type": "tuple",
3791        "internalType": "struct LightClient.LightClientState",
3792        "components": [
3793          {
3794            "name": "viewNum",
3795            "type": "uint64",
3796            "internalType": "uint64"
3797          },
3798          {
3799            "name": "blockHeight",
3800            "type": "uint64",
3801            "internalType": "uint64"
3802          },
3803          {
3804            "name": "blockCommRoot",
3805            "type": "uint256",
3806            "internalType": "BN254.ScalarField"
3807          }
3808        ]
3809      },
3810      {
3811        "name": "",
3812        "type": "tuple",
3813        "internalType": "struct IPlonkVerifier.PlonkProof",
3814        "components": [
3815          {
3816            "name": "wire0",
3817            "type": "tuple",
3818            "internalType": "struct BN254.G1Point",
3819            "components": [
3820              {
3821                "name": "x",
3822                "type": "uint256",
3823                "internalType": "BN254.BaseField"
3824              },
3825              {
3826                "name": "y",
3827                "type": "uint256",
3828                "internalType": "BN254.BaseField"
3829              }
3830            ]
3831          },
3832          {
3833            "name": "wire1",
3834            "type": "tuple",
3835            "internalType": "struct BN254.G1Point",
3836            "components": [
3837              {
3838                "name": "x",
3839                "type": "uint256",
3840                "internalType": "BN254.BaseField"
3841              },
3842              {
3843                "name": "y",
3844                "type": "uint256",
3845                "internalType": "BN254.BaseField"
3846              }
3847            ]
3848          },
3849          {
3850            "name": "wire2",
3851            "type": "tuple",
3852            "internalType": "struct BN254.G1Point",
3853            "components": [
3854              {
3855                "name": "x",
3856                "type": "uint256",
3857                "internalType": "BN254.BaseField"
3858              },
3859              {
3860                "name": "y",
3861                "type": "uint256",
3862                "internalType": "BN254.BaseField"
3863              }
3864            ]
3865          },
3866          {
3867            "name": "wire3",
3868            "type": "tuple",
3869            "internalType": "struct BN254.G1Point",
3870            "components": [
3871              {
3872                "name": "x",
3873                "type": "uint256",
3874                "internalType": "BN254.BaseField"
3875              },
3876              {
3877                "name": "y",
3878                "type": "uint256",
3879                "internalType": "BN254.BaseField"
3880              }
3881            ]
3882          },
3883          {
3884            "name": "wire4",
3885            "type": "tuple",
3886            "internalType": "struct BN254.G1Point",
3887            "components": [
3888              {
3889                "name": "x",
3890                "type": "uint256",
3891                "internalType": "BN254.BaseField"
3892              },
3893              {
3894                "name": "y",
3895                "type": "uint256",
3896                "internalType": "BN254.BaseField"
3897              }
3898            ]
3899          },
3900          {
3901            "name": "prodPerm",
3902            "type": "tuple",
3903            "internalType": "struct BN254.G1Point",
3904            "components": [
3905              {
3906                "name": "x",
3907                "type": "uint256",
3908                "internalType": "BN254.BaseField"
3909              },
3910              {
3911                "name": "y",
3912                "type": "uint256",
3913                "internalType": "BN254.BaseField"
3914              }
3915            ]
3916          },
3917          {
3918            "name": "split0",
3919            "type": "tuple",
3920            "internalType": "struct BN254.G1Point",
3921            "components": [
3922              {
3923                "name": "x",
3924                "type": "uint256",
3925                "internalType": "BN254.BaseField"
3926              },
3927              {
3928                "name": "y",
3929                "type": "uint256",
3930                "internalType": "BN254.BaseField"
3931              }
3932            ]
3933          },
3934          {
3935            "name": "split1",
3936            "type": "tuple",
3937            "internalType": "struct BN254.G1Point",
3938            "components": [
3939              {
3940                "name": "x",
3941                "type": "uint256",
3942                "internalType": "BN254.BaseField"
3943              },
3944              {
3945                "name": "y",
3946                "type": "uint256",
3947                "internalType": "BN254.BaseField"
3948              }
3949            ]
3950          },
3951          {
3952            "name": "split2",
3953            "type": "tuple",
3954            "internalType": "struct BN254.G1Point",
3955            "components": [
3956              {
3957                "name": "x",
3958                "type": "uint256",
3959                "internalType": "BN254.BaseField"
3960              },
3961              {
3962                "name": "y",
3963                "type": "uint256",
3964                "internalType": "BN254.BaseField"
3965              }
3966            ]
3967          },
3968          {
3969            "name": "split3",
3970            "type": "tuple",
3971            "internalType": "struct BN254.G1Point",
3972            "components": [
3973              {
3974                "name": "x",
3975                "type": "uint256",
3976                "internalType": "BN254.BaseField"
3977              },
3978              {
3979                "name": "y",
3980                "type": "uint256",
3981                "internalType": "BN254.BaseField"
3982              }
3983            ]
3984          },
3985          {
3986            "name": "split4",
3987            "type": "tuple",
3988            "internalType": "struct BN254.G1Point",
3989            "components": [
3990              {
3991                "name": "x",
3992                "type": "uint256",
3993                "internalType": "BN254.BaseField"
3994              },
3995              {
3996                "name": "y",
3997                "type": "uint256",
3998                "internalType": "BN254.BaseField"
3999              }
4000            ]
4001          },
4002          {
4003            "name": "zeta",
4004            "type": "tuple",
4005            "internalType": "struct BN254.G1Point",
4006            "components": [
4007              {
4008                "name": "x",
4009                "type": "uint256",
4010                "internalType": "BN254.BaseField"
4011              },
4012              {
4013                "name": "y",
4014                "type": "uint256",
4015                "internalType": "BN254.BaseField"
4016              }
4017            ]
4018          },
4019          {
4020            "name": "zetaOmega",
4021            "type": "tuple",
4022            "internalType": "struct BN254.G1Point",
4023            "components": [
4024              {
4025                "name": "x",
4026                "type": "uint256",
4027                "internalType": "BN254.BaseField"
4028              },
4029              {
4030                "name": "y",
4031                "type": "uint256",
4032                "internalType": "BN254.BaseField"
4033              }
4034            ]
4035          },
4036          {
4037            "name": "wireEval0",
4038            "type": "uint256",
4039            "internalType": "BN254.ScalarField"
4040          },
4041          {
4042            "name": "wireEval1",
4043            "type": "uint256",
4044            "internalType": "BN254.ScalarField"
4045          },
4046          {
4047            "name": "wireEval2",
4048            "type": "uint256",
4049            "internalType": "BN254.ScalarField"
4050          },
4051          {
4052            "name": "wireEval3",
4053            "type": "uint256",
4054            "internalType": "BN254.ScalarField"
4055          },
4056          {
4057            "name": "wireEval4",
4058            "type": "uint256",
4059            "internalType": "BN254.ScalarField"
4060          },
4061          {
4062            "name": "sigmaEval0",
4063            "type": "uint256",
4064            "internalType": "BN254.ScalarField"
4065          },
4066          {
4067            "name": "sigmaEval1",
4068            "type": "uint256",
4069            "internalType": "BN254.ScalarField"
4070          },
4071          {
4072            "name": "sigmaEval2",
4073            "type": "uint256",
4074            "internalType": "BN254.ScalarField"
4075          },
4076          {
4077            "name": "sigmaEval3",
4078            "type": "uint256",
4079            "internalType": "BN254.ScalarField"
4080          },
4081          {
4082            "name": "prodPermZetaOmegaEval",
4083            "type": "uint256",
4084            "internalType": "BN254.ScalarField"
4085          }
4086        ]
4087      }
4088    ],
4089    "outputs": [],
4090    "stateMutability": "pure"
4091  },
4092  {
4093    "type": "function",
4094    "name": "newFinalizedState",
4095    "inputs": [
4096      {
4097        "name": "",
4098        "type": "tuple",
4099        "internalType": "struct LightClient.LightClientState",
4100        "components": [
4101          {
4102            "name": "viewNum",
4103            "type": "uint64",
4104            "internalType": "uint64"
4105          },
4106          {
4107            "name": "blockHeight",
4108            "type": "uint64",
4109            "internalType": "uint64"
4110          },
4111          {
4112            "name": "blockCommRoot",
4113            "type": "uint256",
4114            "internalType": "BN254.ScalarField"
4115          }
4116        ]
4117      },
4118      {
4119        "name": "",
4120        "type": "tuple",
4121        "internalType": "struct LightClient.StakeTableState",
4122        "components": [
4123          {
4124            "name": "threshold",
4125            "type": "uint256",
4126            "internalType": "uint256"
4127          },
4128          {
4129            "name": "blsKeyComm",
4130            "type": "uint256",
4131            "internalType": "BN254.ScalarField"
4132          },
4133          {
4134            "name": "schnorrKeyComm",
4135            "type": "uint256",
4136            "internalType": "BN254.ScalarField"
4137          },
4138          {
4139            "name": "amountComm",
4140            "type": "uint256",
4141            "internalType": "BN254.ScalarField"
4142          }
4143        ]
4144      },
4145      {
4146        "name": "",
4147        "type": "tuple",
4148        "internalType": "struct IPlonkVerifier.PlonkProof",
4149        "components": [
4150          {
4151            "name": "wire0",
4152            "type": "tuple",
4153            "internalType": "struct BN254.G1Point",
4154            "components": [
4155              {
4156                "name": "x",
4157                "type": "uint256",
4158                "internalType": "BN254.BaseField"
4159              },
4160              {
4161                "name": "y",
4162                "type": "uint256",
4163                "internalType": "BN254.BaseField"
4164              }
4165            ]
4166          },
4167          {
4168            "name": "wire1",
4169            "type": "tuple",
4170            "internalType": "struct BN254.G1Point",
4171            "components": [
4172              {
4173                "name": "x",
4174                "type": "uint256",
4175                "internalType": "BN254.BaseField"
4176              },
4177              {
4178                "name": "y",
4179                "type": "uint256",
4180                "internalType": "BN254.BaseField"
4181              }
4182            ]
4183          },
4184          {
4185            "name": "wire2",
4186            "type": "tuple",
4187            "internalType": "struct BN254.G1Point",
4188            "components": [
4189              {
4190                "name": "x",
4191                "type": "uint256",
4192                "internalType": "BN254.BaseField"
4193              },
4194              {
4195                "name": "y",
4196                "type": "uint256",
4197                "internalType": "BN254.BaseField"
4198              }
4199            ]
4200          },
4201          {
4202            "name": "wire3",
4203            "type": "tuple",
4204            "internalType": "struct BN254.G1Point",
4205            "components": [
4206              {
4207                "name": "x",
4208                "type": "uint256",
4209                "internalType": "BN254.BaseField"
4210              },
4211              {
4212                "name": "y",
4213                "type": "uint256",
4214                "internalType": "BN254.BaseField"
4215              }
4216            ]
4217          },
4218          {
4219            "name": "wire4",
4220            "type": "tuple",
4221            "internalType": "struct BN254.G1Point",
4222            "components": [
4223              {
4224                "name": "x",
4225                "type": "uint256",
4226                "internalType": "BN254.BaseField"
4227              },
4228              {
4229                "name": "y",
4230                "type": "uint256",
4231                "internalType": "BN254.BaseField"
4232              }
4233            ]
4234          },
4235          {
4236            "name": "prodPerm",
4237            "type": "tuple",
4238            "internalType": "struct BN254.G1Point",
4239            "components": [
4240              {
4241                "name": "x",
4242                "type": "uint256",
4243                "internalType": "BN254.BaseField"
4244              },
4245              {
4246                "name": "y",
4247                "type": "uint256",
4248                "internalType": "BN254.BaseField"
4249              }
4250            ]
4251          },
4252          {
4253            "name": "split0",
4254            "type": "tuple",
4255            "internalType": "struct BN254.G1Point",
4256            "components": [
4257              {
4258                "name": "x",
4259                "type": "uint256",
4260                "internalType": "BN254.BaseField"
4261              },
4262              {
4263                "name": "y",
4264                "type": "uint256",
4265                "internalType": "BN254.BaseField"
4266              }
4267            ]
4268          },
4269          {
4270            "name": "split1",
4271            "type": "tuple",
4272            "internalType": "struct BN254.G1Point",
4273            "components": [
4274              {
4275                "name": "x",
4276                "type": "uint256",
4277                "internalType": "BN254.BaseField"
4278              },
4279              {
4280                "name": "y",
4281                "type": "uint256",
4282                "internalType": "BN254.BaseField"
4283              }
4284            ]
4285          },
4286          {
4287            "name": "split2",
4288            "type": "tuple",
4289            "internalType": "struct BN254.G1Point",
4290            "components": [
4291              {
4292                "name": "x",
4293                "type": "uint256",
4294                "internalType": "BN254.BaseField"
4295              },
4296              {
4297                "name": "y",
4298                "type": "uint256",
4299                "internalType": "BN254.BaseField"
4300              }
4301            ]
4302          },
4303          {
4304            "name": "split3",
4305            "type": "tuple",
4306            "internalType": "struct BN254.G1Point",
4307            "components": [
4308              {
4309                "name": "x",
4310                "type": "uint256",
4311                "internalType": "BN254.BaseField"
4312              },
4313              {
4314                "name": "y",
4315                "type": "uint256",
4316                "internalType": "BN254.BaseField"
4317              }
4318            ]
4319          },
4320          {
4321            "name": "split4",
4322            "type": "tuple",
4323            "internalType": "struct BN254.G1Point",
4324            "components": [
4325              {
4326                "name": "x",
4327                "type": "uint256",
4328                "internalType": "BN254.BaseField"
4329              },
4330              {
4331                "name": "y",
4332                "type": "uint256",
4333                "internalType": "BN254.BaseField"
4334              }
4335            ]
4336          },
4337          {
4338            "name": "zeta",
4339            "type": "tuple",
4340            "internalType": "struct BN254.G1Point",
4341            "components": [
4342              {
4343                "name": "x",
4344                "type": "uint256",
4345                "internalType": "BN254.BaseField"
4346              },
4347              {
4348                "name": "y",
4349                "type": "uint256",
4350                "internalType": "BN254.BaseField"
4351              }
4352            ]
4353          },
4354          {
4355            "name": "zetaOmega",
4356            "type": "tuple",
4357            "internalType": "struct BN254.G1Point",
4358            "components": [
4359              {
4360                "name": "x",
4361                "type": "uint256",
4362                "internalType": "BN254.BaseField"
4363              },
4364              {
4365                "name": "y",
4366                "type": "uint256",
4367                "internalType": "BN254.BaseField"
4368              }
4369            ]
4370          },
4371          {
4372            "name": "wireEval0",
4373            "type": "uint256",
4374            "internalType": "BN254.ScalarField"
4375          },
4376          {
4377            "name": "wireEval1",
4378            "type": "uint256",
4379            "internalType": "BN254.ScalarField"
4380          },
4381          {
4382            "name": "wireEval2",
4383            "type": "uint256",
4384            "internalType": "BN254.ScalarField"
4385          },
4386          {
4387            "name": "wireEval3",
4388            "type": "uint256",
4389            "internalType": "BN254.ScalarField"
4390          },
4391          {
4392            "name": "wireEval4",
4393            "type": "uint256",
4394            "internalType": "BN254.ScalarField"
4395          },
4396          {
4397            "name": "sigmaEval0",
4398            "type": "uint256",
4399            "internalType": "BN254.ScalarField"
4400          },
4401          {
4402            "name": "sigmaEval1",
4403            "type": "uint256",
4404            "internalType": "BN254.ScalarField"
4405          },
4406          {
4407            "name": "sigmaEval2",
4408            "type": "uint256",
4409            "internalType": "BN254.ScalarField"
4410          },
4411          {
4412            "name": "sigmaEval3",
4413            "type": "uint256",
4414            "internalType": "BN254.ScalarField"
4415          },
4416          {
4417            "name": "prodPermZetaOmegaEval",
4418            "type": "uint256",
4419            "internalType": "BN254.ScalarField"
4420          }
4421        ]
4422      }
4423    ],
4424    "outputs": [],
4425    "stateMutability": "pure"
4426  },
4427  {
4428    "type": "function",
4429    "name": "newFinalizedState",
4430    "inputs": [
4431      {
4432        "name": "newState",
4433        "type": "tuple",
4434        "internalType": "struct LightClient.LightClientState",
4435        "components": [
4436          {
4437            "name": "viewNum",
4438            "type": "uint64",
4439            "internalType": "uint64"
4440          },
4441          {
4442            "name": "blockHeight",
4443            "type": "uint64",
4444            "internalType": "uint64"
4445          },
4446          {
4447            "name": "blockCommRoot",
4448            "type": "uint256",
4449            "internalType": "BN254.ScalarField"
4450          }
4451        ]
4452      },
4453      {
4454        "name": "nextStakeTable",
4455        "type": "tuple",
4456        "internalType": "struct LightClient.StakeTableState",
4457        "components": [
4458          {
4459            "name": "threshold",
4460            "type": "uint256",
4461            "internalType": "uint256"
4462          },
4463          {
4464            "name": "blsKeyComm",
4465            "type": "uint256",
4466            "internalType": "BN254.ScalarField"
4467          },
4468          {
4469            "name": "schnorrKeyComm",
4470            "type": "uint256",
4471            "internalType": "BN254.ScalarField"
4472          },
4473          {
4474            "name": "amountComm",
4475            "type": "uint256",
4476            "internalType": "BN254.ScalarField"
4477          }
4478        ]
4479      },
4480      {
4481        "name": "newAuthRoot",
4482        "type": "uint256",
4483        "internalType": "uint256"
4484      },
4485      {
4486        "name": "proof",
4487        "type": "tuple",
4488        "internalType": "struct IPlonkVerifier.PlonkProof",
4489        "components": [
4490          {
4491            "name": "wire0",
4492            "type": "tuple",
4493            "internalType": "struct BN254.G1Point",
4494            "components": [
4495              {
4496                "name": "x",
4497                "type": "uint256",
4498                "internalType": "BN254.BaseField"
4499              },
4500              {
4501                "name": "y",
4502                "type": "uint256",
4503                "internalType": "BN254.BaseField"
4504              }
4505            ]
4506          },
4507          {
4508            "name": "wire1",
4509            "type": "tuple",
4510            "internalType": "struct BN254.G1Point",
4511            "components": [
4512              {
4513                "name": "x",
4514                "type": "uint256",
4515                "internalType": "BN254.BaseField"
4516              },
4517              {
4518                "name": "y",
4519                "type": "uint256",
4520                "internalType": "BN254.BaseField"
4521              }
4522            ]
4523          },
4524          {
4525            "name": "wire2",
4526            "type": "tuple",
4527            "internalType": "struct BN254.G1Point",
4528            "components": [
4529              {
4530                "name": "x",
4531                "type": "uint256",
4532                "internalType": "BN254.BaseField"
4533              },
4534              {
4535                "name": "y",
4536                "type": "uint256",
4537                "internalType": "BN254.BaseField"
4538              }
4539            ]
4540          },
4541          {
4542            "name": "wire3",
4543            "type": "tuple",
4544            "internalType": "struct BN254.G1Point",
4545            "components": [
4546              {
4547                "name": "x",
4548                "type": "uint256",
4549                "internalType": "BN254.BaseField"
4550              },
4551              {
4552                "name": "y",
4553                "type": "uint256",
4554                "internalType": "BN254.BaseField"
4555              }
4556            ]
4557          },
4558          {
4559            "name": "wire4",
4560            "type": "tuple",
4561            "internalType": "struct BN254.G1Point",
4562            "components": [
4563              {
4564                "name": "x",
4565                "type": "uint256",
4566                "internalType": "BN254.BaseField"
4567              },
4568              {
4569                "name": "y",
4570                "type": "uint256",
4571                "internalType": "BN254.BaseField"
4572              }
4573            ]
4574          },
4575          {
4576            "name": "prodPerm",
4577            "type": "tuple",
4578            "internalType": "struct BN254.G1Point",
4579            "components": [
4580              {
4581                "name": "x",
4582                "type": "uint256",
4583                "internalType": "BN254.BaseField"
4584              },
4585              {
4586                "name": "y",
4587                "type": "uint256",
4588                "internalType": "BN254.BaseField"
4589              }
4590            ]
4591          },
4592          {
4593            "name": "split0",
4594            "type": "tuple",
4595            "internalType": "struct BN254.G1Point",
4596            "components": [
4597              {
4598                "name": "x",
4599                "type": "uint256",
4600                "internalType": "BN254.BaseField"
4601              },
4602              {
4603                "name": "y",
4604                "type": "uint256",
4605                "internalType": "BN254.BaseField"
4606              }
4607            ]
4608          },
4609          {
4610            "name": "split1",
4611            "type": "tuple",
4612            "internalType": "struct BN254.G1Point",
4613            "components": [
4614              {
4615                "name": "x",
4616                "type": "uint256",
4617                "internalType": "BN254.BaseField"
4618              },
4619              {
4620                "name": "y",
4621                "type": "uint256",
4622                "internalType": "BN254.BaseField"
4623              }
4624            ]
4625          },
4626          {
4627            "name": "split2",
4628            "type": "tuple",
4629            "internalType": "struct BN254.G1Point",
4630            "components": [
4631              {
4632                "name": "x",
4633                "type": "uint256",
4634                "internalType": "BN254.BaseField"
4635              },
4636              {
4637                "name": "y",
4638                "type": "uint256",
4639                "internalType": "BN254.BaseField"
4640              }
4641            ]
4642          },
4643          {
4644            "name": "split3",
4645            "type": "tuple",
4646            "internalType": "struct BN254.G1Point",
4647            "components": [
4648              {
4649                "name": "x",
4650                "type": "uint256",
4651                "internalType": "BN254.BaseField"
4652              },
4653              {
4654                "name": "y",
4655                "type": "uint256",
4656                "internalType": "BN254.BaseField"
4657              }
4658            ]
4659          },
4660          {
4661            "name": "split4",
4662            "type": "tuple",
4663            "internalType": "struct BN254.G1Point",
4664            "components": [
4665              {
4666                "name": "x",
4667                "type": "uint256",
4668                "internalType": "BN254.BaseField"
4669              },
4670              {
4671                "name": "y",
4672                "type": "uint256",
4673                "internalType": "BN254.BaseField"
4674              }
4675            ]
4676          },
4677          {
4678            "name": "zeta",
4679            "type": "tuple",
4680            "internalType": "struct BN254.G1Point",
4681            "components": [
4682              {
4683                "name": "x",
4684                "type": "uint256",
4685                "internalType": "BN254.BaseField"
4686              },
4687              {
4688                "name": "y",
4689                "type": "uint256",
4690                "internalType": "BN254.BaseField"
4691              }
4692            ]
4693          },
4694          {
4695            "name": "zetaOmega",
4696            "type": "tuple",
4697            "internalType": "struct BN254.G1Point",
4698            "components": [
4699              {
4700                "name": "x",
4701                "type": "uint256",
4702                "internalType": "BN254.BaseField"
4703              },
4704              {
4705                "name": "y",
4706                "type": "uint256",
4707                "internalType": "BN254.BaseField"
4708              }
4709            ]
4710          },
4711          {
4712            "name": "wireEval0",
4713            "type": "uint256",
4714            "internalType": "BN254.ScalarField"
4715          },
4716          {
4717            "name": "wireEval1",
4718            "type": "uint256",
4719            "internalType": "BN254.ScalarField"
4720          },
4721          {
4722            "name": "wireEval2",
4723            "type": "uint256",
4724            "internalType": "BN254.ScalarField"
4725          },
4726          {
4727            "name": "wireEval3",
4728            "type": "uint256",
4729            "internalType": "BN254.ScalarField"
4730          },
4731          {
4732            "name": "wireEval4",
4733            "type": "uint256",
4734            "internalType": "BN254.ScalarField"
4735          },
4736          {
4737            "name": "sigmaEval0",
4738            "type": "uint256",
4739            "internalType": "BN254.ScalarField"
4740          },
4741          {
4742            "name": "sigmaEval1",
4743            "type": "uint256",
4744            "internalType": "BN254.ScalarField"
4745          },
4746          {
4747            "name": "sigmaEval2",
4748            "type": "uint256",
4749            "internalType": "BN254.ScalarField"
4750          },
4751          {
4752            "name": "sigmaEval3",
4753            "type": "uint256",
4754            "internalType": "BN254.ScalarField"
4755          },
4756          {
4757            "name": "prodPermZetaOmegaEval",
4758            "type": "uint256",
4759            "internalType": "BN254.ScalarField"
4760          }
4761        ]
4762      }
4763    ],
4764    "outputs": [],
4765    "stateMutability": "nonpayable"
4766  },
4767  {
4768    "type": "function",
4769    "name": "owner",
4770    "inputs": [],
4771    "outputs": [
4772      {
4773        "name": "",
4774        "type": "address",
4775        "internalType": "address"
4776      }
4777    ],
4778    "stateMutability": "view"
4779  },
4780  {
4781    "type": "function",
4782    "name": "permissionedProver",
4783    "inputs": [],
4784    "outputs": [
4785      {
4786        "name": "",
4787        "type": "address",
4788        "internalType": "address"
4789      }
4790    ],
4791    "stateMutability": "view"
4792  },
4793  {
4794    "type": "function",
4795    "name": "proxiableUUID",
4796    "inputs": [],
4797    "outputs": [
4798      {
4799        "name": "",
4800        "type": "bytes32",
4801        "internalType": "bytes32"
4802      }
4803    ],
4804    "stateMutability": "view"
4805  },
4806  {
4807    "type": "function",
4808    "name": "renounceOwnership",
4809    "inputs": [],
4810    "outputs": [],
4811    "stateMutability": "nonpayable"
4812  },
4813  {
4814    "type": "function",
4815    "name": "setPermissionedProver",
4816    "inputs": [
4817      {
4818        "name": "prover",
4819        "type": "address",
4820        "internalType": "address"
4821      }
4822    ],
4823    "outputs": [],
4824    "stateMutability": "nonpayable"
4825  },
4826  {
4827    "type": "function",
4828    "name": "setStateHistoryRetentionPeriod",
4829    "inputs": [
4830      {
4831        "name": "historySeconds",
4832        "type": "uint32",
4833        "internalType": "uint32"
4834      }
4835    ],
4836    "outputs": [],
4837    "stateMutability": "nonpayable"
4838  },
4839  {
4840    "type": "function",
4841    "name": "setstateHistoryRetentionPeriod",
4842    "inputs": [
4843      {
4844        "name": "historySeconds",
4845        "type": "uint32",
4846        "internalType": "uint32"
4847      }
4848    ],
4849    "outputs": [],
4850    "stateMutability": "nonpayable"
4851  },
4852  {
4853    "type": "function",
4854    "name": "stateHistoryCommitments",
4855    "inputs": [
4856      {
4857        "name": "",
4858        "type": "uint256",
4859        "internalType": "uint256"
4860      }
4861    ],
4862    "outputs": [
4863      {
4864        "name": "l1BlockHeight",
4865        "type": "uint64",
4866        "internalType": "uint64"
4867      },
4868      {
4869        "name": "l1BlockTimestamp",
4870        "type": "uint64",
4871        "internalType": "uint64"
4872      },
4873      {
4874        "name": "hotShotBlockHeight",
4875        "type": "uint64",
4876        "internalType": "uint64"
4877      },
4878      {
4879        "name": "hotShotBlockCommRoot",
4880        "type": "uint256",
4881        "internalType": "BN254.ScalarField"
4882      }
4883    ],
4884    "stateMutability": "view"
4885  },
4886  {
4887    "type": "function",
4888    "name": "stateHistoryFirstIndex",
4889    "inputs": [],
4890    "outputs": [
4891      {
4892        "name": "",
4893        "type": "uint64",
4894        "internalType": "uint64"
4895      }
4896    ],
4897    "stateMutability": "view"
4898  },
4899  {
4900    "type": "function",
4901    "name": "stateHistoryRetentionPeriod",
4902    "inputs": [],
4903    "outputs": [
4904      {
4905        "name": "",
4906        "type": "uint32",
4907        "internalType": "uint32"
4908      }
4909    ],
4910    "stateMutability": "view"
4911  },
4912  {
4913    "type": "function",
4914    "name": "transferOwnership",
4915    "inputs": [
4916      {
4917        "name": "newOwner",
4918        "type": "address",
4919        "internalType": "address"
4920      }
4921    ],
4922    "outputs": [],
4923    "stateMutability": "nonpayable"
4924  },
4925  {
4926    "type": "function",
4927    "name": "updateEpochStartBlock",
4928    "inputs": [
4929      {
4930        "name": "newEpochStartBlock",
4931        "type": "uint64",
4932        "internalType": "uint64"
4933      }
4934    ],
4935    "outputs": [],
4936    "stateMutability": "nonpayable"
4937  },
4938  {
4939    "type": "function",
4940    "name": "upgradeToAndCall",
4941    "inputs": [
4942      {
4943        "name": "newImplementation",
4944        "type": "address",
4945        "internalType": "address"
4946      },
4947      {
4948        "name": "data",
4949        "type": "bytes",
4950        "internalType": "bytes"
4951      }
4952    ],
4953    "outputs": [],
4954    "stateMutability": "payable"
4955  },
4956  {
4957    "type": "function",
4958    "name": "votingStakeTableState",
4959    "inputs": [],
4960    "outputs": [
4961      {
4962        "name": "threshold",
4963        "type": "uint256",
4964        "internalType": "uint256"
4965      },
4966      {
4967        "name": "blsKeyComm",
4968        "type": "uint256",
4969        "internalType": "BN254.ScalarField"
4970      },
4971      {
4972        "name": "schnorrKeyComm",
4973        "type": "uint256",
4974        "internalType": "BN254.ScalarField"
4975      },
4976      {
4977        "name": "amountComm",
4978        "type": "uint256",
4979        "internalType": "BN254.ScalarField"
4980      }
4981    ],
4982    "stateMutability": "view"
4983  },
4984  {
4985    "type": "event",
4986    "name": "Initialized",
4987    "inputs": [
4988      {
4989        "name": "version",
4990        "type": "uint64",
4991        "indexed": false,
4992        "internalType": "uint64"
4993      }
4994    ],
4995    "anonymous": false
4996  },
4997  {
4998    "type": "event",
4999    "name": "NewEpoch",
5000    "inputs": [
5001      {
5002        "name": "epoch",
5003        "type": "uint64",
5004        "indexed": false,
5005        "internalType": "uint64"
5006      }
5007    ],
5008    "anonymous": false
5009  },
5010  {
5011    "type": "event",
5012    "name": "NewState",
5013    "inputs": [
5014      {
5015        "name": "viewNum",
5016        "type": "uint64",
5017        "indexed": true,
5018        "internalType": "uint64"
5019      },
5020      {
5021        "name": "blockHeight",
5022        "type": "uint64",
5023        "indexed": true,
5024        "internalType": "uint64"
5025      },
5026      {
5027        "name": "blockCommRoot",
5028        "type": "uint256",
5029        "indexed": false,
5030        "internalType": "BN254.ScalarField"
5031      }
5032    ],
5033    "anonymous": false
5034  },
5035  {
5036    "type": "event",
5037    "name": "OwnershipTransferred",
5038    "inputs": [
5039      {
5040        "name": "previousOwner",
5041        "type": "address",
5042        "indexed": true,
5043        "internalType": "address"
5044      },
5045      {
5046        "name": "newOwner",
5047        "type": "address",
5048        "indexed": true,
5049        "internalType": "address"
5050      }
5051    ],
5052    "anonymous": false
5053  },
5054  {
5055    "type": "event",
5056    "name": "PermissionedProverNotRequired",
5057    "inputs": [],
5058    "anonymous": false
5059  },
5060  {
5061    "type": "event",
5062    "name": "PermissionedProverRequired",
5063    "inputs": [
5064      {
5065        "name": "permissionedProver",
5066        "type": "address",
5067        "indexed": false,
5068        "internalType": "address"
5069      }
5070    ],
5071    "anonymous": false
5072  },
5073  {
5074    "type": "event",
5075    "name": "Upgrade",
5076    "inputs": [
5077      {
5078        "name": "implementation",
5079        "type": "address",
5080        "indexed": false,
5081        "internalType": "address"
5082      }
5083    ],
5084    "anonymous": false
5085  },
5086  {
5087    "type": "event",
5088    "name": "Upgraded",
5089    "inputs": [
5090      {
5091        "name": "implementation",
5092        "type": "address",
5093        "indexed": true,
5094        "internalType": "address"
5095      }
5096    ],
5097    "anonymous": false
5098  },
5099  {
5100    "type": "error",
5101    "name": "AddressEmptyCode",
5102    "inputs": [
5103      {
5104        "name": "target",
5105        "type": "address",
5106        "internalType": "address"
5107      }
5108    ]
5109  },
5110  {
5111    "type": "error",
5112    "name": "DeprecatedApi",
5113    "inputs": []
5114  },
5115  {
5116    "type": "error",
5117    "name": "ERC1967InvalidImplementation",
5118    "inputs": [
5119      {
5120        "name": "implementation",
5121        "type": "address",
5122        "internalType": "address"
5123      }
5124    ]
5125  },
5126  {
5127    "type": "error",
5128    "name": "ERC1967NonPayable",
5129    "inputs": []
5130  },
5131  {
5132    "type": "error",
5133    "name": "FailedInnerCall",
5134    "inputs": []
5135  },
5136  {
5137    "type": "error",
5138    "name": "InsufficientSnapshotHistory",
5139    "inputs": []
5140  },
5141  {
5142    "type": "error",
5143    "name": "InvalidAddress",
5144    "inputs": []
5145  },
5146  {
5147    "type": "error",
5148    "name": "InvalidArgs",
5149    "inputs": []
5150  },
5151  {
5152    "type": "error",
5153    "name": "InvalidHotShotBlockForCommitmentCheck",
5154    "inputs": []
5155  },
5156  {
5157    "type": "error",
5158    "name": "InvalidInitialization",
5159    "inputs": []
5160  },
5161  {
5162    "type": "error",
5163    "name": "InvalidMaxStateHistory",
5164    "inputs": []
5165  },
5166  {
5167    "type": "error",
5168    "name": "InvalidProof",
5169    "inputs": []
5170  },
5171  {
5172    "type": "error",
5173    "name": "MissingEpochRootUpdate",
5174    "inputs": []
5175  },
5176  {
5177    "type": "error",
5178    "name": "NoChangeRequired",
5179    "inputs": []
5180  },
5181  {
5182    "type": "error",
5183    "name": "NotInitializing",
5184    "inputs": []
5185  },
5186  {
5187    "type": "error",
5188    "name": "OutdatedState",
5189    "inputs": []
5190  },
5191  {
5192    "type": "error",
5193    "name": "OwnableInvalidOwner",
5194    "inputs": [
5195      {
5196        "name": "owner",
5197        "type": "address",
5198        "internalType": "address"
5199      }
5200    ]
5201  },
5202  {
5203    "type": "error",
5204    "name": "OwnableUnauthorizedAccount",
5205    "inputs": [
5206      {
5207        "name": "account",
5208        "type": "address",
5209        "internalType": "address"
5210      }
5211    ]
5212  },
5213  {
5214    "type": "error",
5215    "name": "ProverNotPermissioned",
5216    "inputs": []
5217  },
5218  {
5219    "type": "error",
5220    "name": "UUPSUnauthorizedCallContext",
5221    "inputs": []
5222  },
5223  {
5224    "type": "error",
5225    "name": "UUPSUnsupportedProxiableUUID",
5226    "inputs": [
5227      {
5228        "name": "slot",
5229        "type": "bytes32",
5230        "internalType": "bytes32"
5231      }
5232    ]
5233  },
5234  {
5235    "type": "error",
5236    "name": "WrongStakeTableUsed",
5237    "inputs": []
5238  }
5239]
5240```*/
5241#[allow(
5242    non_camel_case_types,
5243    non_snake_case,
5244    clippy::pub_underscore_fields,
5245    clippy::style,
5246    clippy::empty_structs_with_brackets
5247)]
5248pub mod LightClientV3 {
5249    use super::*;
5250    use alloy::sol_types as alloy_sol_types;
5251    /// The creation / init bytecode of the contract.
5252    ///
5253    /// ```text
5254    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516136d76100f95f395f8181611c4b01528181611c740152611df101526136d75ff3fe608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b61024636600461290f565b6107fd565b005b348015610258575f5ffd5b5061026c610267366004612928565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a1919061293f565b348015610343575f5ffd5b5061024b610352366004612b56565b61090e565b348015610362575f5ffd5b5061024b610371366004612e18565b610985565b348015610381575f5ffd5b50610395610390366004612b56565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b56565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e5f565b610b84565b61024b6104dd366004612e78565b610b98565b3480156104ed575f5ffd5b50610447610bb7565b348015610501575f5ffd5b5061024b610bd2565b348015610515575f5ffd5b5061024b610c40565b348015610529575f5ffd5b5061024b610371366004612f7b565b348015610543575f5ffd5b506103cb610c51565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a610585366004612928565b610c76565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612fbf565b610da1565b34801561060d575f5ffd5b5061024b61061c366004612e5f565b610e10565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fe7565b610e99565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461303c565b610fa8565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613080565b348015610711575f5ffd5b5061024b610720366004612fbf565b6112cd565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a63660046130b5565b61141e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e436600461290f565b611576565b3480156107f4575f5ffd5b50600954610447565b6108056115b5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612676565b610909611610565b905090565b6109166115b5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610da1565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130e9565b6109eb919061311c565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b03168361311c565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b0316613149565b600a546001600160401b0391821691610a8491168461311c565b6001600160401b0316115b92915050565b5f5160206136ab5f395f51905f52805460039190600160401b900460ff1680610acb575080546001600160401b03808416911610155b15610ae95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b239291810482169116610da1565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b8c6115b5565b610b9581610e10565b50565b610ba0611c40565b610ba982611ce4565b610bb38282611d25565b5050565b5f610bc0611de6565b505f51602061368b5f395f51905f5290565b610bda6115b5565b6008546001600160a01b031615610c2557600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c486115b5565b610c3e5f611e2f565b600654600a545f91610909916001600160401b03600160401b90920482169116610da1565b600980545f91829190610c8a600183613168565b81548110610c9a57610c9a61317b565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cd957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610d9a578460098281548110610d0957610d0961317b565b5f918252602090912060029091020154600160801b90046001600160401b03161115610d925760098181548110610d4257610d4261317b565b905f5260205f2090600202016001015460098281548110610d6557610d6561317b565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610ced565b5050915091565b5f816001600160401b03165f03610db957505f610a8f565b826001600160401b03165f03610dd157506001610a8f565b610ddb828461311c565b6001600160401b03165f03610dfb57610df4828461318f565b9050610a8f565b610e05828461318f565b610df49060016130e9565b610e186115b5565b610e108163ffffffff161080610e3757506301e133808163ffffffff16115b80610e55575060085463ffffffff600160a01b909104811690821611155b15610e73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f5160206136ab5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610eca5750825b90505f826001600160401b03166001148015610ee55750303b155b905081158015610ef3575080155b15610f115760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f3b57845460ff60401b1916600160401b1785555b610f4486611e9f565b610f4c611eb0565b610f57898989611eb8565b8315610f9d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fcd57506008546001600160a01b03163314155b15610feb576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b039182169116111580611024575060065460208501516001600160401b03600160401b9092048216911611155b156110425760405163051c46ef60e01b815260040160405180910390fd5b61104f8460400151611fe4565b61105c8360200151611fe4565b6110698360400151611fe4565b6110768360600151611fe4565b5f61107f610c51565b6020860151600a549192505f9161109f91906001600160401b0316610da1565b6010549091506001600160401b03908116908216106110e3576110c58660200151610a00565b156110e35760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561118f5760026111068383613149565b6001600160401b03161061112d5760405163080ae8d960e01b815260040160405180910390fd5b6111388260016130e9565b6001600160401b0316816001600160401b0316148015611171575060065461116f90600160401b90046001600160401b031661099e565b155b1561118f5760405163080ae8d960e01b815260040160405180910390fd5b61119b86868686612054565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906111f857506111f8866020015161099e565b15611262578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6112468260016130e9565b6040516001600160401b03909116815260200160405180910390a15b61126d43428861227e565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112bd91815260200190565b60405180910390a3505050505050565b5f5160206136ab5f395f51905f52805460029190600160401b900460ff1680611303575080546001600160401b03808416911610155b156113215760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611369576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113b28385610da1565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061142f575080155b806114795750600854600980549091600160c01b90046001600160401b031690811061145d5761145d61317b565b5f9182526020909120600290910201546001600160401b031684105b156114975760405163b0b4387760e01b815260040160405180910390fd5b5f80806114a5600185613168565b90505b8161154157600854600160c01b90046001600160401b031681106115415786600982815481106114da576114da61317b565b5f9182526020909120600290910201546001600160401b03161161152f57600191506009818154811061150f5761150f61317b565b5f9182526020909120600290910201546001600160401b03169250611541565b80611539816131bc565b9150506114a8565b8161155f5760405163b0b4387760e01b815260040160405180910390fd5b8561156a8489613168565b11979650505050505050565b61157e6115b5565b6001600160a01b0381166115ac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9581611e2f565b336115e77f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c3e5760405163118cdaa760e01b81523360048201526024016115a3565b611618612676565b621000008152600560208201527f16c1b1632363af8448a7c7d248805c17849b9e19aeb62d141535c10159b0e5496040820151527f2bfe19b5db372156e32e15bd635a784dd6801a7b81cef042046f932b13782cd66020604083015101527f2ca08b7426ae2a879a201bd96909db6c627c4a8abe9747cc82997e4f5fce6b3f6060820151527f03dadc1f9706837946aa9b5621d1f7b7da6663c666865e2e9f081ed8dcad53786020606083015101527f160318f2ef1ef58dc7ea7e899d6606aaaae66fa3cbf8d5bae8ce46dc65f217906080820151527f105292383887ba735d440de9cdeb1009c4aa0e200e6781b2861f7c6114da9c4a6020608083015101527f300c0e1378d63820fffacd81318daac213fdf6ef86a0b9489087c76290cea8fb60a0820151527f2f63a5f6aba0c9843dec452092af01b405a6074b652db2246f517067ff6fb783602060a083015101527f0567d525b146e6fd614f7b73d3047135fcd81373616e24207ab9f8d99d5c8cf960c0820151527f013ac106581a68aebca263c27ec7fa53c6b1429c8828e87fc620f6d0238c8213602060c083015101527f10dbfedd493a8cbbef5d6346ccdd8ab0fe3f3cf0261a131435cd4e6a8fb8fade60e0820151527f07d48caa7a525f2a8704bf7372d9a183f5d08679050f236b39a0e62b4a42fbfc602060e083015101527f1e85fc7abf0fff2d0d62fb678085392ae36e36aab232533e2eb6f5c4479840c4610100820151527f127619ba17a06cb739da010c032f4a85b71d9abf0de7a8ee01c7ccb1dd2925f2602061010083015101527f25df6164eca3502c92d72a143cfc6de7890b04f6f77702404e8f38f6e98b00fe610120820151527f05873b2145c021232a2acd9bc299bf516aaf4cc535d1239898b114f43607b9e3602061012083015101527f22ae9a99df003f27a03da15ef41b7d902f47b147ecdc5def8a3cfd708a0dcd02610140820151527f25339a8defa5de499f41ff48f450a969b833d0e6f2b176e3d0657215f0e13220602061014083015101527f12a45f8342c1f281c02cc4a200292fefb288e6ce675821452baa62424b03fd1a610160820151527f25ad0826fac2d04b0b0b2595270d89f0bc41ce3b08b0c3e33f85959f04361e4c602061016083015101527f195e7896b3215c0abdb19c80d81e03dd26fc80924239583dabf3336e711f3473610180820151527f1676326e1d9a90da7449d0c9ac392918fa7c608bc80c4efd0f805f42d5151425602061018083015101527f01edff1c3369046ed630565d4f65fec70e2573a099b09a1e832f9b7ad13fb0836101a0820151527f1b8ca1440500a3870c11e92e61c8edefa7cc89572bb867f21d6522cde0b35eed60206101a083015101527f04251a285ebe664265ae2fb27df929124e7da5bb5444e66dbd1442c9f945a5706101c0820151527f02af9a85fa2abd8372fcd4ba7fe91bd586dbbe41b8dbe6ec45fbae82cb61a6c760206101c083015101527f285b35f5e2635988ea3437ae87a35b185203e432a5ef168aae1689e47e3a03c76101e0820151527f28382f7da1a390a844c94b4b3bb75d97c850d91db53a87fdf4e05fa2c576c9d460206101e083015101527f1ea8baa2f6fb86466af3c2350bb698d8038416fbc82f8f75991f6c190b861a0d610200820151527f0f20f82a6e4a0f24e7a20e36c89f5663f0ea40935f1943c2d3dadceeb6f6e4d1602061020083015101527f104c9b902b47821d8d3318e0978fcaf4faf1881b7c87ea2e88426da99ccc5096610220820151527f26db115258030c94af87db761d96f84472105d98e55b1aa2b42ed46c32d53876602061022083015101527f05560f03f81c19391b17caf790bbf2fb974f32b44544943ce994b4b78e138734610240820151527f121dcbf43887c467c0a34c6deb6fd550a6f6726bba4b8270e69aa9dfbcf9afd5602061024083015101527f1ef3c93de0eda4562d45cd73db9b337be463b9decc40f40e3542a38984d28329610260820151527f1a828206b67ca2f8cb78a59acf966121b5e289d603e803da8627196cc00af7da602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cc657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cba5f51602061368b5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c3e5760405163703e46dd60e11b815260040160405180910390fd5b611cec6115b5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d7f575060408051601f3d908101601f19168201909252611d7c918101906131d1565b60015b611da757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115a3565b5f51602061368b5f395f51905f528114611dd757604051632a87526960e21b8152600481018290526024016115a3565b611de18383612467565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c3e5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611ea76124bc565b610b95816124f2565b610c3e6124bc565b82516001600160401b0316151580611edc575060208301516001600160401b031615155b80611ee957506020820151155b80611ef657506040820151155b80611f0357506060820151155b80611f0d57508151155b80611f1f5750610e108163ffffffff16105b80611f3357506301e133808163ffffffff16115b15611f51576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bb35760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c64000000000060448201526064016115a3565b5f61205d6108f9565b90506120676128db565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120bf57506120bf876020015161099e565b15612108576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a0016040516020818303038152906040529050612143565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261219491849089906020016131ff565b60408051601f19818403018152919052805160209091012090506121d87f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613221565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061221890879087908a90600401613416565b602060405180830381865af4158015612233573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122579190613636565b612274576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906122f3575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106122be576122be61317b565b5f9182526020909120600290910201546122e890600160401b90046001600160401b031684613149565b6001600160401b0316115b1561238657600854600980549091600160c01b90046001600160401b03169081106123205761232061317b565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861236083613655565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612470826124fa565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156124b457611de1828261255d565b610bb36125cf565b5f5160206136ab5f395f51905f5254600160401b900460ff16610c3e57604051631afcd79f60e31b815260040160405180910390fd5b61157e6124bc565b806001600160a01b03163b5f0361252f57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115a3565b5f51602061368b5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612579919061367f565b5f60405180830381855af49150503d805f81146125b1576040519150601f19603f3d011682016040523d82523d5f602084013e6125b6565b606091505b50915091506125c68583836125ee565b95945050505050565b3415610c3e5760405163b398979f60e01b815260040160405180910390fd5b606082612603576125fe8261264d565b612646565b815115801561261a57506001600160a01b0384163b155b1561264357604051639996b31560e01b81526001600160a01b03851660048201526024016115a3565b50805b9392505050565b80511561265d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016126a960405180604001604052805f81526020015f81525090565b81526020016126c960405180604001604052805f81526020015f81525090565b81526020016126e960405180604001604052805f81526020015f81525090565b815260200161270960405180604001604052805f81526020015f81525090565b815260200161272960405180604001604052805f81526020015f81525090565b815260200161274960405180604001604052805f81526020015f81525090565b815260200161276960405180604001604052805f81526020015f81525090565b815260200161278960405180604001604052805f81526020015f81525090565b81526020016127a960405180604001604052805f81526020015f81525090565b81526020016127c960405180604001604052805f81526020015f81525090565b81526020016127e960405180604001604052805f81526020015f81525090565b815260200161280960405180604001604052805f81526020015f81525090565b815260200161282960405180604001604052805f81526020015f81525090565b815260200161284960405180604001604052805f81526020015f81525090565b815260200161286960405180604001604052805f81526020015f81525090565b815260200161288960405180604001604052805f81526020015f81525090565b81526020016128a960405180604001604052805f81526020015f81525090565b81526020016128c960405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f6020828403121561291f575f5ffd5b612646826128f9565b5f60208284031215612938575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612971604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b66575f5ffd5b61264682612b40565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612ba657612ba6612b6f565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612bd457612bd4612b6f565b604052919050565b5f60608284031215612bec575f5ffd5b604051606081016001600160401b0381118282101715612c0e57612c0e612b6f565b604052905080612c1d83612b40565b8152612c2b60208401612b40565b6020820152604092830135920191909152919050565b5f60408284031215612c51575f5ffd5b604080519081016001600160401b0381118282101715612c7357612c73612b6f565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c9e575f5ffd5b612ca6612b83565b9050612cb28383612c41565b8152612cc18360408401612c41565b6020820152612cd38360808401612c41565b6040820152612ce58360c08401612c41565b6060820152612cf8836101008401612c41565b6080820152612d0b836101408401612c41565b60a0820152612d1e836101808401612c41565b60c0820152612d31836101c08401612c41565b60e0820152612d44836102008401612c41565b610100820152612d58836102408401612c41565b610120820152612d6c836102808401612c41565b610140820152612d80836102c08401612c41565b610160820152612d94836103008401612c41565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e2a575f5ffd5b612e348484612bdc565b9150612e438460608501612c8d565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e6f575f5ffd5b61264682612e4c565b5f5f60408385031215612e89575f5ffd5b612e92836128f9565b915060208301356001600160401b03811115612eac575f5ffd5b8301601f81018513612ebc575f5ffd5b80356001600160401b03811115612ed557612ed5612b6f565b612ee8601f8201601f1916602001612bac565b818152866020838501011115612efc575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f2b575f5ffd5b604051608081016001600160401b0381118282101715612f4d57612f4d612b6f565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f8e575f5ffd5b612f988585612bdc565b9250612fa78560608601612f1b565b9150612fb68560e08601612c8d565b90509250925092565b5f5f60408385031215612fd0575f5ffd5b612fd983612b40565b9150612e4360208401612b40565b5f5f5f5f6101208587031215612ffb575f5ffd5b6130058686612bdc565b93506130148660608701612f1b565b925061302260e08601612e4c565b915061303161010086016128f9565b905092959194509250565b5f5f5f5f6105808587031215613050575f5ffd5b61305a8686612bdc565b93506130698660608701612f1b565b925060e08501359150613031866101008701612c8d565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156130c6575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130d5565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061313457613134613108565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130d5565b81810381811115610a8f57610a8f6130d5565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806131a7576131a7613108565b806001600160401b0384160491505092915050565b5f816131ca576131ca6130d5565b505f190190565b5f602082840312156131e1575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f61321361320d83876131e8565b856131e8565b928352505060200192915050565b5f8261322f5761322f613108565b500690565b805f5b6005811015613256578151845260209384019390910190600101613237565b50505050565b61327182825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613448604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613620610500830185613234565b61362e6105a083018461325c565b949350505050565b5f60208284031215613646575f5ffd5b81518015158114612646575f5ffd5b5f6001600160401b0382166001600160401b038103613676576136766130d5565b60010192915050565b5f61264682846131e856fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5255    /// ```
5256    #[rustfmt::skip]
5257    #[allow(clippy::all)]
5258    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5259        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa6\xD7a\0\xF9_9_\x81\x81a\x1CK\x01R\x81\x81a\x1Ct\x01Ra\x1D\xF1\x01Ra6\xD7_\xF3\xFE`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a)\x0FV[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)(V[a\x08\xB0V[`@Qa\x02\xA1\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)?V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+VV[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\x18V[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+VV[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+VV[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a._V[a\x0B\x84V[a\x02Ka\x04\xDD6`\x04a.xV[a\x0B\x98V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xB7V[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xD2V[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0C@V[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/{V[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CQV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a)(V[a\x0CvV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\xBFV[a\r\xA1V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a._V[a\x0E\x10V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xE7V[a\x0E\x99V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0<V[a\x0F\xA8V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0\x80V[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\xBFV[a\x12\xCDV[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\xB5V[a\x14\x1EV[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a)\x0FV[a\x15vV[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xB5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x08[W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08\xBFW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\x01a&vV[a\t\ta\x16\x10V[\x90P\x90V[a\t\x16a\x15\xB5V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xA1V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xE9V[a\t\xEB\x91\x90a1\x1CV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a1\x1CV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1IV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a1\x1CV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_Q` a6\xAB_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xCBWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xE9W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x0B#\x92\x91\x81\x04\x82\x16\x91\x16a\r\xA1V[`\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\x8Ca\x15\xB5V[a\x0B\x95\x81a\x0E\x10V[PV[a\x0B\xA0a\x1C@V[a\x0B\xA9\x82a\x1C\xE4V[a\x0B\xB3\x82\x82a\x1D%V[PPV[_a\x0B\xC0a\x1D\xE6V[P_Q` a6\x8B_9_Q\x90_R\x90V[a\x0B\xDAa\x15\xB5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C%W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0CHa\x15\xB5V[a\x0C>_a\x1E/V[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xA1V[`\t\x80T_\x91\x82\x91\x90a\x0C\x8A`\x01\x83a1hV[\x81T\x81\x10a\x0C\x9AWa\x0C\x9Aa1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xD9W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\r\x9AW\x84`\t\x82\x81T\x81\x10a\r\tWa\r\ta1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\x92W`\t\x81\x81T\x81\x10a\rBWa\rBa1{V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\reWa\rea1{V[\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\x0C\xEDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xB9WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP`\x01a\n\x8FV[a\r\xDB\x82\x84a1\x1CV[`\x01`\x01`@\x1B\x03\x16_\x03a\r\xFBWa\r\xF4\x82\x84a1\x8FV[\x90Pa\n\x8FV[a\x0E\x05\x82\x84a1\x8FV[a\r\xF4\x90`\x01a0\xE9V[a\x0E\x18a\x15\xB5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0E7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0EsW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[_Q` a6\xAB_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xCAWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xE5WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xF3WP\x80\x15[\x15a\x0F\x11W`@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;W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0FD\x86a\x1E\x9FV[a\x0FLa\x1E\xB0V[a\x0FW\x89\x89\x89a\x1E\xB8V[\x83\x15a\x0F\x9DW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0F\xCDWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0F\xEBW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x10$WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10BW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10O\x84`@\x01Qa\x1F\xE4V[a\x10\\\x83` \x01Qa\x1F\xE4V[a\x10i\x83`@\x01Qa\x1F\xE4V[a\x10v\x83``\x01Qa\x1F\xE4V[_a\x10\x7Fa\x0CQV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\x9F\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xA1V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xE3Wa\x10\xC5\x86` \x01Qa\n\0V[\x15a\x10\xE3W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x11\x8FW`\x02a\x11\x06\x83\x83a1IV[`\x01`\x01`@\x1B\x03\x16\x10a\x11-W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x118\x82`\x01a0\xE9V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11qWP`\x06Ta\x11o\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\x8FW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\x9B\x86\x86\x86\x86a TV[\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\x11\xF8WPa\x11\xF8\x86` \x01Qa\t\x9EV[\x15a\x12bW\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\x12F\x82`\x01a0\xE9V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12mCB\x88a\"~V[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x12\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[_Q` a6\xAB_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13\x03WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13!W`@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\x13iW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\xB2\x83\x85a\r\xA1V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x14/WP\x80\x15[\x80a\x14yWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14]Wa\x14]a1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\x97W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xA5`\x01\x85a1hV[\x90P[\x81a\x15AW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15AW\x86`\t\x82\x81T\x81\x10a\x14\xDAWa\x14\xDAa1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15/W`\x01\x91P`\t\x81\x81T\x81\x10a\x15\x0FWa\x15\x0Fa1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15AV[\x80a\x159\x81a1\xBCV[\x91PPa\x14\xA8V[\x81a\x15_W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15j\x84\x89a1hV[\x11\x97\x96PPPPPPPV[a\x15~a\x15\xB5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xACW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x95\x81a\x1E/V[3a\x15\xE7\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>W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xA3V[a\x16\x18a&vV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F\x16\xC1\xB1c#c\xAF\x84H\xA7\xC7\xD2H\x80\\\x17\x84\x9B\x9E\x19\xAE\xB6-\x14\x155\xC1\x01Y\xB0\xE5I`@\x82\x01QR\x7F+\xFE\x19\xB5\xDB7!V\xE3.\x15\xBDcZxM\xD6\x80\x1A{\x81\xCE\xF0B\x04o\x93+\x13x,\xD6` `@\x83\x01Q\x01R\x7F,\xA0\x8Bt&\xAE*\x87\x9A \x1B\xD9i\t\xDBlb|J\x8A\xBE\x97G\xCC\x82\x99~O_\xCEk?``\x82\x01QR\x7F\x03\xDA\xDC\x1F\x97\x06\x83yF\xAA\x9BV!\xD1\xF7\xB7\xDAfc\xC6f\x86^.\x9F\x08\x1E\xD8\xDC\xADSx` ``\x83\x01Q\x01R\x7F\x16\x03\x18\xF2\xEF\x1E\xF5\x8D\xC7\xEA~\x89\x9Df\x06\xAA\xAA\xE6o\xA3\xCB\xF8\xD5\xBA\xE8\xCEF\xDCe\xF2\x17\x90`\x80\x82\x01QR\x7F\x10R\x9288\x87\xBAs]D\r\xE9\xCD\xEB\x10\t\xC4\xAA\x0E \x0Eg\x81\xB2\x86\x1F|a\x14\xDA\x9CJ` `\x80\x83\x01Q\x01R\x7F0\x0C\x0E\x13x\xD68 \xFF\xFA\xCD\x811\x8D\xAA\xC2\x13\xFD\xF6\xEF\x86\xA0\xB9H\x90\x87\xC7b\x90\xCE\xA8\xFB`\xA0\x82\x01QR\x7F/c\xA5\xF6\xAB\xA0\xC9\x84=\xECE \x92\xAF\x01\xB4\x05\xA6\x07Ke-\xB2$oQpg\xFFo\xB7\x83` `\xA0\x83\x01Q\x01R\x7F\x05g\xD5%\xB1F\xE6\xFDaO{s\xD3\x04q5\xFC\xD8\x13san$ z\xB9\xF8\xD9\x9D\\\x8C\xF9`\xC0\x82\x01QR\x7F\x01:\xC1\x06X\x1Ah\xAE\xBC\xA2c\xC2~\xC7\xFAS\xC6\xB1B\x9C\x88(\xE8\x7F\xC6 \xF6\xD0#\x8C\x82\x13` `\xC0\x83\x01Q\x01R\x7F\x10\xDB\xFE\xDDI:\x8C\xBB\xEF]cF\xCC\xDD\x8A\xB0\xFE?<\xF0&\x1A\x13\x145\xCDNj\x8F\xB8\xFA\xDE`\xE0\x82\x01QR\x7F\x07\xD4\x8C\xAAzR_*\x87\x04\xBFsr\xD9\xA1\x83\xF5\xD0\x86y\x05\x0F#k9\xA0\xE6+JB\xFB\xFC` `\xE0\x83\x01Q\x01R\x7F\x1E\x85\xFCz\xBF\x0F\xFF-\rb\xFBg\x80\x859*\xE3n6\xAA\xB22S>.\xB6\xF5\xC4G\x98@\xC4a\x01\0\x82\x01QR\x7F\x12v\x19\xBA\x17\xA0l\xB79\xDA\x01\x0C\x03/J\x85\xB7\x1D\x9A\xBF\r\xE7\xA8\xEE\x01\xC7\xCC\xB1\xDD)%\xF2` a\x01\0\x83\x01Q\x01R\x7F%\xDFad\xEC\xA3P,\x92\xD7*\x14<\xFCm\xE7\x89\x0B\x04\xF6\xF7w\x02@N\x8F8\xF6\xE9\x8B\0\xFEa\x01 \x82\x01QR\x7F\x05\x87;!E\xC0!#**\xCD\x9B\xC2\x99\xBFQj\xAFL\xC55\xD1#\x98\x98\xB1\x14\xF46\x07\xB9\xE3` a\x01 \x83\x01Q\x01R\x7F\"\xAE\x9A\x99\xDF\0?'\xA0=\xA1^\xF4\x1B}\x90/G\xB1G\xEC\xDC]\xEF\x8A<\xFDp\x8A\r\xCD\x02a\x01@\x82\x01QR\x7F%3\x9A\x8D\xEF\xA5\xDEI\x9FA\xFFH\xF4P\xA9i\xB83\xD0\xE6\xF2\xB1v\xE3\xD0er\x15\xF0\xE12 ` a\x01@\x83\x01Q\x01R\x7F\x12\xA4_\x83B\xC1\xF2\x81\xC0,\xC4\xA2\0)/\xEF\xB2\x88\xE6\xCEgX!E+\xAAbBK\x03\xFD\x1Aa\x01`\x82\x01QR\x7F%\xAD\x08&\xFA\xC2\xD0K\x0B\x0B%\x95'\r\x89\xF0\xBCA\xCE;\x08\xB0\xC3\xE3?\x85\x95\x9F\x046\x1EL` a\x01`\x83\x01Q\x01R\x7F\x19^x\x96\xB3!\\\n\xBD\xB1\x9C\x80\xD8\x1E\x03\xDD&\xFC\x80\x92B9X=\xAB\xF33nq\x1F4sa\x01\x80\x82\x01QR\x7F\x16v2n\x1D\x9A\x90\xDAtI\xD0\xC9\xAC9)\x18\xFA|`\x8B\xC8\x0CN\xFD\x0F\x80_B\xD5\x15\x14%` a\x01\x80\x83\x01Q\x01R\x7F\x01\xED\xFF\x1C3i\x04n\xD60V]Oe\xFE\xC7\x0E%s\xA0\x99\xB0\x9A\x1E\x83/\x9Bz\xD1?\xB0\x83a\x01\xA0\x82\x01QR\x7F\x1B\x8C\xA1D\x05\0\xA3\x87\x0C\x11\xE9.a\xC8\xED\xEF\xA7\xCC\x89W+\xB8g\xF2\x1De\"\xCD\xE0\xB3^\xED` a\x01\xA0\x83\x01Q\x01R\x7F\x04%\x1A(^\xBEfBe\xAE/\xB2}\xF9)\x12N}\xA5\xBBTD\xE6m\xBD\x14B\xC9\xF9E\xA5pa\x01\xC0\x82\x01QR\x7F\x02\xAF\x9A\x85\xFA*\xBD\x83r\xFC\xD4\xBA\x7F\xE9\x1B\xD5\x86\xDB\xBEA\xB8\xDB\xE6\xECE\xFB\xAE\x82\xCBa\xA6\xC7` a\x01\xC0\x83\x01Q\x01R\x7F([5\xF5\xE2cY\x88\xEA47\xAE\x87\xA3[\x18R\x03\xE42\xA5\xEF\x16\x8A\xAE\x16\x89\xE4~:\x03\xC7a\x01\xE0\x82\x01QR\x7F(8/}\xA1\xA3\x90\xA8D\xC9KK;\xB7]\x97\xC8P\xD9\x1D\xB5:\x87\xFD\xF4\xE0_\xA2\xC5v\xC9\xD4` a\x01\xE0\x83\x01Q\x01R\x7F\x1E\xA8\xBA\xA2\xF6\xFB\x86Fj\xF3\xC25\x0B\xB6\x98\xD8\x03\x84\x16\xFB\xC8/\x8Fu\x99\x1Fl\x19\x0B\x86\x1A\ra\x02\0\x82\x01QR\x7F\x0F \xF8*nJ\x0F$\xE7\xA2\x0E6\xC8\x9FVc\xF0\xEA@\x93_\x19C\xC2\xD3\xDA\xDC\xEE\xB6\xF6\xE4\xD1` a\x02\0\x83\x01Q\x01R\x7F\x10L\x9B\x90+G\x82\x1D\x8D3\x18\xE0\x97\x8F\xCA\xF4\xFA\xF1\x88\x1B|\x87\xEA.\x88Bm\xA9\x9C\xCCP\x96a\x02 \x82\x01QR\x7F&\xDB\x11RX\x03\x0C\x94\xAF\x87\xDBv\x1D\x96\xF8Dr\x10]\x98\xE5[\x1A\xA2\xB4.\xD4l2\xD58v` a\x02 \x83\x01Q\x01R\x7F\x05V\x0F\x03\xF8\x1C\x199\x1B\x17\xCA\xF7\x90\xBB\xF2\xFB\x97O2\xB4ED\x94<\xE9\x94\xB4\xB7\x8E\x13\x874a\x02@\x82\x01QR\x7F\x12\x1D\xCB\xF48\x87\xC4g\xC0\xA3Lm\xEBo\xD5P\xA6\xF6rk\xBAK\x82p\xE6\x9A\xA9\xDF\xBC\xF9\xAF\xD5` a\x02@\x83\x01Q\x01R\x7F\x1E\xF3\xC9=\xE0\xED\xA4V-E\xCDs\xDB\x9B3{\xE4c\xB9\xDE\xCC@\xF4\x0E5B\xA3\x89\x84\xD2\x83)a\x02`\x82\x01QR\x7F\x1A\x82\x82\x06\xB6|\xA2\xF8\xCBx\xA5\x9A\xCF\x96a!\xB5\xE2\x89\xD6\x03\xE8\x03\xDA\x86'\x19l\xC0\n\xF7\xDA` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xC6WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xBA_Q` a6\x8B_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\xECa\x15\xB5V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08\xA5V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x7FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D|\x91\x81\x01\x90a1\xD1V[`\x01[a\x1D\xA7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xA3V[_Q` a6\x8B_9_Q\x90_R\x81\x14a\x1D\xD7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xA3V[a\x1D\xE1\x83\x83a$gV[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>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1E\xA7a$\xBCV[a\x0B\x95\x81a$\xF2V[a\x0C>a$\xBCV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\xDCWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\xE9WP` \x82\x01Q\x15[\x80a\x1E\xF6WP`@\x82\x01Q\x15[\x80a\x1F\x03WP``\x82\x01Q\x15[\x80a\x1F\rWP\x81Q\x15[\x80a\x1F\x1FWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1F3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1FQW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x0B\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x15\xA3V[_a ]a\x08\xF9V[\x90Pa ga(\xDBV[`\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 \xBFWPa \xBF\x87` \x01Qa\t\x9EV[\x15a!\x08W`@\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!CV[`@\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!\x94\x91\x84\x90\x89\x90` \x01a1\xFFV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!\xD8\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2!V[`\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\"\x18\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4\x16V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\"3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"W\x91\x90a66V[a\"tW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"\xF3WP`\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\"\xBEWa\"\xBEa1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"\xE8\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1IV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#\x86W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a# Wa# a1{V[_\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#`\x83a6UV[\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[a$p\x82a$\xFAV[`@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$\xB4Wa\x1D\xE1\x82\x82a%]V[a\x0B\xB3a%\xCFV[_Q` a6\xAB_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C>W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15~a$\xBCV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%/W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xA3V[_Q` a6\x8B_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%y\x91\x90a6\x7FV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\xB1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\xB6V[``\x91P[P\x91P\x91Pa%\xC6\x85\x83\x83a%\xEEV[\x95\x94PPPPPV[4\x15a\x0C>W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\x03Wa%\xFE\x82a&MV[a&FV[\x81Q\x15\x80\x15a&\x1AWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&CW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xA3V[P\x80[\x93\x92PPPV[\x80Q\x15a&]W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a&\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xE9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\t`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a')`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'I`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'i`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x89`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xE9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\t`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a()`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(I`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(i`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x89`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a)\x1FW__\xFD[a&F\x82a(\xF9V[_` \x82\x84\x03\x12\x15a)8W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)q`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+fW__\xFD[a&F\x82a+@V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xA6Wa+\xA6a+oV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xD4Wa+\xD4a+oV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xECW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x0EWa,\x0Ea+oV[`@R\x90P\x80a,\x1D\x83a+@V[\x81Ra,+` \x84\x01a+@V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,QW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,sWa,sa+oV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,\x9EW__\xFD[a,\xA6a+\x83V[\x90Pa,\xB2\x83\x83a,AV[\x81Ra,\xC1\x83`@\x84\x01a,AV[` \x82\x01Ra,\xD3\x83`\x80\x84\x01a,AV[`@\x82\x01Ra,\xE5\x83`\xC0\x84\x01a,AV[``\x82\x01Ra,\xF8\x83a\x01\0\x84\x01a,AV[`\x80\x82\x01Ra-\x0B\x83a\x01@\x84\x01a,AV[`\xA0\x82\x01Ra-\x1E\x83a\x01\x80\x84\x01a,AV[`\xC0\x82\x01Ra-1\x83a\x01\xC0\x84\x01a,AV[`\xE0\x82\x01Ra-D\x83a\x02\0\x84\x01a,AV[a\x01\0\x82\x01Ra-X\x83a\x02@\x84\x01a,AV[a\x01 \x82\x01Ra-l\x83a\x02\x80\x84\x01a,AV[a\x01@\x82\x01Ra-\x80\x83a\x02\xC0\x84\x01a,AV[a\x01`\x82\x01Ra-\x94\x83a\x03\0\x84\x01a,AV[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.*W__\xFD[a.4\x84\x84a+\xDCV[\x91Pa.C\x84``\x85\x01a,\x8DV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.oW__\xFD[a&F\x82a.LV[__`@\x83\x85\x03\x12\x15a.\x89W__\xFD[a.\x92\x83a(\xF9V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xACW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\xBCW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xD5Wa.\xD5a+oV[a.\xE8`\x1F\x82\x01`\x1F\x19\x16` \x01a+\xACV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xFCW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/+W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/MWa/Ma+oV[`@\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/\x8EW__\xFD[a/\x98\x85\x85a+\xDCV[\x92Pa/\xA7\x85``\x86\x01a/\x1BV[\x91Pa/\xB6\x85`\xE0\x86\x01a,\x8DV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xD0W__\xFD[a/\xD9\x83a+@V[\x91Pa.C` \x84\x01a+@V[____a\x01 \x85\x87\x03\x12\x15a/\xFBW__\xFD[a0\x05\x86\x86a+\xDCV[\x93Pa0\x14\x86``\x87\x01a/\x1BV[\x92Pa0\"`\xE0\x86\x01a.LV[\x91Pa01a\x01\0\x86\x01a(\xF9V[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0PW__\xFD[a0Z\x86\x86a+\xDCV[\x93Pa0i\x86``\x87\x01a/\x1BV[\x92P`\xE0\x85\x015\x91Pa01\x86a\x01\0\x87\x01a,\x8DV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a0\xC6W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xD5V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a14Wa14a1\x08V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xD5V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xD5V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\xA7Wa1\xA7a1\x08V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\xCAWa1\xCAa0\xD5V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xE1W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x13a2\r\x83\x87a1\xE8V[\x85a1\xE8V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2/Wa2/a1\x08V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2VW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a27V[PPPPV[a2q\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\x01Qa4H`@\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 a\x05\0\x83\x01\x85a24V[a6.a\x05\xA0\x83\x01\x84a2\\V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a6FW__\xFD[\x81Q\x80\x15\x15\x81\x14a&FW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6vWa6va0\xD5V[`\x01\x01\x92\x91PPV[_a&F\x82\x84a1\xE8V\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",
5260    );
5261    /// The runtime bytecode of the contract, as deployed on the network.
5262    ///
5263    /// ```text
5264    ///0x608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b61024636600461290f565b6107fd565b005b348015610258575f5ffd5b5061026c610267366004612928565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a1919061293f565b348015610343575f5ffd5b5061024b610352366004612b56565b61090e565b348015610362575f5ffd5b5061024b610371366004612e18565b610985565b348015610381575f5ffd5b50610395610390366004612b56565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b56565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e5f565b610b84565b61024b6104dd366004612e78565b610b98565b3480156104ed575f5ffd5b50610447610bb7565b348015610501575f5ffd5b5061024b610bd2565b348015610515575f5ffd5b5061024b610c40565b348015610529575f5ffd5b5061024b610371366004612f7b565b348015610543575f5ffd5b506103cb610c51565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a610585366004612928565b610c76565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612fbf565b610da1565b34801561060d575f5ffd5b5061024b61061c366004612e5f565b610e10565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fe7565b610e99565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461303c565b610fa8565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613080565b348015610711575f5ffd5b5061024b610720366004612fbf565b6112cd565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a63660046130b5565b61141e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e436600461290f565b611576565b3480156107f4575f5ffd5b50600954610447565b6108056115b5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612676565b610909611610565b905090565b6109166115b5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610da1565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130e9565b6109eb919061311c565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b03168361311c565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b0316613149565b600a546001600160401b0391821691610a8491168461311c565b6001600160401b0316115b92915050565b5f5160206136ab5f395f51905f52805460039190600160401b900460ff1680610acb575080546001600160401b03808416911610155b15610ae95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b239291810482169116610da1565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b8c6115b5565b610b9581610e10565b50565b610ba0611c40565b610ba982611ce4565b610bb38282611d25565b5050565b5f610bc0611de6565b505f51602061368b5f395f51905f5290565b610bda6115b5565b6008546001600160a01b031615610c2557600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c486115b5565b610c3e5f611e2f565b600654600a545f91610909916001600160401b03600160401b90920482169116610da1565b600980545f91829190610c8a600183613168565b81548110610c9a57610c9a61317b565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cd957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610d9a578460098281548110610d0957610d0961317b565b5f918252602090912060029091020154600160801b90046001600160401b03161115610d925760098181548110610d4257610d4261317b565b905f5260205f2090600202016001015460098281548110610d6557610d6561317b565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610ced565b5050915091565b5f816001600160401b03165f03610db957505f610a8f565b826001600160401b03165f03610dd157506001610a8f565b610ddb828461311c565b6001600160401b03165f03610dfb57610df4828461318f565b9050610a8f565b610e05828461318f565b610df49060016130e9565b610e186115b5565b610e108163ffffffff161080610e3757506301e133808163ffffffff16115b80610e55575060085463ffffffff600160a01b909104811690821611155b15610e73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f5160206136ab5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610eca5750825b90505f826001600160401b03166001148015610ee55750303b155b905081158015610ef3575080155b15610f115760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f3b57845460ff60401b1916600160401b1785555b610f4486611e9f565b610f4c611eb0565b610f57898989611eb8565b8315610f9d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fcd57506008546001600160a01b03163314155b15610feb576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b039182169116111580611024575060065460208501516001600160401b03600160401b9092048216911611155b156110425760405163051c46ef60e01b815260040160405180910390fd5b61104f8460400151611fe4565b61105c8360200151611fe4565b6110698360400151611fe4565b6110768360600151611fe4565b5f61107f610c51565b6020860151600a549192505f9161109f91906001600160401b0316610da1565b6010549091506001600160401b03908116908216106110e3576110c58660200151610a00565b156110e35760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561118f5760026111068383613149565b6001600160401b03161061112d5760405163080ae8d960e01b815260040160405180910390fd5b6111388260016130e9565b6001600160401b0316816001600160401b0316148015611171575060065461116f90600160401b90046001600160401b031661099e565b155b1561118f5760405163080ae8d960e01b815260040160405180910390fd5b61119b86868686612054565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906111f857506111f8866020015161099e565b15611262578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6112468260016130e9565b6040516001600160401b03909116815260200160405180910390a15b61126d43428861227e565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112bd91815260200190565b60405180910390a3505050505050565b5f5160206136ab5f395f51905f52805460029190600160401b900460ff1680611303575080546001600160401b03808416911610155b156113215760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611369576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113b28385610da1565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061142f575080155b806114795750600854600980549091600160c01b90046001600160401b031690811061145d5761145d61317b565b5f9182526020909120600290910201546001600160401b031684105b156114975760405163b0b4387760e01b815260040160405180910390fd5b5f80806114a5600185613168565b90505b8161154157600854600160c01b90046001600160401b031681106115415786600982815481106114da576114da61317b565b5f9182526020909120600290910201546001600160401b03161161152f57600191506009818154811061150f5761150f61317b565b5f9182526020909120600290910201546001600160401b03169250611541565b80611539816131bc565b9150506114a8565b8161155f5760405163b0b4387760e01b815260040160405180910390fd5b8561156a8489613168565b11979650505050505050565b61157e6115b5565b6001600160a01b0381166115ac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9581611e2f565b336115e77f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c3e5760405163118cdaa760e01b81523360048201526024016115a3565b611618612676565b621000008152600560208201527f16c1b1632363af8448a7c7d248805c17849b9e19aeb62d141535c10159b0e5496040820151527f2bfe19b5db372156e32e15bd635a784dd6801a7b81cef042046f932b13782cd66020604083015101527f2ca08b7426ae2a879a201bd96909db6c627c4a8abe9747cc82997e4f5fce6b3f6060820151527f03dadc1f9706837946aa9b5621d1f7b7da6663c666865e2e9f081ed8dcad53786020606083015101527f160318f2ef1ef58dc7ea7e899d6606aaaae66fa3cbf8d5bae8ce46dc65f217906080820151527f105292383887ba735d440de9cdeb1009c4aa0e200e6781b2861f7c6114da9c4a6020608083015101527f300c0e1378d63820fffacd81318daac213fdf6ef86a0b9489087c76290cea8fb60a0820151527f2f63a5f6aba0c9843dec452092af01b405a6074b652db2246f517067ff6fb783602060a083015101527f0567d525b146e6fd614f7b73d3047135fcd81373616e24207ab9f8d99d5c8cf960c0820151527f013ac106581a68aebca263c27ec7fa53c6b1429c8828e87fc620f6d0238c8213602060c083015101527f10dbfedd493a8cbbef5d6346ccdd8ab0fe3f3cf0261a131435cd4e6a8fb8fade60e0820151527f07d48caa7a525f2a8704bf7372d9a183f5d08679050f236b39a0e62b4a42fbfc602060e083015101527f1e85fc7abf0fff2d0d62fb678085392ae36e36aab232533e2eb6f5c4479840c4610100820151527f127619ba17a06cb739da010c032f4a85b71d9abf0de7a8ee01c7ccb1dd2925f2602061010083015101527f25df6164eca3502c92d72a143cfc6de7890b04f6f77702404e8f38f6e98b00fe610120820151527f05873b2145c021232a2acd9bc299bf516aaf4cc535d1239898b114f43607b9e3602061012083015101527f22ae9a99df003f27a03da15ef41b7d902f47b147ecdc5def8a3cfd708a0dcd02610140820151527f25339a8defa5de499f41ff48f450a969b833d0e6f2b176e3d0657215f0e13220602061014083015101527f12a45f8342c1f281c02cc4a200292fefb288e6ce675821452baa62424b03fd1a610160820151527f25ad0826fac2d04b0b0b2595270d89f0bc41ce3b08b0c3e33f85959f04361e4c602061016083015101527f195e7896b3215c0abdb19c80d81e03dd26fc80924239583dabf3336e711f3473610180820151527f1676326e1d9a90da7449d0c9ac392918fa7c608bc80c4efd0f805f42d5151425602061018083015101527f01edff1c3369046ed630565d4f65fec70e2573a099b09a1e832f9b7ad13fb0836101a0820151527f1b8ca1440500a3870c11e92e61c8edefa7cc89572bb867f21d6522cde0b35eed60206101a083015101527f04251a285ebe664265ae2fb27df929124e7da5bb5444e66dbd1442c9f945a5706101c0820151527f02af9a85fa2abd8372fcd4ba7fe91bd586dbbe41b8dbe6ec45fbae82cb61a6c760206101c083015101527f285b35f5e2635988ea3437ae87a35b185203e432a5ef168aae1689e47e3a03c76101e0820151527f28382f7da1a390a844c94b4b3bb75d97c850d91db53a87fdf4e05fa2c576c9d460206101e083015101527f1ea8baa2f6fb86466af3c2350bb698d8038416fbc82f8f75991f6c190b861a0d610200820151527f0f20f82a6e4a0f24e7a20e36c89f5663f0ea40935f1943c2d3dadceeb6f6e4d1602061020083015101527f104c9b902b47821d8d3318e0978fcaf4faf1881b7c87ea2e88426da99ccc5096610220820151527f26db115258030c94af87db761d96f84472105d98e55b1aa2b42ed46c32d53876602061022083015101527f05560f03f81c19391b17caf790bbf2fb974f32b44544943ce994b4b78e138734610240820151527f121dcbf43887c467c0a34c6deb6fd550a6f6726bba4b8270e69aa9dfbcf9afd5602061024083015101527f1ef3c93de0eda4562d45cd73db9b337be463b9decc40f40e3542a38984d28329610260820151527f1a828206b67ca2f8cb78a59acf966121b5e289d603e803da8627196cc00af7da602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cc657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cba5f51602061368b5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c3e5760405163703e46dd60e11b815260040160405180910390fd5b611cec6115b5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d7f575060408051601f3d908101601f19168201909252611d7c918101906131d1565b60015b611da757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115a3565b5f51602061368b5f395f51905f528114611dd757604051632a87526960e21b8152600481018290526024016115a3565b611de18383612467565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c3e5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611ea76124bc565b610b95816124f2565b610c3e6124bc565b82516001600160401b0316151580611edc575060208301516001600160401b031615155b80611ee957506020820151155b80611ef657506040820151155b80611f0357506060820151155b80611f0d57508151155b80611f1f5750610e108163ffffffff16105b80611f3357506301e133808163ffffffff16115b15611f51576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bb35760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c64000000000060448201526064016115a3565b5f61205d6108f9565b90506120676128db565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120bf57506120bf876020015161099e565b15612108576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a0016040516020818303038152906040529050612143565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261219491849089906020016131ff565b60408051601f19818403018152919052805160209091012090506121d87f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613221565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061221890879087908a90600401613416565b602060405180830381865af4158015612233573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122579190613636565b612274576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906122f3575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106122be576122be61317b565b5f9182526020909120600290910201546122e890600160401b90046001600160401b031684613149565b6001600160401b0316115b1561238657600854600980549091600160c01b90046001600160401b03169081106123205761232061317b565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861236083613655565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612470826124fa565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156124b457611de1828261255d565b610bb36125cf565b5f5160206136ab5f395f51905f5254600160401b900460ff16610c3e57604051631afcd79f60e31b815260040160405180910390fd5b61157e6124bc565b806001600160a01b03163b5f0361252f57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115a3565b5f51602061368b5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612579919061367f565b5f60405180830381855af49150503d805f81146125b1576040519150601f19603f3d011682016040523d82523d5f602084013e6125b6565b606091505b50915091506125c68583836125ee565b95945050505050565b3415610c3e5760405163b398979f60e01b815260040160405180910390fd5b606082612603576125fe8261264d565b612646565b815115801561261a57506001600160a01b0384163b155b1561264357604051639996b31560e01b81526001600160a01b03851660048201526024016115a3565b50805b9392505050565b80511561265d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016126a960405180604001604052805f81526020015f81525090565b81526020016126c960405180604001604052805f81526020015f81525090565b81526020016126e960405180604001604052805f81526020015f81525090565b815260200161270960405180604001604052805f81526020015f81525090565b815260200161272960405180604001604052805f81526020015f81525090565b815260200161274960405180604001604052805f81526020015f81525090565b815260200161276960405180604001604052805f81526020015f81525090565b815260200161278960405180604001604052805f81526020015f81525090565b81526020016127a960405180604001604052805f81526020015f81525090565b81526020016127c960405180604001604052805f81526020015f81525090565b81526020016127e960405180604001604052805f81526020015f81525090565b815260200161280960405180604001604052805f81526020015f81525090565b815260200161282960405180604001604052805f81526020015f81525090565b815260200161284960405180604001604052805f81526020015f81525090565b815260200161286960405180604001604052805f81526020015f81525090565b815260200161288960405180604001604052805f81526020015f81525090565b81526020016128a960405180604001604052805f81526020015f81525090565b81526020016128c960405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f6020828403121561291f575f5ffd5b612646826128f9565b5f60208284031215612938575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612971604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b66575f5ffd5b61264682612b40565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612ba657612ba6612b6f565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612bd457612bd4612b6f565b604052919050565b5f60608284031215612bec575f5ffd5b604051606081016001600160401b0381118282101715612c0e57612c0e612b6f565b604052905080612c1d83612b40565b8152612c2b60208401612b40565b6020820152604092830135920191909152919050565b5f60408284031215612c51575f5ffd5b604080519081016001600160401b0381118282101715612c7357612c73612b6f565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c9e575f5ffd5b612ca6612b83565b9050612cb28383612c41565b8152612cc18360408401612c41565b6020820152612cd38360808401612c41565b6040820152612ce58360c08401612c41565b6060820152612cf8836101008401612c41565b6080820152612d0b836101408401612c41565b60a0820152612d1e836101808401612c41565b60c0820152612d31836101c08401612c41565b60e0820152612d44836102008401612c41565b610100820152612d58836102408401612c41565b610120820152612d6c836102808401612c41565b610140820152612d80836102c08401612c41565b610160820152612d94836103008401612c41565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e2a575f5ffd5b612e348484612bdc565b9150612e438460608501612c8d565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e6f575f5ffd5b61264682612e4c565b5f5f60408385031215612e89575f5ffd5b612e92836128f9565b915060208301356001600160401b03811115612eac575f5ffd5b8301601f81018513612ebc575f5ffd5b80356001600160401b03811115612ed557612ed5612b6f565b612ee8601f8201601f1916602001612bac565b818152866020838501011115612efc575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f2b575f5ffd5b604051608081016001600160401b0381118282101715612f4d57612f4d612b6f565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f8e575f5ffd5b612f988585612bdc565b9250612fa78560608601612f1b565b9150612fb68560e08601612c8d565b90509250925092565b5f5f60408385031215612fd0575f5ffd5b612fd983612b40565b9150612e4360208401612b40565b5f5f5f5f6101208587031215612ffb575f5ffd5b6130058686612bdc565b93506130148660608701612f1b565b925061302260e08601612e4c565b915061303161010086016128f9565b905092959194509250565b5f5f5f5f6105808587031215613050575f5ffd5b61305a8686612bdc565b93506130698660608701612f1b565b925060e08501359150613031866101008701612c8d565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156130c6575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130d5565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061313457613134613108565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130d5565b81810381811115610a8f57610a8f6130d5565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806131a7576131a7613108565b806001600160401b0384160491505092915050565b5f816131ca576131ca6130d5565b505f190190565b5f602082840312156131e1575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f61321361320d83876131e8565b856131e8565b928352505060200192915050565b5f8261322f5761322f613108565b500690565b805f5b6005811015613256578151845260209384019390910190600101613237565b50505050565b61327182825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613448604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613620610500830185613234565b61362e6105a083018461325c565b949350505050565b5f60208284031215613646575f5ffd5b81518015158114612646575f5ffd5b5f6001600160401b0382166001600160401b038103613676576136766130d5565b60010192915050565b5f61264682846131e856fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5265    /// ```
5266    #[rustfmt::skip]
5267    #[allow(clippy::all)]
5268    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5269        b"`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a)\x0FV[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)(V[a\x08\xB0V[`@Qa\x02\xA1\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)?V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+VV[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\x18V[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+VV[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+VV[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a._V[a\x0B\x84V[a\x02Ka\x04\xDD6`\x04a.xV[a\x0B\x98V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xB7V[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xD2V[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0C@V[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/{V[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CQV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a)(V[a\x0CvV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\xBFV[a\r\xA1V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a._V[a\x0E\x10V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xE7V[a\x0E\x99V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0<V[a\x0F\xA8V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0\x80V[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\xBFV[a\x12\xCDV[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\xB5V[a\x14\x1EV[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a)\x0FV[a\x15vV[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xB5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x08[W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08\xBFW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\x01a&vV[a\t\ta\x16\x10V[\x90P\x90V[a\t\x16a\x15\xB5V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xA1V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xE9V[a\t\xEB\x91\x90a1\x1CV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a1\x1CV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1IV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a1\x1CV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_Q` a6\xAB_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xCBWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xE9W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x0B#\x92\x91\x81\x04\x82\x16\x91\x16a\r\xA1V[`\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\x8Ca\x15\xB5V[a\x0B\x95\x81a\x0E\x10V[PV[a\x0B\xA0a\x1C@V[a\x0B\xA9\x82a\x1C\xE4V[a\x0B\xB3\x82\x82a\x1D%V[PPV[_a\x0B\xC0a\x1D\xE6V[P_Q` a6\x8B_9_Q\x90_R\x90V[a\x0B\xDAa\x15\xB5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C%W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0CHa\x15\xB5V[a\x0C>_a\x1E/V[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xA1V[`\t\x80T_\x91\x82\x91\x90a\x0C\x8A`\x01\x83a1hV[\x81T\x81\x10a\x0C\x9AWa\x0C\x9Aa1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xD9W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\r\x9AW\x84`\t\x82\x81T\x81\x10a\r\tWa\r\ta1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\x92W`\t\x81\x81T\x81\x10a\rBWa\rBa1{V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\reWa\rea1{V[\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\x0C\xEDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xB9WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP`\x01a\n\x8FV[a\r\xDB\x82\x84a1\x1CV[`\x01`\x01`@\x1B\x03\x16_\x03a\r\xFBWa\r\xF4\x82\x84a1\x8FV[\x90Pa\n\x8FV[a\x0E\x05\x82\x84a1\x8FV[a\r\xF4\x90`\x01a0\xE9V[a\x0E\x18a\x15\xB5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0E7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0EsW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[_Q` a6\xAB_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xCAWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xE5WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xF3WP\x80\x15[\x15a\x0F\x11W`@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;W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0FD\x86a\x1E\x9FV[a\x0FLa\x1E\xB0V[a\x0FW\x89\x89\x89a\x1E\xB8V[\x83\x15a\x0F\x9DW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0F\xCDWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0F\xEBW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x10$WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10BW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10O\x84`@\x01Qa\x1F\xE4V[a\x10\\\x83` \x01Qa\x1F\xE4V[a\x10i\x83`@\x01Qa\x1F\xE4V[a\x10v\x83``\x01Qa\x1F\xE4V[_a\x10\x7Fa\x0CQV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\x9F\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xA1V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xE3Wa\x10\xC5\x86` \x01Qa\n\0V[\x15a\x10\xE3W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x11\x8FW`\x02a\x11\x06\x83\x83a1IV[`\x01`\x01`@\x1B\x03\x16\x10a\x11-W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x118\x82`\x01a0\xE9V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11qWP`\x06Ta\x11o\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\x8FW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\x9B\x86\x86\x86\x86a TV[\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\x11\xF8WPa\x11\xF8\x86` \x01Qa\t\x9EV[\x15a\x12bW\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\x12F\x82`\x01a0\xE9V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12mCB\x88a\"~V[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x12\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[_Q` a6\xAB_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13\x03WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13!W`@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\x13iW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\xB2\x83\x85a\r\xA1V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x14/WP\x80\x15[\x80a\x14yWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14]Wa\x14]a1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\x97W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xA5`\x01\x85a1hV[\x90P[\x81a\x15AW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15AW\x86`\t\x82\x81T\x81\x10a\x14\xDAWa\x14\xDAa1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15/W`\x01\x91P`\t\x81\x81T\x81\x10a\x15\x0FWa\x15\x0Fa1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15AV[\x80a\x159\x81a1\xBCV[\x91PPa\x14\xA8V[\x81a\x15_W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15j\x84\x89a1hV[\x11\x97\x96PPPPPPPV[a\x15~a\x15\xB5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xACW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x95\x81a\x1E/V[3a\x15\xE7\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>W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xA3V[a\x16\x18a&vV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F\x16\xC1\xB1c#c\xAF\x84H\xA7\xC7\xD2H\x80\\\x17\x84\x9B\x9E\x19\xAE\xB6-\x14\x155\xC1\x01Y\xB0\xE5I`@\x82\x01QR\x7F+\xFE\x19\xB5\xDB7!V\xE3.\x15\xBDcZxM\xD6\x80\x1A{\x81\xCE\xF0B\x04o\x93+\x13x,\xD6` `@\x83\x01Q\x01R\x7F,\xA0\x8Bt&\xAE*\x87\x9A \x1B\xD9i\t\xDBlb|J\x8A\xBE\x97G\xCC\x82\x99~O_\xCEk?``\x82\x01QR\x7F\x03\xDA\xDC\x1F\x97\x06\x83yF\xAA\x9BV!\xD1\xF7\xB7\xDAfc\xC6f\x86^.\x9F\x08\x1E\xD8\xDC\xADSx` ``\x83\x01Q\x01R\x7F\x16\x03\x18\xF2\xEF\x1E\xF5\x8D\xC7\xEA~\x89\x9Df\x06\xAA\xAA\xE6o\xA3\xCB\xF8\xD5\xBA\xE8\xCEF\xDCe\xF2\x17\x90`\x80\x82\x01QR\x7F\x10R\x9288\x87\xBAs]D\r\xE9\xCD\xEB\x10\t\xC4\xAA\x0E \x0Eg\x81\xB2\x86\x1F|a\x14\xDA\x9CJ` `\x80\x83\x01Q\x01R\x7F0\x0C\x0E\x13x\xD68 \xFF\xFA\xCD\x811\x8D\xAA\xC2\x13\xFD\xF6\xEF\x86\xA0\xB9H\x90\x87\xC7b\x90\xCE\xA8\xFB`\xA0\x82\x01QR\x7F/c\xA5\xF6\xAB\xA0\xC9\x84=\xECE \x92\xAF\x01\xB4\x05\xA6\x07Ke-\xB2$oQpg\xFFo\xB7\x83` `\xA0\x83\x01Q\x01R\x7F\x05g\xD5%\xB1F\xE6\xFDaO{s\xD3\x04q5\xFC\xD8\x13san$ z\xB9\xF8\xD9\x9D\\\x8C\xF9`\xC0\x82\x01QR\x7F\x01:\xC1\x06X\x1Ah\xAE\xBC\xA2c\xC2~\xC7\xFAS\xC6\xB1B\x9C\x88(\xE8\x7F\xC6 \xF6\xD0#\x8C\x82\x13` `\xC0\x83\x01Q\x01R\x7F\x10\xDB\xFE\xDDI:\x8C\xBB\xEF]cF\xCC\xDD\x8A\xB0\xFE?<\xF0&\x1A\x13\x145\xCDNj\x8F\xB8\xFA\xDE`\xE0\x82\x01QR\x7F\x07\xD4\x8C\xAAzR_*\x87\x04\xBFsr\xD9\xA1\x83\xF5\xD0\x86y\x05\x0F#k9\xA0\xE6+JB\xFB\xFC` `\xE0\x83\x01Q\x01R\x7F\x1E\x85\xFCz\xBF\x0F\xFF-\rb\xFBg\x80\x859*\xE3n6\xAA\xB22S>.\xB6\xF5\xC4G\x98@\xC4a\x01\0\x82\x01QR\x7F\x12v\x19\xBA\x17\xA0l\xB79\xDA\x01\x0C\x03/J\x85\xB7\x1D\x9A\xBF\r\xE7\xA8\xEE\x01\xC7\xCC\xB1\xDD)%\xF2` a\x01\0\x83\x01Q\x01R\x7F%\xDFad\xEC\xA3P,\x92\xD7*\x14<\xFCm\xE7\x89\x0B\x04\xF6\xF7w\x02@N\x8F8\xF6\xE9\x8B\0\xFEa\x01 \x82\x01QR\x7F\x05\x87;!E\xC0!#**\xCD\x9B\xC2\x99\xBFQj\xAFL\xC55\xD1#\x98\x98\xB1\x14\xF46\x07\xB9\xE3` a\x01 \x83\x01Q\x01R\x7F\"\xAE\x9A\x99\xDF\0?'\xA0=\xA1^\xF4\x1B}\x90/G\xB1G\xEC\xDC]\xEF\x8A<\xFDp\x8A\r\xCD\x02a\x01@\x82\x01QR\x7F%3\x9A\x8D\xEF\xA5\xDEI\x9FA\xFFH\xF4P\xA9i\xB83\xD0\xE6\xF2\xB1v\xE3\xD0er\x15\xF0\xE12 ` a\x01@\x83\x01Q\x01R\x7F\x12\xA4_\x83B\xC1\xF2\x81\xC0,\xC4\xA2\0)/\xEF\xB2\x88\xE6\xCEgX!E+\xAAbBK\x03\xFD\x1Aa\x01`\x82\x01QR\x7F%\xAD\x08&\xFA\xC2\xD0K\x0B\x0B%\x95'\r\x89\xF0\xBCA\xCE;\x08\xB0\xC3\xE3?\x85\x95\x9F\x046\x1EL` a\x01`\x83\x01Q\x01R\x7F\x19^x\x96\xB3!\\\n\xBD\xB1\x9C\x80\xD8\x1E\x03\xDD&\xFC\x80\x92B9X=\xAB\xF33nq\x1F4sa\x01\x80\x82\x01QR\x7F\x16v2n\x1D\x9A\x90\xDAtI\xD0\xC9\xAC9)\x18\xFA|`\x8B\xC8\x0CN\xFD\x0F\x80_B\xD5\x15\x14%` a\x01\x80\x83\x01Q\x01R\x7F\x01\xED\xFF\x1C3i\x04n\xD60V]Oe\xFE\xC7\x0E%s\xA0\x99\xB0\x9A\x1E\x83/\x9Bz\xD1?\xB0\x83a\x01\xA0\x82\x01QR\x7F\x1B\x8C\xA1D\x05\0\xA3\x87\x0C\x11\xE9.a\xC8\xED\xEF\xA7\xCC\x89W+\xB8g\xF2\x1De\"\xCD\xE0\xB3^\xED` a\x01\xA0\x83\x01Q\x01R\x7F\x04%\x1A(^\xBEfBe\xAE/\xB2}\xF9)\x12N}\xA5\xBBTD\xE6m\xBD\x14B\xC9\xF9E\xA5pa\x01\xC0\x82\x01QR\x7F\x02\xAF\x9A\x85\xFA*\xBD\x83r\xFC\xD4\xBA\x7F\xE9\x1B\xD5\x86\xDB\xBEA\xB8\xDB\xE6\xECE\xFB\xAE\x82\xCBa\xA6\xC7` a\x01\xC0\x83\x01Q\x01R\x7F([5\xF5\xE2cY\x88\xEA47\xAE\x87\xA3[\x18R\x03\xE42\xA5\xEF\x16\x8A\xAE\x16\x89\xE4~:\x03\xC7a\x01\xE0\x82\x01QR\x7F(8/}\xA1\xA3\x90\xA8D\xC9KK;\xB7]\x97\xC8P\xD9\x1D\xB5:\x87\xFD\xF4\xE0_\xA2\xC5v\xC9\xD4` a\x01\xE0\x83\x01Q\x01R\x7F\x1E\xA8\xBA\xA2\xF6\xFB\x86Fj\xF3\xC25\x0B\xB6\x98\xD8\x03\x84\x16\xFB\xC8/\x8Fu\x99\x1Fl\x19\x0B\x86\x1A\ra\x02\0\x82\x01QR\x7F\x0F \xF8*nJ\x0F$\xE7\xA2\x0E6\xC8\x9FVc\xF0\xEA@\x93_\x19C\xC2\xD3\xDA\xDC\xEE\xB6\xF6\xE4\xD1` a\x02\0\x83\x01Q\x01R\x7F\x10L\x9B\x90+G\x82\x1D\x8D3\x18\xE0\x97\x8F\xCA\xF4\xFA\xF1\x88\x1B|\x87\xEA.\x88Bm\xA9\x9C\xCCP\x96a\x02 \x82\x01QR\x7F&\xDB\x11RX\x03\x0C\x94\xAF\x87\xDBv\x1D\x96\xF8Dr\x10]\x98\xE5[\x1A\xA2\xB4.\xD4l2\xD58v` a\x02 \x83\x01Q\x01R\x7F\x05V\x0F\x03\xF8\x1C\x199\x1B\x17\xCA\xF7\x90\xBB\xF2\xFB\x97O2\xB4ED\x94<\xE9\x94\xB4\xB7\x8E\x13\x874a\x02@\x82\x01QR\x7F\x12\x1D\xCB\xF48\x87\xC4g\xC0\xA3Lm\xEBo\xD5P\xA6\xF6rk\xBAK\x82p\xE6\x9A\xA9\xDF\xBC\xF9\xAF\xD5` a\x02@\x83\x01Q\x01R\x7F\x1E\xF3\xC9=\xE0\xED\xA4V-E\xCDs\xDB\x9B3{\xE4c\xB9\xDE\xCC@\xF4\x0E5B\xA3\x89\x84\xD2\x83)a\x02`\x82\x01QR\x7F\x1A\x82\x82\x06\xB6|\xA2\xF8\xCBx\xA5\x9A\xCF\x96a!\xB5\xE2\x89\xD6\x03\xE8\x03\xDA\x86'\x19l\xC0\n\xF7\xDA` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xC6WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xBA_Q` a6\x8B_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\xECa\x15\xB5V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08\xA5V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x7FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D|\x91\x81\x01\x90a1\xD1V[`\x01[a\x1D\xA7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xA3V[_Q` a6\x8B_9_Q\x90_R\x81\x14a\x1D\xD7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xA3V[a\x1D\xE1\x83\x83a$gV[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>W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1E\xA7a$\xBCV[a\x0B\x95\x81a$\xF2V[a\x0C>a$\xBCV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\xDCWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\xE9WP` \x82\x01Q\x15[\x80a\x1E\xF6WP`@\x82\x01Q\x15[\x80a\x1F\x03WP``\x82\x01Q\x15[\x80a\x1F\rWP\x81Q\x15[\x80a\x1F\x1FWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1F3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1FQW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x0B\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x15\xA3V[_a ]a\x08\xF9V[\x90Pa ga(\xDBV[`\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 \xBFWPa \xBF\x87` \x01Qa\t\x9EV[\x15a!\x08W`@\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!CV[`@\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!\x94\x91\x84\x90\x89\x90` \x01a1\xFFV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!\xD8\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2!V[`\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\"\x18\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4\x16V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\"3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\"W\x91\x90a66V[a\"tW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"\xF3WP`\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\"\xBEWa\"\xBEa1{V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"\xE8\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1IV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#\x86W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a# Wa# a1{V[_\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#`\x83a6UV[\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[a$p\x82a$\xFAV[`@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$\xB4Wa\x1D\xE1\x82\x82a%]V[a\x0B\xB3a%\xCFV[_Q` a6\xAB_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0C>W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15~a$\xBCV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%/W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xA3V[_Q` a6\x8B_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%y\x91\x90a6\x7FV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\xB1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\xB6V[``\x91P[P\x91P\x91Pa%\xC6\x85\x83\x83a%\xEEV[\x95\x94PPPPPV[4\x15a\x0C>W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\x03Wa%\xFE\x82a&MV[a&FV[\x81Q\x15\x80\x15a&\x1AWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&CW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xA3V[P\x80[\x93\x92PPPV[\x80Q\x15a&]W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a&\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xE9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\t`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a')`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'I`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'i`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x89`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xE9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\t`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a()`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(I`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(i`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x89`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a)\x1FW__\xFD[a&F\x82a(\xF9V[_` \x82\x84\x03\x12\x15a)8W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)q`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+fW__\xFD[a&F\x82a+@V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xA6Wa+\xA6a+oV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xD4Wa+\xD4a+oV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xECW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x0EWa,\x0Ea+oV[`@R\x90P\x80a,\x1D\x83a+@V[\x81Ra,+` \x84\x01a+@V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,QW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,sWa,sa+oV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,\x9EW__\xFD[a,\xA6a+\x83V[\x90Pa,\xB2\x83\x83a,AV[\x81Ra,\xC1\x83`@\x84\x01a,AV[` \x82\x01Ra,\xD3\x83`\x80\x84\x01a,AV[`@\x82\x01Ra,\xE5\x83`\xC0\x84\x01a,AV[``\x82\x01Ra,\xF8\x83a\x01\0\x84\x01a,AV[`\x80\x82\x01Ra-\x0B\x83a\x01@\x84\x01a,AV[`\xA0\x82\x01Ra-\x1E\x83a\x01\x80\x84\x01a,AV[`\xC0\x82\x01Ra-1\x83a\x01\xC0\x84\x01a,AV[`\xE0\x82\x01Ra-D\x83a\x02\0\x84\x01a,AV[a\x01\0\x82\x01Ra-X\x83a\x02@\x84\x01a,AV[a\x01 \x82\x01Ra-l\x83a\x02\x80\x84\x01a,AV[a\x01@\x82\x01Ra-\x80\x83a\x02\xC0\x84\x01a,AV[a\x01`\x82\x01Ra-\x94\x83a\x03\0\x84\x01a,AV[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.*W__\xFD[a.4\x84\x84a+\xDCV[\x91Pa.C\x84``\x85\x01a,\x8DV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.oW__\xFD[a&F\x82a.LV[__`@\x83\x85\x03\x12\x15a.\x89W__\xFD[a.\x92\x83a(\xF9V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xACW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\xBCW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xD5Wa.\xD5a+oV[a.\xE8`\x1F\x82\x01`\x1F\x19\x16` \x01a+\xACV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xFCW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/+W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/MWa/Ma+oV[`@\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/\x8EW__\xFD[a/\x98\x85\x85a+\xDCV[\x92Pa/\xA7\x85``\x86\x01a/\x1BV[\x91Pa/\xB6\x85`\xE0\x86\x01a,\x8DV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xD0W__\xFD[a/\xD9\x83a+@V[\x91Pa.C` \x84\x01a+@V[____a\x01 \x85\x87\x03\x12\x15a/\xFBW__\xFD[a0\x05\x86\x86a+\xDCV[\x93Pa0\x14\x86``\x87\x01a/\x1BV[\x92Pa0\"`\xE0\x86\x01a.LV[\x91Pa01a\x01\0\x86\x01a(\xF9V[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0PW__\xFD[a0Z\x86\x86a+\xDCV[\x93Pa0i\x86``\x87\x01a/\x1BV[\x92P`\xE0\x85\x015\x91Pa01\x86a\x01\0\x87\x01a,\x8DV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a0\xC6W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xD5V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a14Wa14a1\x08V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xD5V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xD5V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\xA7Wa1\xA7a1\x08V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\xCAWa1\xCAa0\xD5V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xE1W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x13a2\r\x83\x87a1\xE8V[\x85a1\xE8V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2/Wa2/a1\x08V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2VW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a27V[PPPPV[a2q\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\x01Qa4H`@\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 a\x05\0\x83\x01\x85a24V[a6.a\x05\xA0\x83\x01\x84a2\\V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a6FW__\xFD[\x81Q\x80\x15\x15\x81\x14a&FW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6vWa6va0\xD5V[`\x01\x01\x92\x91PPV[_a&F\x82\x84a1\xE8V\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",
5270    );
5271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5272    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5273```solidity
5274error AddressEmptyCode(address target);
5275```*/
5276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5277    #[derive(Clone)]
5278    pub struct AddressEmptyCode {
5279        #[allow(missing_docs)]
5280        pub target: alloy::sol_types::private::Address,
5281    }
5282    #[allow(
5283        non_camel_case_types,
5284        non_snake_case,
5285        clippy::pub_underscore_fields,
5286        clippy::style
5287    )]
5288    const _: () = {
5289        use alloy::sol_types as alloy_sol_types;
5290        #[doc(hidden)]
5291        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5292        #[doc(hidden)]
5293        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5294        #[cfg(test)]
5295        #[allow(dead_code, unreachable_patterns)]
5296        fn _type_assertion(
5297            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5298        ) {
5299            match _t {
5300                alloy_sol_types::private::AssertTypeEq::<
5301                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5302                >(_) => {}
5303            }
5304        }
5305        #[automatically_derived]
5306        #[doc(hidden)]
5307        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5308            fn from(value: AddressEmptyCode) -> Self {
5309                (value.target,)
5310            }
5311        }
5312        #[automatically_derived]
5313        #[doc(hidden)]
5314        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5315            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5316                Self { target: tuple.0 }
5317            }
5318        }
5319        #[automatically_derived]
5320        impl alloy_sol_types::SolError for AddressEmptyCode {
5321            type Parameters<'a> = UnderlyingSolTuple<'a>;
5322            type Token<'a> = <Self::Parameters<
5323                'a,
5324            > as alloy_sol_types::SolType>::Token<'a>;
5325            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5326            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5327            #[inline]
5328            fn new<'a>(
5329                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5330            ) -> Self {
5331                tuple.into()
5332            }
5333            #[inline]
5334            fn tokenize(&self) -> Self::Token<'_> {
5335                (
5336                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5337                        &self.target,
5338                    ),
5339                )
5340            }
5341        }
5342    };
5343    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5344    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5345```solidity
5346error DeprecatedApi();
5347```*/
5348    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5349    #[derive(Clone)]
5350    pub struct DeprecatedApi {}
5351    #[allow(
5352        non_camel_case_types,
5353        non_snake_case,
5354        clippy::pub_underscore_fields,
5355        clippy::style
5356    )]
5357    const _: () = {
5358        use alloy::sol_types as alloy_sol_types;
5359        #[doc(hidden)]
5360        type UnderlyingSolTuple<'a> = ();
5361        #[doc(hidden)]
5362        type UnderlyingRustTuple<'a> = ();
5363        #[cfg(test)]
5364        #[allow(dead_code, unreachable_patterns)]
5365        fn _type_assertion(
5366            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5367        ) {
5368            match _t {
5369                alloy_sol_types::private::AssertTypeEq::<
5370                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5371                >(_) => {}
5372            }
5373        }
5374        #[automatically_derived]
5375        #[doc(hidden)]
5376        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5377            fn from(value: DeprecatedApi) -> Self {
5378                ()
5379            }
5380        }
5381        #[automatically_derived]
5382        #[doc(hidden)]
5383        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5384            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5385                Self {}
5386            }
5387        }
5388        #[automatically_derived]
5389        impl alloy_sol_types::SolError for DeprecatedApi {
5390            type Parameters<'a> = UnderlyingSolTuple<'a>;
5391            type Token<'a> = <Self::Parameters<
5392                'a,
5393            > as alloy_sol_types::SolType>::Token<'a>;
5394            const SIGNATURE: &'static str = "DeprecatedApi()";
5395            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5396            #[inline]
5397            fn new<'a>(
5398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5399            ) -> Self {
5400                tuple.into()
5401            }
5402            #[inline]
5403            fn tokenize(&self) -> Self::Token<'_> {
5404                ()
5405            }
5406        }
5407    };
5408    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5409    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5410```solidity
5411error ERC1967InvalidImplementation(address implementation);
5412```*/
5413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5414    #[derive(Clone)]
5415    pub struct ERC1967InvalidImplementation {
5416        #[allow(missing_docs)]
5417        pub implementation: alloy::sol_types::private::Address,
5418    }
5419    #[allow(
5420        non_camel_case_types,
5421        non_snake_case,
5422        clippy::pub_underscore_fields,
5423        clippy::style
5424    )]
5425    const _: () = {
5426        use alloy::sol_types as alloy_sol_types;
5427        #[doc(hidden)]
5428        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5429        #[doc(hidden)]
5430        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5431        #[cfg(test)]
5432        #[allow(dead_code, unreachable_patterns)]
5433        fn _type_assertion(
5434            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5435        ) {
5436            match _t {
5437                alloy_sol_types::private::AssertTypeEq::<
5438                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5439                >(_) => {}
5440            }
5441        }
5442        #[automatically_derived]
5443        #[doc(hidden)]
5444        impl ::core::convert::From<ERC1967InvalidImplementation>
5445        for UnderlyingRustTuple<'_> {
5446            fn from(value: ERC1967InvalidImplementation) -> Self {
5447                (value.implementation,)
5448            }
5449        }
5450        #[automatically_derived]
5451        #[doc(hidden)]
5452        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5453        for ERC1967InvalidImplementation {
5454            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5455                Self { implementation: tuple.0 }
5456            }
5457        }
5458        #[automatically_derived]
5459        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5460            type Parameters<'a> = UnderlyingSolTuple<'a>;
5461            type Token<'a> = <Self::Parameters<
5462                'a,
5463            > as alloy_sol_types::SolType>::Token<'a>;
5464            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5465            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5466            #[inline]
5467            fn new<'a>(
5468                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5469            ) -> Self {
5470                tuple.into()
5471            }
5472            #[inline]
5473            fn tokenize(&self) -> Self::Token<'_> {
5474                (
5475                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5476                        &self.implementation,
5477                    ),
5478                )
5479            }
5480        }
5481    };
5482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5483    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5484```solidity
5485error ERC1967NonPayable();
5486```*/
5487    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5488    #[derive(Clone)]
5489    pub struct ERC1967NonPayable {}
5490    #[allow(
5491        non_camel_case_types,
5492        non_snake_case,
5493        clippy::pub_underscore_fields,
5494        clippy::style
5495    )]
5496    const _: () = {
5497        use alloy::sol_types as alloy_sol_types;
5498        #[doc(hidden)]
5499        type UnderlyingSolTuple<'a> = ();
5500        #[doc(hidden)]
5501        type UnderlyingRustTuple<'a> = ();
5502        #[cfg(test)]
5503        #[allow(dead_code, unreachable_patterns)]
5504        fn _type_assertion(
5505            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5506        ) {
5507            match _t {
5508                alloy_sol_types::private::AssertTypeEq::<
5509                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5510                >(_) => {}
5511            }
5512        }
5513        #[automatically_derived]
5514        #[doc(hidden)]
5515        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5516            fn from(value: ERC1967NonPayable) -> Self {
5517                ()
5518            }
5519        }
5520        #[automatically_derived]
5521        #[doc(hidden)]
5522        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5523            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5524                Self {}
5525            }
5526        }
5527        #[automatically_derived]
5528        impl alloy_sol_types::SolError for ERC1967NonPayable {
5529            type Parameters<'a> = UnderlyingSolTuple<'a>;
5530            type Token<'a> = <Self::Parameters<
5531                'a,
5532            > as alloy_sol_types::SolType>::Token<'a>;
5533            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5534            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5535            #[inline]
5536            fn new<'a>(
5537                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5538            ) -> Self {
5539                tuple.into()
5540            }
5541            #[inline]
5542            fn tokenize(&self) -> Self::Token<'_> {
5543                ()
5544            }
5545        }
5546    };
5547    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5548    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5549```solidity
5550error FailedInnerCall();
5551```*/
5552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5553    #[derive(Clone)]
5554    pub struct FailedInnerCall {}
5555    #[allow(
5556        non_camel_case_types,
5557        non_snake_case,
5558        clippy::pub_underscore_fields,
5559        clippy::style
5560    )]
5561    const _: () = {
5562        use alloy::sol_types as alloy_sol_types;
5563        #[doc(hidden)]
5564        type UnderlyingSolTuple<'a> = ();
5565        #[doc(hidden)]
5566        type UnderlyingRustTuple<'a> = ();
5567        #[cfg(test)]
5568        #[allow(dead_code, unreachable_patterns)]
5569        fn _type_assertion(
5570            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5571        ) {
5572            match _t {
5573                alloy_sol_types::private::AssertTypeEq::<
5574                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5575                >(_) => {}
5576            }
5577        }
5578        #[automatically_derived]
5579        #[doc(hidden)]
5580        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5581            fn from(value: FailedInnerCall) -> Self {
5582                ()
5583            }
5584        }
5585        #[automatically_derived]
5586        #[doc(hidden)]
5587        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5588            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5589                Self {}
5590            }
5591        }
5592        #[automatically_derived]
5593        impl alloy_sol_types::SolError for FailedInnerCall {
5594            type Parameters<'a> = UnderlyingSolTuple<'a>;
5595            type Token<'a> = <Self::Parameters<
5596                'a,
5597            > as alloy_sol_types::SolType>::Token<'a>;
5598            const SIGNATURE: &'static str = "FailedInnerCall()";
5599            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5600            #[inline]
5601            fn new<'a>(
5602                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5603            ) -> Self {
5604                tuple.into()
5605            }
5606            #[inline]
5607            fn tokenize(&self) -> Self::Token<'_> {
5608                ()
5609            }
5610        }
5611    };
5612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5613    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5614```solidity
5615error InsufficientSnapshotHistory();
5616```*/
5617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5618    #[derive(Clone)]
5619    pub struct InsufficientSnapshotHistory {}
5620    #[allow(
5621        non_camel_case_types,
5622        non_snake_case,
5623        clippy::pub_underscore_fields,
5624        clippy::style
5625    )]
5626    const _: () = {
5627        use alloy::sol_types as alloy_sol_types;
5628        #[doc(hidden)]
5629        type UnderlyingSolTuple<'a> = ();
5630        #[doc(hidden)]
5631        type UnderlyingRustTuple<'a> = ();
5632        #[cfg(test)]
5633        #[allow(dead_code, unreachable_patterns)]
5634        fn _type_assertion(
5635            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5636        ) {
5637            match _t {
5638                alloy_sol_types::private::AssertTypeEq::<
5639                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5640                >(_) => {}
5641            }
5642        }
5643        #[automatically_derived]
5644        #[doc(hidden)]
5645        impl ::core::convert::From<InsufficientSnapshotHistory>
5646        for UnderlyingRustTuple<'_> {
5647            fn from(value: InsufficientSnapshotHistory) -> Self {
5648                ()
5649            }
5650        }
5651        #[automatically_derived]
5652        #[doc(hidden)]
5653        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5654        for InsufficientSnapshotHistory {
5655            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5656                Self {}
5657            }
5658        }
5659        #[automatically_derived]
5660        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5661            type Parameters<'a> = UnderlyingSolTuple<'a>;
5662            type Token<'a> = <Self::Parameters<
5663                'a,
5664            > as alloy_sol_types::SolType>::Token<'a>;
5665            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5666            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5667            #[inline]
5668            fn new<'a>(
5669                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5670            ) -> Self {
5671                tuple.into()
5672            }
5673            #[inline]
5674            fn tokenize(&self) -> Self::Token<'_> {
5675                ()
5676            }
5677        }
5678    };
5679    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5680    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5681```solidity
5682error InvalidAddress();
5683```*/
5684    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5685    #[derive(Clone)]
5686    pub struct InvalidAddress {}
5687    #[allow(
5688        non_camel_case_types,
5689        non_snake_case,
5690        clippy::pub_underscore_fields,
5691        clippy::style
5692    )]
5693    const _: () = {
5694        use alloy::sol_types as alloy_sol_types;
5695        #[doc(hidden)]
5696        type UnderlyingSolTuple<'a> = ();
5697        #[doc(hidden)]
5698        type UnderlyingRustTuple<'a> = ();
5699        #[cfg(test)]
5700        #[allow(dead_code, unreachable_patterns)]
5701        fn _type_assertion(
5702            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5703        ) {
5704            match _t {
5705                alloy_sol_types::private::AssertTypeEq::<
5706                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5707                >(_) => {}
5708            }
5709        }
5710        #[automatically_derived]
5711        #[doc(hidden)]
5712        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5713            fn from(value: InvalidAddress) -> Self {
5714                ()
5715            }
5716        }
5717        #[automatically_derived]
5718        #[doc(hidden)]
5719        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5720            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5721                Self {}
5722            }
5723        }
5724        #[automatically_derived]
5725        impl alloy_sol_types::SolError for InvalidAddress {
5726            type Parameters<'a> = UnderlyingSolTuple<'a>;
5727            type Token<'a> = <Self::Parameters<
5728                'a,
5729            > as alloy_sol_types::SolType>::Token<'a>;
5730            const SIGNATURE: &'static str = "InvalidAddress()";
5731            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5732            #[inline]
5733            fn new<'a>(
5734                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5735            ) -> Self {
5736                tuple.into()
5737            }
5738            #[inline]
5739            fn tokenize(&self) -> Self::Token<'_> {
5740                ()
5741            }
5742        }
5743    };
5744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5745    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5746```solidity
5747error InvalidArgs();
5748```*/
5749    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5750    #[derive(Clone)]
5751    pub struct InvalidArgs {}
5752    #[allow(
5753        non_camel_case_types,
5754        non_snake_case,
5755        clippy::pub_underscore_fields,
5756        clippy::style
5757    )]
5758    const _: () = {
5759        use alloy::sol_types as alloy_sol_types;
5760        #[doc(hidden)]
5761        type UnderlyingSolTuple<'a> = ();
5762        #[doc(hidden)]
5763        type UnderlyingRustTuple<'a> = ();
5764        #[cfg(test)]
5765        #[allow(dead_code, unreachable_patterns)]
5766        fn _type_assertion(
5767            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5768        ) {
5769            match _t {
5770                alloy_sol_types::private::AssertTypeEq::<
5771                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5772                >(_) => {}
5773            }
5774        }
5775        #[automatically_derived]
5776        #[doc(hidden)]
5777        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5778            fn from(value: InvalidArgs) -> Self {
5779                ()
5780            }
5781        }
5782        #[automatically_derived]
5783        #[doc(hidden)]
5784        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5785            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5786                Self {}
5787            }
5788        }
5789        #[automatically_derived]
5790        impl alloy_sol_types::SolError for InvalidArgs {
5791            type Parameters<'a> = UnderlyingSolTuple<'a>;
5792            type Token<'a> = <Self::Parameters<
5793                'a,
5794            > as alloy_sol_types::SolType>::Token<'a>;
5795            const SIGNATURE: &'static str = "InvalidArgs()";
5796            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5797            #[inline]
5798            fn new<'a>(
5799                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5800            ) -> Self {
5801                tuple.into()
5802            }
5803            #[inline]
5804            fn tokenize(&self) -> Self::Token<'_> {
5805                ()
5806            }
5807        }
5808    };
5809    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5810    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5811```solidity
5812error InvalidHotShotBlockForCommitmentCheck();
5813```*/
5814    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5815    #[derive(Clone)]
5816    pub struct InvalidHotShotBlockForCommitmentCheck {}
5817    #[allow(
5818        non_camel_case_types,
5819        non_snake_case,
5820        clippy::pub_underscore_fields,
5821        clippy::style
5822    )]
5823    const _: () = {
5824        use alloy::sol_types as alloy_sol_types;
5825        #[doc(hidden)]
5826        type UnderlyingSolTuple<'a> = ();
5827        #[doc(hidden)]
5828        type UnderlyingRustTuple<'a> = ();
5829        #[cfg(test)]
5830        #[allow(dead_code, unreachable_patterns)]
5831        fn _type_assertion(
5832            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5833        ) {
5834            match _t {
5835                alloy_sol_types::private::AssertTypeEq::<
5836                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5837                >(_) => {}
5838            }
5839        }
5840        #[automatically_derived]
5841        #[doc(hidden)]
5842        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5843        for UnderlyingRustTuple<'_> {
5844            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5845                ()
5846            }
5847        }
5848        #[automatically_derived]
5849        #[doc(hidden)]
5850        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5851        for InvalidHotShotBlockForCommitmentCheck {
5852            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5853                Self {}
5854            }
5855        }
5856        #[automatically_derived]
5857        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5858            type Parameters<'a> = UnderlyingSolTuple<'a>;
5859            type Token<'a> = <Self::Parameters<
5860                'a,
5861            > as alloy_sol_types::SolType>::Token<'a>;
5862            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5863            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5864            #[inline]
5865            fn new<'a>(
5866                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5867            ) -> Self {
5868                tuple.into()
5869            }
5870            #[inline]
5871            fn tokenize(&self) -> Self::Token<'_> {
5872                ()
5873            }
5874        }
5875    };
5876    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5877    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5878```solidity
5879error InvalidInitialization();
5880```*/
5881    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5882    #[derive(Clone)]
5883    pub struct InvalidInitialization {}
5884    #[allow(
5885        non_camel_case_types,
5886        non_snake_case,
5887        clippy::pub_underscore_fields,
5888        clippy::style
5889    )]
5890    const _: () = {
5891        use alloy::sol_types as alloy_sol_types;
5892        #[doc(hidden)]
5893        type UnderlyingSolTuple<'a> = ();
5894        #[doc(hidden)]
5895        type UnderlyingRustTuple<'a> = ();
5896        #[cfg(test)]
5897        #[allow(dead_code, unreachable_patterns)]
5898        fn _type_assertion(
5899            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5900        ) {
5901            match _t {
5902                alloy_sol_types::private::AssertTypeEq::<
5903                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5904                >(_) => {}
5905            }
5906        }
5907        #[automatically_derived]
5908        #[doc(hidden)]
5909        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5910            fn from(value: InvalidInitialization) -> Self {
5911                ()
5912            }
5913        }
5914        #[automatically_derived]
5915        #[doc(hidden)]
5916        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5917            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5918                Self {}
5919            }
5920        }
5921        #[automatically_derived]
5922        impl alloy_sol_types::SolError for InvalidInitialization {
5923            type Parameters<'a> = UnderlyingSolTuple<'a>;
5924            type Token<'a> = <Self::Parameters<
5925                'a,
5926            > as alloy_sol_types::SolType>::Token<'a>;
5927            const SIGNATURE: &'static str = "InvalidInitialization()";
5928            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5929            #[inline]
5930            fn new<'a>(
5931                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5932            ) -> Self {
5933                tuple.into()
5934            }
5935            #[inline]
5936            fn tokenize(&self) -> Self::Token<'_> {
5937                ()
5938            }
5939        }
5940    };
5941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5942    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5943```solidity
5944error InvalidMaxStateHistory();
5945```*/
5946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5947    #[derive(Clone)]
5948    pub struct InvalidMaxStateHistory {}
5949    #[allow(
5950        non_camel_case_types,
5951        non_snake_case,
5952        clippy::pub_underscore_fields,
5953        clippy::style
5954    )]
5955    const _: () = {
5956        use alloy::sol_types as alloy_sol_types;
5957        #[doc(hidden)]
5958        type UnderlyingSolTuple<'a> = ();
5959        #[doc(hidden)]
5960        type UnderlyingRustTuple<'a> = ();
5961        #[cfg(test)]
5962        #[allow(dead_code, unreachable_patterns)]
5963        fn _type_assertion(
5964            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5965        ) {
5966            match _t {
5967                alloy_sol_types::private::AssertTypeEq::<
5968                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5969                >(_) => {}
5970            }
5971        }
5972        #[automatically_derived]
5973        #[doc(hidden)]
5974        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5975            fn from(value: InvalidMaxStateHistory) -> Self {
5976                ()
5977            }
5978        }
5979        #[automatically_derived]
5980        #[doc(hidden)]
5981        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5982            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5983                Self {}
5984            }
5985        }
5986        #[automatically_derived]
5987        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5988            type Parameters<'a> = UnderlyingSolTuple<'a>;
5989            type Token<'a> = <Self::Parameters<
5990                'a,
5991            > as alloy_sol_types::SolType>::Token<'a>;
5992            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5993            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5994            #[inline]
5995            fn new<'a>(
5996                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5997            ) -> Self {
5998                tuple.into()
5999            }
6000            #[inline]
6001            fn tokenize(&self) -> Self::Token<'_> {
6002                ()
6003            }
6004        }
6005    };
6006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6007    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6008```solidity
6009error InvalidProof();
6010```*/
6011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6012    #[derive(Clone)]
6013    pub struct InvalidProof {}
6014    #[allow(
6015        non_camel_case_types,
6016        non_snake_case,
6017        clippy::pub_underscore_fields,
6018        clippy::style
6019    )]
6020    const _: () = {
6021        use alloy::sol_types as alloy_sol_types;
6022        #[doc(hidden)]
6023        type UnderlyingSolTuple<'a> = ();
6024        #[doc(hidden)]
6025        type UnderlyingRustTuple<'a> = ();
6026        #[cfg(test)]
6027        #[allow(dead_code, unreachable_patterns)]
6028        fn _type_assertion(
6029            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6030        ) {
6031            match _t {
6032                alloy_sol_types::private::AssertTypeEq::<
6033                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6034                >(_) => {}
6035            }
6036        }
6037        #[automatically_derived]
6038        #[doc(hidden)]
6039        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6040            fn from(value: InvalidProof) -> Self {
6041                ()
6042            }
6043        }
6044        #[automatically_derived]
6045        #[doc(hidden)]
6046        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6047            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6048                Self {}
6049            }
6050        }
6051        #[automatically_derived]
6052        impl alloy_sol_types::SolError for InvalidProof {
6053            type Parameters<'a> = UnderlyingSolTuple<'a>;
6054            type Token<'a> = <Self::Parameters<
6055                'a,
6056            > as alloy_sol_types::SolType>::Token<'a>;
6057            const SIGNATURE: &'static str = "InvalidProof()";
6058            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6059            #[inline]
6060            fn new<'a>(
6061                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6062            ) -> Self {
6063                tuple.into()
6064            }
6065            #[inline]
6066            fn tokenize(&self) -> Self::Token<'_> {
6067                ()
6068            }
6069        }
6070    };
6071    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6072    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6073```solidity
6074error MissingEpochRootUpdate();
6075```*/
6076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6077    #[derive(Clone)]
6078    pub struct MissingEpochRootUpdate {}
6079    #[allow(
6080        non_camel_case_types,
6081        non_snake_case,
6082        clippy::pub_underscore_fields,
6083        clippy::style
6084    )]
6085    const _: () = {
6086        use alloy::sol_types as alloy_sol_types;
6087        #[doc(hidden)]
6088        type UnderlyingSolTuple<'a> = ();
6089        #[doc(hidden)]
6090        type UnderlyingRustTuple<'a> = ();
6091        #[cfg(test)]
6092        #[allow(dead_code, unreachable_patterns)]
6093        fn _type_assertion(
6094            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6095        ) {
6096            match _t {
6097                alloy_sol_types::private::AssertTypeEq::<
6098                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6099                >(_) => {}
6100            }
6101        }
6102        #[automatically_derived]
6103        #[doc(hidden)]
6104        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6105            fn from(value: MissingEpochRootUpdate) -> Self {
6106                ()
6107            }
6108        }
6109        #[automatically_derived]
6110        #[doc(hidden)]
6111        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6112            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6113                Self {}
6114            }
6115        }
6116        #[automatically_derived]
6117        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6118            type Parameters<'a> = UnderlyingSolTuple<'a>;
6119            type Token<'a> = <Self::Parameters<
6120                'a,
6121            > as alloy_sol_types::SolType>::Token<'a>;
6122            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6123            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6124            #[inline]
6125            fn new<'a>(
6126                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6127            ) -> Self {
6128                tuple.into()
6129            }
6130            #[inline]
6131            fn tokenize(&self) -> Self::Token<'_> {
6132                ()
6133            }
6134        }
6135    };
6136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6137    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6138```solidity
6139error NoChangeRequired();
6140```*/
6141    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6142    #[derive(Clone)]
6143    pub struct NoChangeRequired {}
6144    #[allow(
6145        non_camel_case_types,
6146        non_snake_case,
6147        clippy::pub_underscore_fields,
6148        clippy::style
6149    )]
6150    const _: () = {
6151        use alloy::sol_types as alloy_sol_types;
6152        #[doc(hidden)]
6153        type UnderlyingSolTuple<'a> = ();
6154        #[doc(hidden)]
6155        type UnderlyingRustTuple<'a> = ();
6156        #[cfg(test)]
6157        #[allow(dead_code, unreachable_patterns)]
6158        fn _type_assertion(
6159            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6160        ) {
6161            match _t {
6162                alloy_sol_types::private::AssertTypeEq::<
6163                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6164                >(_) => {}
6165            }
6166        }
6167        #[automatically_derived]
6168        #[doc(hidden)]
6169        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6170            fn from(value: NoChangeRequired) -> Self {
6171                ()
6172            }
6173        }
6174        #[automatically_derived]
6175        #[doc(hidden)]
6176        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6177            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6178                Self {}
6179            }
6180        }
6181        #[automatically_derived]
6182        impl alloy_sol_types::SolError for NoChangeRequired {
6183            type Parameters<'a> = UnderlyingSolTuple<'a>;
6184            type Token<'a> = <Self::Parameters<
6185                'a,
6186            > as alloy_sol_types::SolType>::Token<'a>;
6187            const SIGNATURE: &'static str = "NoChangeRequired()";
6188            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6189            #[inline]
6190            fn new<'a>(
6191                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6192            ) -> Self {
6193                tuple.into()
6194            }
6195            #[inline]
6196            fn tokenize(&self) -> Self::Token<'_> {
6197                ()
6198            }
6199        }
6200    };
6201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6202    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6203```solidity
6204error NotInitializing();
6205```*/
6206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6207    #[derive(Clone)]
6208    pub struct NotInitializing {}
6209    #[allow(
6210        non_camel_case_types,
6211        non_snake_case,
6212        clippy::pub_underscore_fields,
6213        clippy::style
6214    )]
6215    const _: () = {
6216        use alloy::sol_types as alloy_sol_types;
6217        #[doc(hidden)]
6218        type UnderlyingSolTuple<'a> = ();
6219        #[doc(hidden)]
6220        type UnderlyingRustTuple<'a> = ();
6221        #[cfg(test)]
6222        #[allow(dead_code, unreachable_patterns)]
6223        fn _type_assertion(
6224            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6225        ) {
6226            match _t {
6227                alloy_sol_types::private::AssertTypeEq::<
6228                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6229                >(_) => {}
6230            }
6231        }
6232        #[automatically_derived]
6233        #[doc(hidden)]
6234        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6235            fn from(value: NotInitializing) -> Self {
6236                ()
6237            }
6238        }
6239        #[automatically_derived]
6240        #[doc(hidden)]
6241        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6242            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6243                Self {}
6244            }
6245        }
6246        #[automatically_derived]
6247        impl alloy_sol_types::SolError for NotInitializing {
6248            type Parameters<'a> = UnderlyingSolTuple<'a>;
6249            type Token<'a> = <Self::Parameters<
6250                'a,
6251            > as alloy_sol_types::SolType>::Token<'a>;
6252            const SIGNATURE: &'static str = "NotInitializing()";
6253            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6254            #[inline]
6255            fn new<'a>(
6256                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6257            ) -> Self {
6258                tuple.into()
6259            }
6260            #[inline]
6261            fn tokenize(&self) -> Self::Token<'_> {
6262                ()
6263            }
6264        }
6265    };
6266    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6267    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6268```solidity
6269error OutdatedState();
6270```*/
6271    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6272    #[derive(Clone)]
6273    pub struct OutdatedState {}
6274    #[allow(
6275        non_camel_case_types,
6276        non_snake_case,
6277        clippy::pub_underscore_fields,
6278        clippy::style
6279    )]
6280    const _: () = {
6281        use alloy::sol_types as alloy_sol_types;
6282        #[doc(hidden)]
6283        type UnderlyingSolTuple<'a> = ();
6284        #[doc(hidden)]
6285        type UnderlyingRustTuple<'a> = ();
6286        #[cfg(test)]
6287        #[allow(dead_code, unreachable_patterns)]
6288        fn _type_assertion(
6289            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6290        ) {
6291            match _t {
6292                alloy_sol_types::private::AssertTypeEq::<
6293                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6294                >(_) => {}
6295            }
6296        }
6297        #[automatically_derived]
6298        #[doc(hidden)]
6299        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6300            fn from(value: OutdatedState) -> Self {
6301                ()
6302            }
6303        }
6304        #[automatically_derived]
6305        #[doc(hidden)]
6306        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6307            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6308                Self {}
6309            }
6310        }
6311        #[automatically_derived]
6312        impl alloy_sol_types::SolError for OutdatedState {
6313            type Parameters<'a> = UnderlyingSolTuple<'a>;
6314            type Token<'a> = <Self::Parameters<
6315                'a,
6316            > as alloy_sol_types::SolType>::Token<'a>;
6317            const SIGNATURE: &'static str = "OutdatedState()";
6318            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6319            #[inline]
6320            fn new<'a>(
6321                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6322            ) -> Self {
6323                tuple.into()
6324            }
6325            #[inline]
6326            fn tokenize(&self) -> Self::Token<'_> {
6327                ()
6328            }
6329        }
6330    };
6331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6332    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6333```solidity
6334error OwnableInvalidOwner(address owner);
6335```*/
6336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6337    #[derive(Clone)]
6338    pub struct OwnableInvalidOwner {
6339        #[allow(missing_docs)]
6340        pub owner: alloy::sol_types::private::Address,
6341    }
6342    #[allow(
6343        non_camel_case_types,
6344        non_snake_case,
6345        clippy::pub_underscore_fields,
6346        clippy::style
6347    )]
6348    const _: () = {
6349        use alloy::sol_types as alloy_sol_types;
6350        #[doc(hidden)]
6351        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6352        #[doc(hidden)]
6353        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6354        #[cfg(test)]
6355        #[allow(dead_code, unreachable_patterns)]
6356        fn _type_assertion(
6357            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6358        ) {
6359            match _t {
6360                alloy_sol_types::private::AssertTypeEq::<
6361                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6362                >(_) => {}
6363            }
6364        }
6365        #[automatically_derived]
6366        #[doc(hidden)]
6367        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6368            fn from(value: OwnableInvalidOwner) -> Self {
6369                (value.owner,)
6370            }
6371        }
6372        #[automatically_derived]
6373        #[doc(hidden)]
6374        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6375            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6376                Self { owner: tuple.0 }
6377            }
6378        }
6379        #[automatically_derived]
6380        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6381            type Parameters<'a> = UnderlyingSolTuple<'a>;
6382            type Token<'a> = <Self::Parameters<
6383                'a,
6384            > as alloy_sol_types::SolType>::Token<'a>;
6385            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6386            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6387            #[inline]
6388            fn new<'a>(
6389                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6390            ) -> Self {
6391                tuple.into()
6392            }
6393            #[inline]
6394            fn tokenize(&self) -> Self::Token<'_> {
6395                (
6396                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6397                        &self.owner,
6398                    ),
6399                )
6400            }
6401        }
6402    };
6403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6404    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6405```solidity
6406error OwnableUnauthorizedAccount(address account);
6407```*/
6408    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6409    #[derive(Clone)]
6410    pub struct OwnableUnauthorizedAccount {
6411        #[allow(missing_docs)]
6412        pub account: alloy::sol_types::private::Address,
6413    }
6414    #[allow(
6415        non_camel_case_types,
6416        non_snake_case,
6417        clippy::pub_underscore_fields,
6418        clippy::style
6419    )]
6420    const _: () = {
6421        use alloy::sol_types as alloy_sol_types;
6422        #[doc(hidden)]
6423        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6424        #[doc(hidden)]
6425        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6426        #[cfg(test)]
6427        #[allow(dead_code, unreachable_patterns)]
6428        fn _type_assertion(
6429            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6430        ) {
6431            match _t {
6432                alloy_sol_types::private::AssertTypeEq::<
6433                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6434                >(_) => {}
6435            }
6436        }
6437        #[automatically_derived]
6438        #[doc(hidden)]
6439        impl ::core::convert::From<OwnableUnauthorizedAccount>
6440        for UnderlyingRustTuple<'_> {
6441            fn from(value: OwnableUnauthorizedAccount) -> Self {
6442                (value.account,)
6443            }
6444        }
6445        #[automatically_derived]
6446        #[doc(hidden)]
6447        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6448        for OwnableUnauthorizedAccount {
6449            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6450                Self { account: tuple.0 }
6451            }
6452        }
6453        #[automatically_derived]
6454        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6455            type Parameters<'a> = UnderlyingSolTuple<'a>;
6456            type Token<'a> = <Self::Parameters<
6457                'a,
6458            > as alloy_sol_types::SolType>::Token<'a>;
6459            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6460            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6461            #[inline]
6462            fn new<'a>(
6463                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6464            ) -> Self {
6465                tuple.into()
6466            }
6467            #[inline]
6468            fn tokenize(&self) -> Self::Token<'_> {
6469                (
6470                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6471                        &self.account,
6472                    ),
6473                )
6474            }
6475        }
6476    };
6477    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6478    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6479```solidity
6480error ProverNotPermissioned();
6481```*/
6482    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6483    #[derive(Clone)]
6484    pub struct ProverNotPermissioned {}
6485    #[allow(
6486        non_camel_case_types,
6487        non_snake_case,
6488        clippy::pub_underscore_fields,
6489        clippy::style
6490    )]
6491    const _: () = {
6492        use alloy::sol_types as alloy_sol_types;
6493        #[doc(hidden)]
6494        type UnderlyingSolTuple<'a> = ();
6495        #[doc(hidden)]
6496        type UnderlyingRustTuple<'a> = ();
6497        #[cfg(test)]
6498        #[allow(dead_code, unreachable_patterns)]
6499        fn _type_assertion(
6500            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6501        ) {
6502            match _t {
6503                alloy_sol_types::private::AssertTypeEq::<
6504                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6505                >(_) => {}
6506            }
6507        }
6508        #[automatically_derived]
6509        #[doc(hidden)]
6510        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6511            fn from(value: ProverNotPermissioned) -> Self {
6512                ()
6513            }
6514        }
6515        #[automatically_derived]
6516        #[doc(hidden)]
6517        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6518            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6519                Self {}
6520            }
6521        }
6522        #[automatically_derived]
6523        impl alloy_sol_types::SolError for ProverNotPermissioned {
6524            type Parameters<'a> = UnderlyingSolTuple<'a>;
6525            type Token<'a> = <Self::Parameters<
6526                'a,
6527            > as alloy_sol_types::SolType>::Token<'a>;
6528            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6529            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6530            #[inline]
6531            fn new<'a>(
6532                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6533            ) -> Self {
6534                tuple.into()
6535            }
6536            #[inline]
6537            fn tokenize(&self) -> Self::Token<'_> {
6538                ()
6539            }
6540        }
6541    };
6542    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6543    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6544```solidity
6545error UUPSUnauthorizedCallContext();
6546```*/
6547    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6548    #[derive(Clone)]
6549    pub struct UUPSUnauthorizedCallContext {}
6550    #[allow(
6551        non_camel_case_types,
6552        non_snake_case,
6553        clippy::pub_underscore_fields,
6554        clippy::style
6555    )]
6556    const _: () = {
6557        use alloy::sol_types as alloy_sol_types;
6558        #[doc(hidden)]
6559        type UnderlyingSolTuple<'a> = ();
6560        #[doc(hidden)]
6561        type UnderlyingRustTuple<'a> = ();
6562        #[cfg(test)]
6563        #[allow(dead_code, unreachable_patterns)]
6564        fn _type_assertion(
6565            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6566        ) {
6567            match _t {
6568                alloy_sol_types::private::AssertTypeEq::<
6569                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6570                >(_) => {}
6571            }
6572        }
6573        #[automatically_derived]
6574        #[doc(hidden)]
6575        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6576        for UnderlyingRustTuple<'_> {
6577            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6578                ()
6579            }
6580        }
6581        #[automatically_derived]
6582        #[doc(hidden)]
6583        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6584        for UUPSUnauthorizedCallContext {
6585            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6586                Self {}
6587            }
6588        }
6589        #[automatically_derived]
6590        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6591            type Parameters<'a> = UnderlyingSolTuple<'a>;
6592            type Token<'a> = <Self::Parameters<
6593                'a,
6594            > as alloy_sol_types::SolType>::Token<'a>;
6595            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6596            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6597            #[inline]
6598            fn new<'a>(
6599                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6600            ) -> Self {
6601                tuple.into()
6602            }
6603            #[inline]
6604            fn tokenize(&self) -> Self::Token<'_> {
6605                ()
6606            }
6607        }
6608    };
6609    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6610    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6611```solidity
6612error UUPSUnsupportedProxiableUUID(bytes32 slot);
6613```*/
6614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6615    #[derive(Clone)]
6616    pub struct UUPSUnsupportedProxiableUUID {
6617        #[allow(missing_docs)]
6618        pub slot: alloy::sol_types::private::FixedBytes<32>,
6619    }
6620    #[allow(
6621        non_camel_case_types,
6622        non_snake_case,
6623        clippy::pub_underscore_fields,
6624        clippy::style
6625    )]
6626    const _: () = {
6627        use alloy::sol_types as alloy_sol_types;
6628        #[doc(hidden)]
6629        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6630        #[doc(hidden)]
6631        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6632        #[cfg(test)]
6633        #[allow(dead_code, unreachable_patterns)]
6634        fn _type_assertion(
6635            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6636        ) {
6637            match _t {
6638                alloy_sol_types::private::AssertTypeEq::<
6639                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6640                >(_) => {}
6641            }
6642        }
6643        #[automatically_derived]
6644        #[doc(hidden)]
6645        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6646        for UnderlyingRustTuple<'_> {
6647            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6648                (value.slot,)
6649            }
6650        }
6651        #[automatically_derived]
6652        #[doc(hidden)]
6653        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6654        for UUPSUnsupportedProxiableUUID {
6655            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6656                Self { slot: tuple.0 }
6657            }
6658        }
6659        #[automatically_derived]
6660        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6661            type Parameters<'a> = UnderlyingSolTuple<'a>;
6662            type Token<'a> = <Self::Parameters<
6663                'a,
6664            > as alloy_sol_types::SolType>::Token<'a>;
6665            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6666            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6667            #[inline]
6668            fn new<'a>(
6669                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6670            ) -> Self {
6671                tuple.into()
6672            }
6673            #[inline]
6674            fn tokenize(&self) -> Self::Token<'_> {
6675                (
6676                    <alloy::sol_types::sol_data::FixedBytes<
6677                        32,
6678                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6679                )
6680            }
6681        }
6682    };
6683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6684    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6685```solidity
6686error WrongStakeTableUsed();
6687```*/
6688    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6689    #[derive(Clone)]
6690    pub struct WrongStakeTableUsed {}
6691    #[allow(
6692        non_camel_case_types,
6693        non_snake_case,
6694        clippy::pub_underscore_fields,
6695        clippy::style
6696    )]
6697    const _: () = {
6698        use alloy::sol_types as alloy_sol_types;
6699        #[doc(hidden)]
6700        type UnderlyingSolTuple<'a> = ();
6701        #[doc(hidden)]
6702        type UnderlyingRustTuple<'a> = ();
6703        #[cfg(test)]
6704        #[allow(dead_code, unreachable_patterns)]
6705        fn _type_assertion(
6706            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6707        ) {
6708            match _t {
6709                alloy_sol_types::private::AssertTypeEq::<
6710                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6711                >(_) => {}
6712            }
6713        }
6714        #[automatically_derived]
6715        #[doc(hidden)]
6716        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6717            fn from(value: WrongStakeTableUsed) -> Self {
6718                ()
6719            }
6720        }
6721        #[automatically_derived]
6722        #[doc(hidden)]
6723        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6724            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6725                Self {}
6726            }
6727        }
6728        #[automatically_derived]
6729        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6730            type Parameters<'a> = UnderlyingSolTuple<'a>;
6731            type Token<'a> = <Self::Parameters<
6732                'a,
6733            > as alloy_sol_types::SolType>::Token<'a>;
6734            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6735            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6736            #[inline]
6737            fn new<'a>(
6738                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6739            ) -> Self {
6740                tuple.into()
6741            }
6742            #[inline]
6743            fn tokenize(&self) -> Self::Token<'_> {
6744                ()
6745            }
6746        }
6747    };
6748    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6749    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6750```solidity
6751event Initialized(uint64 version);
6752```*/
6753    #[allow(
6754        non_camel_case_types,
6755        non_snake_case,
6756        clippy::pub_underscore_fields,
6757        clippy::style
6758    )]
6759    #[derive(Clone)]
6760    pub struct Initialized {
6761        #[allow(missing_docs)]
6762        pub version: u64,
6763    }
6764    #[allow(
6765        non_camel_case_types,
6766        non_snake_case,
6767        clippy::pub_underscore_fields,
6768        clippy::style
6769    )]
6770    const _: () = {
6771        use alloy::sol_types as alloy_sol_types;
6772        #[automatically_derived]
6773        impl alloy_sol_types::SolEvent for Initialized {
6774            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6775            type DataToken<'a> = <Self::DataTuple<
6776                'a,
6777            > as alloy_sol_types::SolType>::Token<'a>;
6778            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6779            const SIGNATURE: &'static str = "Initialized(uint64)";
6780            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6781                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6782                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6783                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6784            ]);
6785            const ANONYMOUS: bool = false;
6786            #[allow(unused_variables)]
6787            #[inline]
6788            fn new(
6789                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6790                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6791            ) -> Self {
6792                Self { version: data.0 }
6793            }
6794            #[inline]
6795            fn check_signature(
6796                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6797            ) -> alloy_sol_types::Result<()> {
6798                if topics.0 != Self::SIGNATURE_HASH {
6799                    return Err(
6800                        alloy_sol_types::Error::invalid_event_signature_hash(
6801                            Self::SIGNATURE,
6802                            topics.0,
6803                            Self::SIGNATURE_HASH,
6804                        ),
6805                    );
6806                }
6807                Ok(())
6808            }
6809            #[inline]
6810            fn tokenize_body(&self) -> Self::DataToken<'_> {
6811                (
6812                    <alloy::sol_types::sol_data::Uint<
6813                        64,
6814                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6815                )
6816            }
6817            #[inline]
6818            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6819                (Self::SIGNATURE_HASH.into(),)
6820            }
6821            #[inline]
6822            fn encode_topics_raw(
6823                &self,
6824                out: &mut [alloy_sol_types::abi::token::WordToken],
6825            ) -> alloy_sol_types::Result<()> {
6826                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6827                    return Err(alloy_sol_types::Error::Overrun);
6828                }
6829                out[0usize] = alloy_sol_types::abi::token::WordToken(
6830                    Self::SIGNATURE_HASH,
6831                );
6832                Ok(())
6833            }
6834        }
6835        #[automatically_derived]
6836        impl alloy_sol_types::private::IntoLogData for Initialized {
6837            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6838                From::from(self)
6839            }
6840            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6841                From::from(&self)
6842            }
6843        }
6844        #[automatically_derived]
6845        impl From<&Initialized> for alloy_sol_types::private::LogData {
6846            #[inline]
6847            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6848                alloy_sol_types::SolEvent::encode_log_data(this)
6849            }
6850        }
6851    };
6852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6853    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6854```solidity
6855event NewEpoch(uint64 epoch);
6856```*/
6857    #[allow(
6858        non_camel_case_types,
6859        non_snake_case,
6860        clippy::pub_underscore_fields,
6861        clippy::style
6862    )]
6863    #[derive(Clone)]
6864    pub struct NewEpoch {
6865        #[allow(missing_docs)]
6866        pub epoch: u64,
6867    }
6868    #[allow(
6869        non_camel_case_types,
6870        non_snake_case,
6871        clippy::pub_underscore_fields,
6872        clippy::style
6873    )]
6874    const _: () = {
6875        use alloy::sol_types as alloy_sol_types;
6876        #[automatically_derived]
6877        impl alloy_sol_types::SolEvent for NewEpoch {
6878            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6879            type DataToken<'a> = <Self::DataTuple<
6880                'a,
6881            > as alloy_sol_types::SolType>::Token<'a>;
6882            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6883            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6884            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6885                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
6886                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
6887                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6888            ]);
6889            const ANONYMOUS: bool = false;
6890            #[allow(unused_variables)]
6891            #[inline]
6892            fn new(
6893                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6894                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6895            ) -> Self {
6896                Self { epoch: data.0 }
6897            }
6898            #[inline]
6899            fn check_signature(
6900                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6901            ) -> alloy_sol_types::Result<()> {
6902                if topics.0 != Self::SIGNATURE_HASH {
6903                    return Err(
6904                        alloy_sol_types::Error::invalid_event_signature_hash(
6905                            Self::SIGNATURE,
6906                            topics.0,
6907                            Self::SIGNATURE_HASH,
6908                        ),
6909                    );
6910                }
6911                Ok(())
6912            }
6913            #[inline]
6914            fn tokenize_body(&self) -> Self::DataToken<'_> {
6915                (
6916                    <alloy::sol_types::sol_data::Uint<
6917                        64,
6918                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
6919                )
6920            }
6921            #[inline]
6922            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6923                (Self::SIGNATURE_HASH.into(),)
6924            }
6925            #[inline]
6926            fn encode_topics_raw(
6927                &self,
6928                out: &mut [alloy_sol_types::abi::token::WordToken],
6929            ) -> alloy_sol_types::Result<()> {
6930                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6931                    return Err(alloy_sol_types::Error::Overrun);
6932                }
6933                out[0usize] = alloy_sol_types::abi::token::WordToken(
6934                    Self::SIGNATURE_HASH,
6935                );
6936                Ok(())
6937            }
6938        }
6939        #[automatically_derived]
6940        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6941            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6942                From::from(self)
6943            }
6944            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6945                From::from(&self)
6946            }
6947        }
6948        #[automatically_derived]
6949        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6950            #[inline]
6951            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6952                alloy_sol_types::SolEvent::encode_log_data(this)
6953            }
6954        }
6955    };
6956    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6957    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6958```solidity
6959event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6960```*/
6961    #[allow(
6962        non_camel_case_types,
6963        non_snake_case,
6964        clippy::pub_underscore_fields,
6965        clippy::style
6966    )]
6967    #[derive(Clone)]
6968    pub struct NewState {
6969        #[allow(missing_docs)]
6970        pub viewNum: u64,
6971        #[allow(missing_docs)]
6972        pub blockHeight: u64,
6973        #[allow(missing_docs)]
6974        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6975    }
6976    #[allow(
6977        non_camel_case_types,
6978        non_snake_case,
6979        clippy::pub_underscore_fields,
6980        clippy::style
6981    )]
6982    const _: () = {
6983        use alloy::sol_types as alloy_sol_types;
6984        #[automatically_derived]
6985        impl alloy_sol_types::SolEvent for NewState {
6986            type DataTuple<'a> = (BN254::ScalarField,);
6987            type DataToken<'a> = <Self::DataTuple<
6988                'a,
6989            > as alloy_sol_types::SolType>::Token<'a>;
6990            type TopicList = (
6991                alloy_sol_types::sol_data::FixedBytes<32>,
6992                alloy::sol_types::sol_data::Uint<64>,
6993                alloy::sol_types::sol_data::Uint<64>,
6994            );
6995            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6996            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6997                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6998                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6999                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7000            ]);
7001            const ANONYMOUS: bool = false;
7002            #[allow(unused_variables)]
7003            #[inline]
7004            fn new(
7005                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7006                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7007            ) -> Self {
7008                Self {
7009                    viewNum: topics.1,
7010                    blockHeight: topics.2,
7011                    blockCommRoot: data.0,
7012                }
7013            }
7014            #[inline]
7015            fn check_signature(
7016                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7017            ) -> alloy_sol_types::Result<()> {
7018                if topics.0 != Self::SIGNATURE_HASH {
7019                    return Err(
7020                        alloy_sol_types::Error::invalid_event_signature_hash(
7021                            Self::SIGNATURE,
7022                            topics.0,
7023                            Self::SIGNATURE_HASH,
7024                        ),
7025                    );
7026                }
7027                Ok(())
7028            }
7029            #[inline]
7030            fn tokenize_body(&self) -> Self::DataToken<'_> {
7031                (
7032                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7033                        &self.blockCommRoot,
7034                    ),
7035                )
7036            }
7037            #[inline]
7038            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7039                (
7040                    Self::SIGNATURE_HASH.into(),
7041                    self.viewNum.clone(),
7042                    self.blockHeight.clone(),
7043                )
7044            }
7045            #[inline]
7046            fn encode_topics_raw(
7047                &self,
7048                out: &mut [alloy_sol_types::abi::token::WordToken],
7049            ) -> alloy_sol_types::Result<()> {
7050                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7051                    return Err(alloy_sol_types::Error::Overrun);
7052                }
7053                out[0usize] = alloy_sol_types::abi::token::WordToken(
7054                    Self::SIGNATURE_HASH,
7055                );
7056                out[1usize] = <alloy::sol_types::sol_data::Uint<
7057                    64,
7058                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7059                out[2usize] = <alloy::sol_types::sol_data::Uint<
7060                    64,
7061                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7062                Ok(())
7063            }
7064        }
7065        #[automatically_derived]
7066        impl alloy_sol_types::private::IntoLogData for NewState {
7067            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7068                From::from(self)
7069            }
7070            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7071                From::from(&self)
7072            }
7073        }
7074        #[automatically_derived]
7075        impl From<&NewState> for alloy_sol_types::private::LogData {
7076            #[inline]
7077            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7078                alloy_sol_types::SolEvent::encode_log_data(this)
7079            }
7080        }
7081    };
7082    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7083    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7084```solidity
7085event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7086```*/
7087    #[allow(
7088        non_camel_case_types,
7089        non_snake_case,
7090        clippy::pub_underscore_fields,
7091        clippy::style
7092    )]
7093    #[derive(Clone)]
7094    pub struct OwnershipTransferred {
7095        #[allow(missing_docs)]
7096        pub previousOwner: alloy::sol_types::private::Address,
7097        #[allow(missing_docs)]
7098        pub newOwner: alloy::sol_types::private::Address,
7099    }
7100    #[allow(
7101        non_camel_case_types,
7102        non_snake_case,
7103        clippy::pub_underscore_fields,
7104        clippy::style
7105    )]
7106    const _: () = {
7107        use alloy::sol_types as alloy_sol_types;
7108        #[automatically_derived]
7109        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7110            type DataTuple<'a> = ();
7111            type DataToken<'a> = <Self::DataTuple<
7112                'a,
7113            > as alloy_sol_types::SolType>::Token<'a>;
7114            type TopicList = (
7115                alloy_sol_types::sol_data::FixedBytes<32>,
7116                alloy::sol_types::sol_data::Address,
7117                alloy::sol_types::sol_data::Address,
7118            );
7119            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7120            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7121                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7122                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7123                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7124            ]);
7125            const ANONYMOUS: bool = false;
7126            #[allow(unused_variables)]
7127            #[inline]
7128            fn new(
7129                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7130                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7131            ) -> Self {
7132                Self {
7133                    previousOwner: topics.1,
7134                    newOwner: topics.2,
7135                }
7136            }
7137            #[inline]
7138            fn check_signature(
7139                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7140            ) -> alloy_sol_types::Result<()> {
7141                if topics.0 != Self::SIGNATURE_HASH {
7142                    return Err(
7143                        alloy_sol_types::Error::invalid_event_signature_hash(
7144                            Self::SIGNATURE,
7145                            topics.0,
7146                            Self::SIGNATURE_HASH,
7147                        ),
7148                    );
7149                }
7150                Ok(())
7151            }
7152            #[inline]
7153            fn tokenize_body(&self) -> Self::DataToken<'_> {
7154                ()
7155            }
7156            #[inline]
7157            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7158                (
7159                    Self::SIGNATURE_HASH.into(),
7160                    self.previousOwner.clone(),
7161                    self.newOwner.clone(),
7162                )
7163            }
7164            #[inline]
7165            fn encode_topics_raw(
7166                &self,
7167                out: &mut [alloy_sol_types::abi::token::WordToken],
7168            ) -> alloy_sol_types::Result<()> {
7169                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7170                    return Err(alloy_sol_types::Error::Overrun);
7171                }
7172                out[0usize] = alloy_sol_types::abi::token::WordToken(
7173                    Self::SIGNATURE_HASH,
7174                );
7175                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7176                    &self.previousOwner,
7177                );
7178                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7179                    &self.newOwner,
7180                );
7181                Ok(())
7182            }
7183        }
7184        #[automatically_derived]
7185        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7186            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7187                From::from(self)
7188            }
7189            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7190                From::from(&self)
7191            }
7192        }
7193        #[automatically_derived]
7194        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7195            #[inline]
7196            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7197                alloy_sol_types::SolEvent::encode_log_data(this)
7198            }
7199        }
7200    };
7201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7202    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7203```solidity
7204event PermissionedProverNotRequired();
7205```*/
7206    #[allow(
7207        non_camel_case_types,
7208        non_snake_case,
7209        clippy::pub_underscore_fields,
7210        clippy::style
7211    )]
7212    #[derive(Clone)]
7213    pub struct PermissionedProverNotRequired {}
7214    #[allow(
7215        non_camel_case_types,
7216        non_snake_case,
7217        clippy::pub_underscore_fields,
7218        clippy::style
7219    )]
7220    const _: () = {
7221        use alloy::sol_types as alloy_sol_types;
7222        #[automatically_derived]
7223        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7224            type DataTuple<'a> = ();
7225            type DataToken<'a> = <Self::DataTuple<
7226                'a,
7227            > as alloy_sol_types::SolType>::Token<'a>;
7228            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7229            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7230            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7231                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7232                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7233                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7234            ]);
7235            const ANONYMOUS: bool = false;
7236            #[allow(unused_variables)]
7237            #[inline]
7238            fn new(
7239                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7240                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7241            ) -> Self {
7242                Self {}
7243            }
7244            #[inline]
7245            fn check_signature(
7246                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7247            ) -> alloy_sol_types::Result<()> {
7248                if topics.0 != Self::SIGNATURE_HASH {
7249                    return Err(
7250                        alloy_sol_types::Error::invalid_event_signature_hash(
7251                            Self::SIGNATURE,
7252                            topics.0,
7253                            Self::SIGNATURE_HASH,
7254                        ),
7255                    );
7256                }
7257                Ok(())
7258            }
7259            #[inline]
7260            fn tokenize_body(&self) -> Self::DataToken<'_> {
7261                ()
7262            }
7263            #[inline]
7264            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7265                (Self::SIGNATURE_HASH.into(),)
7266            }
7267            #[inline]
7268            fn encode_topics_raw(
7269                &self,
7270                out: &mut [alloy_sol_types::abi::token::WordToken],
7271            ) -> alloy_sol_types::Result<()> {
7272                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7273                    return Err(alloy_sol_types::Error::Overrun);
7274                }
7275                out[0usize] = alloy_sol_types::abi::token::WordToken(
7276                    Self::SIGNATURE_HASH,
7277                );
7278                Ok(())
7279            }
7280        }
7281        #[automatically_derived]
7282        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7283            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7284                From::from(self)
7285            }
7286            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7287                From::from(&self)
7288            }
7289        }
7290        #[automatically_derived]
7291        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7292            #[inline]
7293            fn from(
7294                this: &PermissionedProverNotRequired,
7295            ) -> alloy_sol_types::private::LogData {
7296                alloy_sol_types::SolEvent::encode_log_data(this)
7297            }
7298        }
7299    };
7300    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7301    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7302```solidity
7303event PermissionedProverRequired(address permissionedProver);
7304```*/
7305    #[allow(
7306        non_camel_case_types,
7307        non_snake_case,
7308        clippy::pub_underscore_fields,
7309        clippy::style
7310    )]
7311    #[derive(Clone)]
7312    pub struct PermissionedProverRequired {
7313        #[allow(missing_docs)]
7314        pub permissionedProver: alloy::sol_types::private::Address,
7315    }
7316    #[allow(
7317        non_camel_case_types,
7318        non_snake_case,
7319        clippy::pub_underscore_fields,
7320        clippy::style
7321    )]
7322    const _: () = {
7323        use alloy::sol_types as alloy_sol_types;
7324        #[automatically_derived]
7325        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7326            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7327            type DataToken<'a> = <Self::DataTuple<
7328                'a,
7329            > as alloy_sol_types::SolType>::Token<'a>;
7330            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7331            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7332            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7333                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7334                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7335                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7336            ]);
7337            const ANONYMOUS: bool = false;
7338            #[allow(unused_variables)]
7339            #[inline]
7340            fn new(
7341                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7342                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7343            ) -> Self {
7344                Self { permissionedProver: data.0 }
7345            }
7346            #[inline]
7347            fn check_signature(
7348                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7349            ) -> alloy_sol_types::Result<()> {
7350                if topics.0 != Self::SIGNATURE_HASH {
7351                    return Err(
7352                        alloy_sol_types::Error::invalid_event_signature_hash(
7353                            Self::SIGNATURE,
7354                            topics.0,
7355                            Self::SIGNATURE_HASH,
7356                        ),
7357                    );
7358                }
7359                Ok(())
7360            }
7361            #[inline]
7362            fn tokenize_body(&self) -> Self::DataToken<'_> {
7363                (
7364                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7365                        &self.permissionedProver,
7366                    ),
7367                )
7368            }
7369            #[inline]
7370            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7371                (Self::SIGNATURE_HASH.into(),)
7372            }
7373            #[inline]
7374            fn encode_topics_raw(
7375                &self,
7376                out: &mut [alloy_sol_types::abi::token::WordToken],
7377            ) -> alloy_sol_types::Result<()> {
7378                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7379                    return Err(alloy_sol_types::Error::Overrun);
7380                }
7381                out[0usize] = alloy_sol_types::abi::token::WordToken(
7382                    Self::SIGNATURE_HASH,
7383                );
7384                Ok(())
7385            }
7386        }
7387        #[automatically_derived]
7388        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7389            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7390                From::from(self)
7391            }
7392            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7393                From::from(&self)
7394            }
7395        }
7396        #[automatically_derived]
7397        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7398            #[inline]
7399            fn from(
7400                this: &PermissionedProverRequired,
7401            ) -> alloy_sol_types::private::LogData {
7402                alloy_sol_types::SolEvent::encode_log_data(this)
7403            }
7404        }
7405    };
7406    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7407    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7408```solidity
7409event Upgrade(address implementation);
7410```*/
7411    #[allow(
7412        non_camel_case_types,
7413        non_snake_case,
7414        clippy::pub_underscore_fields,
7415        clippy::style
7416    )]
7417    #[derive(Clone)]
7418    pub struct Upgrade {
7419        #[allow(missing_docs)]
7420        pub implementation: alloy::sol_types::private::Address,
7421    }
7422    #[allow(
7423        non_camel_case_types,
7424        non_snake_case,
7425        clippy::pub_underscore_fields,
7426        clippy::style
7427    )]
7428    const _: () = {
7429        use alloy::sol_types as alloy_sol_types;
7430        #[automatically_derived]
7431        impl alloy_sol_types::SolEvent for Upgrade {
7432            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7433            type DataToken<'a> = <Self::DataTuple<
7434                'a,
7435            > as alloy_sol_types::SolType>::Token<'a>;
7436            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7437            const SIGNATURE: &'static str = "Upgrade(address)";
7438            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7439                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7440                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7441                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7442            ]);
7443            const ANONYMOUS: bool = false;
7444            #[allow(unused_variables)]
7445            #[inline]
7446            fn new(
7447                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7448                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7449            ) -> Self {
7450                Self { implementation: data.0 }
7451            }
7452            #[inline]
7453            fn check_signature(
7454                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7455            ) -> alloy_sol_types::Result<()> {
7456                if topics.0 != Self::SIGNATURE_HASH {
7457                    return Err(
7458                        alloy_sol_types::Error::invalid_event_signature_hash(
7459                            Self::SIGNATURE,
7460                            topics.0,
7461                            Self::SIGNATURE_HASH,
7462                        ),
7463                    );
7464                }
7465                Ok(())
7466            }
7467            #[inline]
7468            fn tokenize_body(&self) -> Self::DataToken<'_> {
7469                (
7470                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7471                        &self.implementation,
7472                    ),
7473                )
7474            }
7475            #[inline]
7476            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7477                (Self::SIGNATURE_HASH.into(),)
7478            }
7479            #[inline]
7480            fn encode_topics_raw(
7481                &self,
7482                out: &mut [alloy_sol_types::abi::token::WordToken],
7483            ) -> alloy_sol_types::Result<()> {
7484                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7485                    return Err(alloy_sol_types::Error::Overrun);
7486                }
7487                out[0usize] = alloy_sol_types::abi::token::WordToken(
7488                    Self::SIGNATURE_HASH,
7489                );
7490                Ok(())
7491            }
7492        }
7493        #[automatically_derived]
7494        impl alloy_sol_types::private::IntoLogData for Upgrade {
7495            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7496                From::from(self)
7497            }
7498            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7499                From::from(&self)
7500            }
7501        }
7502        #[automatically_derived]
7503        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7504            #[inline]
7505            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7506                alloy_sol_types::SolEvent::encode_log_data(this)
7507            }
7508        }
7509    };
7510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7511    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7512```solidity
7513event Upgraded(address indexed implementation);
7514```*/
7515    #[allow(
7516        non_camel_case_types,
7517        non_snake_case,
7518        clippy::pub_underscore_fields,
7519        clippy::style
7520    )]
7521    #[derive(Clone)]
7522    pub struct Upgraded {
7523        #[allow(missing_docs)]
7524        pub implementation: alloy::sol_types::private::Address,
7525    }
7526    #[allow(
7527        non_camel_case_types,
7528        non_snake_case,
7529        clippy::pub_underscore_fields,
7530        clippy::style
7531    )]
7532    const _: () = {
7533        use alloy::sol_types as alloy_sol_types;
7534        #[automatically_derived]
7535        impl alloy_sol_types::SolEvent for Upgraded {
7536            type DataTuple<'a> = ();
7537            type DataToken<'a> = <Self::DataTuple<
7538                'a,
7539            > as alloy_sol_types::SolType>::Token<'a>;
7540            type TopicList = (
7541                alloy_sol_types::sol_data::FixedBytes<32>,
7542                alloy::sol_types::sol_data::Address,
7543            );
7544            const SIGNATURE: &'static str = "Upgraded(address)";
7545            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7546                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7547                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7548                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7549            ]);
7550            const ANONYMOUS: bool = false;
7551            #[allow(unused_variables)]
7552            #[inline]
7553            fn new(
7554                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7555                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7556            ) -> Self {
7557                Self { implementation: topics.1 }
7558            }
7559            #[inline]
7560            fn check_signature(
7561                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7562            ) -> alloy_sol_types::Result<()> {
7563                if topics.0 != Self::SIGNATURE_HASH {
7564                    return Err(
7565                        alloy_sol_types::Error::invalid_event_signature_hash(
7566                            Self::SIGNATURE,
7567                            topics.0,
7568                            Self::SIGNATURE_HASH,
7569                        ),
7570                    );
7571                }
7572                Ok(())
7573            }
7574            #[inline]
7575            fn tokenize_body(&self) -> Self::DataToken<'_> {
7576                ()
7577            }
7578            #[inline]
7579            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7580                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7581            }
7582            #[inline]
7583            fn encode_topics_raw(
7584                &self,
7585                out: &mut [alloy_sol_types::abi::token::WordToken],
7586            ) -> alloy_sol_types::Result<()> {
7587                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7588                    return Err(alloy_sol_types::Error::Overrun);
7589                }
7590                out[0usize] = alloy_sol_types::abi::token::WordToken(
7591                    Self::SIGNATURE_HASH,
7592                );
7593                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7594                    &self.implementation,
7595                );
7596                Ok(())
7597            }
7598        }
7599        #[automatically_derived]
7600        impl alloy_sol_types::private::IntoLogData for Upgraded {
7601            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7602                From::from(self)
7603            }
7604            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7605                From::from(&self)
7606            }
7607        }
7608        #[automatically_derived]
7609        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7610            #[inline]
7611            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7612                alloy_sol_types::SolEvent::encode_log_data(this)
7613            }
7614        }
7615    };
7616    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7617    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7618```solidity
7619function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7620```*/
7621    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7622    #[derive(Clone)]
7623    pub struct UPGRADE_INTERFACE_VERSIONCall {}
7624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7625    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7627    #[derive(Clone)]
7628    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7629        #[allow(missing_docs)]
7630        pub _0: alloy::sol_types::private::String,
7631    }
7632    #[allow(
7633        non_camel_case_types,
7634        non_snake_case,
7635        clippy::pub_underscore_fields,
7636        clippy::style
7637    )]
7638    const _: () = {
7639        use alloy::sol_types as alloy_sol_types;
7640        {
7641            #[doc(hidden)]
7642            type UnderlyingSolTuple<'a> = ();
7643            #[doc(hidden)]
7644            type UnderlyingRustTuple<'a> = ();
7645            #[cfg(test)]
7646            #[allow(dead_code, unreachable_patterns)]
7647            fn _type_assertion(
7648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7649            ) {
7650                match _t {
7651                    alloy_sol_types::private::AssertTypeEq::<
7652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7653                    >(_) => {}
7654                }
7655            }
7656            #[automatically_derived]
7657            #[doc(hidden)]
7658            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7659            for UnderlyingRustTuple<'_> {
7660                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7661                    ()
7662                }
7663            }
7664            #[automatically_derived]
7665            #[doc(hidden)]
7666            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7667            for UPGRADE_INTERFACE_VERSIONCall {
7668                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7669                    Self {}
7670                }
7671            }
7672        }
7673        {
7674            #[doc(hidden)]
7675            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7676            #[doc(hidden)]
7677            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7678            #[cfg(test)]
7679            #[allow(dead_code, unreachable_patterns)]
7680            fn _type_assertion(
7681                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7682            ) {
7683                match _t {
7684                    alloy_sol_types::private::AssertTypeEq::<
7685                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7686                    >(_) => {}
7687                }
7688            }
7689            #[automatically_derived]
7690            #[doc(hidden)]
7691            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7692            for UnderlyingRustTuple<'_> {
7693                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7694                    (value._0,)
7695                }
7696            }
7697            #[automatically_derived]
7698            #[doc(hidden)]
7699            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7700            for UPGRADE_INTERFACE_VERSIONReturn {
7701                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7702                    Self { _0: tuple.0 }
7703                }
7704            }
7705        }
7706        #[automatically_derived]
7707        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7708            type Parameters<'a> = ();
7709            type Token<'a> = <Self::Parameters<
7710                'a,
7711            > as alloy_sol_types::SolType>::Token<'a>;
7712            type Return = UPGRADE_INTERFACE_VERSIONReturn;
7713            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7714            type ReturnToken<'a> = <Self::ReturnTuple<
7715                'a,
7716            > as alloy_sol_types::SolType>::Token<'a>;
7717            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7718            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7719            #[inline]
7720            fn new<'a>(
7721                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7722            ) -> Self {
7723                tuple.into()
7724            }
7725            #[inline]
7726            fn tokenize(&self) -> Self::Token<'_> {
7727                ()
7728            }
7729            #[inline]
7730            fn abi_decode_returns(
7731                data: &[u8],
7732                validate: bool,
7733            ) -> alloy_sol_types::Result<Self::Return> {
7734                <Self::ReturnTuple<
7735                    '_,
7736                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7737                    .map(Into::into)
7738            }
7739        }
7740    };
7741    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7742    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7743```solidity
7744function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7745```*/
7746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7747    #[derive(Clone)]
7748    pub struct _getVkCall {}
7749    #[derive()]
7750    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7752    #[derive(Clone)]
7753    pub struct _getVkReturn {
7754        #[allow(missing_docs)]
7755        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7756    }
7757    #[allow(
7758        non_camel_case_types,
7759        non_snake_case,
7760        clippy::pub_underscore_fields,
7761        clippy::style
7762    )]
7763    const _: () = {
7764        use alloy::sol_types as alloy_sol_types;
7765        {
7766            #[doc(hidden)]
7767            type UnderlyingSolTuple<'a> = ();
7768            #[doc(hidden)]
7769            type UnderlyingRustTuple<'a> = ();
7770            #[cfg(test)]
7771            #[allow(dead_code, unreachable_patterns)]
7772            fn _type_assertion(
7773                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7774            ) {
7775                match _t {
7776                    alloy_sol_types::private::AssertTypeEq::<
7777                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7778                    >(_) => {}
7779                }
7780            }
7781            #[automatically_derived]
7782            #[doc(hidden)]
7783            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7784                fn from(value: _getVkCall) -> Self {
7785                    ()
7786                }
7787            }
7788            #[automatically_derived]
7789            #[doc(hidden)]
7790            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7791                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7792                    Self {}
7793                }
7794            }
7795        }
7796        {
7797            #[doc(hidden)]
7798            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7799            #[doc(hidden)]
7800            type UnderlyingRustTuple<'a> = (
7801                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7802            );
7803            #[cfg(test)]
7804            #[allow(dead_code, unreachable_patterns)]
7805            fn _type_assertion(
7806                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7807            ) {
7808                match _t {
7809                    alloy_sol_types::private::AssertTypeEq::<
7810                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7811                    >(_) => {}
7812                }
7813            }
7814            #[automatically_derived]
7815            #[doc(hidden)]
7816            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7817                fn from(value: _getVkReturn) -> Self {
7818                    (value.vk,)
7819                }
7820            }
7821            #[automatically_derived]
7822            #[doc(hidden)]
7823            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7824                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7825                    Self { vk: tuple.0 }
7826                }
7827            }
7828        }
7829        #[automatically_derived]
7830        impl alloy_sol_types::SolCall for _getVkCall {
7831            type Parameters<'a> = ();
7832            type Token<'a> = <Self::Parameters<
7833                'a,
7834            > as alloy_sol_types::SolType>::Token<'a>;
7835            type Return = _getVkReturn;
7836            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7837            type ReturnToken<'a> = <Self::ReturnTuple<
7838                'a,
7839            > as alloy_sol_types::SolType>::Token<'a>;
7840            const SIGNATURE: &'static str = "_getVk()";
7841            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7842            #[inline]
7843            fn new<'a>(
7844                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7845            ) -> Self {
7846                tuple.into()
7847            }
7848            #[inline]
7849            fn tokenize(&self) -> Self::Token<'_> {
7850                ()
7851            }
7852            #[inline]
7853            fn abi_decode_returns(
7854                data: &[u8],
7855                validate: bool,
7856            ) -> alloy_sol_types::Result<Self::Return> {
7857                <Self::ReturnTuple<
7858                    '_,
7859                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7860                    .map(Into::into)
7861            }
7862        }
7863    };
7864    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7865    /**Function with signature `authRoot()` and selector `0x998328e8`.
7866```solidity
7867function authRoot() external view returns (uint256);
7868```*/
7869    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7870    #[derive(Clone)]
7871    pub struct authRootCall {}
7872    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7873    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
7874    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7875    #[derive(Clone)]
7876    pub struct authRootReturn {
7877        #[allow(missing_docs)]
7878        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7879    }
7880    #[allow(
7881        non_camel_case_types,
7882        non_snake_case,
7883        clippy::pub_underscore_fields,
7884        clippy::style
7885    )]
7886    const _: () = {
7887        use alloy::sol_types as alloy_sol_types;
7888        {
7889            #[doc(hidden)]
7890            type UnderlyingSolTuple<'a> = ();
7891            #[doc(hidden)]
7892            type UnderlyingRustTuple<'a> = ();
7893            #[cfg(test)]
7894            #[allow(dead_code, unreachable_patterns)]
7895            fn _type_assertion(
7896                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7897            ) {
7898                match _t {
7899                    alloy_sol_types::private::AssertTypeEq::<
7900                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7901                    >(_) => {}
7902                }
7903            }
7904            #[automatically_derived]
7905            #[doc(hidden)]
7906            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
7907                fn from(value: authRootCall) -> Self {
7908                    ()
7909                }
7910            }
7911            #[automatically_derived]
7912            #[doc(hidden)]
7913            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
7914                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7915                    Self {}
7916                }
7917            }
7918        }
7919        {
7920            #[doc(hidden)]
7921            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7922            #[doc(hidden)]
7923            type UnderlyingRustTuple<'a> = (
7924                alloy::sol_types::private::primitives::aliases::U256,
7925            );
7926            #[cfg(test)]
7927            #[allow(dead_code, unreachable_patterns)]
7928            fn _type_assertion(
7929                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7930            ) {
7931                match _t {
7932                    alloy_sol_types::private::AssertTypeEq::<
7933                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7934                    >(_) => {}
7935                }
7936            }
7937            #[automatically_derived]
7938            #[doc(hidden)]
7939            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
7940                fn from(value: authRootReturn) -> Self {
7941                    (value._0,)
7942                }
7943            }
7944            #[automatically_derived]
7945            #[doc(hidden)]
7946            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
7947                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7948                    Self { _0: tuple.0 }
7949                }
7950            }
7951        }
7952        #[automatically_derived]
7953        impl alloy_sol_types::SolCall for authRootCall {
7954            type Parameters<'a> = ();
7955            type Token<'a> = <Self::Parameters<
7956                'a,
7957            > as alloy_sol_types::SolType>::Token<'a>;
7958            type Return = authRootReturn;
7959            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7960            type ReturnToken<'a> = <Self::ReturnTuple<
7961                'a,
7962            > as alloy_sol_types::SolType>::Token<'a>;
7963            const SIGNATURE: &'static str = "authRoot()";
7964            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
7965            #[inline]
7966            fn new<'a>(
7967                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7968            ) -> Self {
7969                tuple.into()
7970            }
7971            #[inline]
7972            fn tokenize(&self) -> Self::Token<'_> {
7973                ()
7974            }
7975            #[inline]
7976            fn abi_decode_returns(
7977                data: &[u8],
7978                validate: bool,
7979            ) -> alloy_sol_types::Result<Self::Return> {
7980                <Self::ReturnTuple<
7981                    '_,
7982                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7983                    .map(Into::into)
7984            }
7985        }
7986    };
7987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7988    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7989```solidity
7990function blocksPerEpoch() external view returns (uint64);
7991```*/
7992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7993    #[derive(Clone)]
7994    pub struct blocksPerEpochCall {}
7995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7996    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7997    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7998    #[derive(Clone)]
7999    pub struct blocksPerEpochReturn {
8000        #[allow(missing_docs)]
8001        pub _0: u64,
8002    }
8003    #[allow(
8004        non_camel_case_types,
8005        non_snake_case,
8006        clippy::pub_underscore_fields,
8007        clippy::style
8008    )]
8009    const _: () = {
8010        use alloy::sol_types as alloy_sol_types;
8011        {
8012            #[doc(hidden)]
8013            type UnderlyingSolTuple<'a> = ();
8014            #[doc(hidden)]
8015            type UnderlyingRustTuple<'a> = ();
8016            #[cfg(test)]
8017            #[allow(dead_code, unreachable_patterns)]
8018            fn _type_assertion(
8019                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8020            ) {
8021                match _t {
8022                    alloy_sol_types::private::AssertTypeEq::<
8023                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8024                    >(_) => {}
8025                }
8026            }
8027            #[automatically_derived]
8028            #[doc(hidden)]
8029            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8030                fn from(value: blocksPerEpochCall) -> Self {
8031                    ()
8032                }
8033            }
8034            #[automatically_derived]
8035            #[doc(hidden)]
8036            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8037                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8038                    Self {}
8039                }
8040            }
8041        }
8042        {
8043            #[doc(hidden)]
8044            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8045            #[doc(hidden)]
8046            type UnderlyingRustTuple<'a> = (u64,);
8047            #[cfg(test)]
8048            #[allow(dead_code, unreachable_patterns)]
8049            fn _type_assertion(
8050                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8051            ) {
8052                match _t {
8053                    alloy_sol_types::private::AssertTypeEq::<
8054                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8055                    >(_) => {}
8056                }
8057            }
8058            #[automatically_derived]
8059            #[doc(hidden)]
8060            impl ::core::convert::From<blocksPerEpochReturn>
8061            for UnderlyingRustTuple<'_> {
8062                fn from(value: blocksPerEpochReturn) -> Self {
8063                    (value._0,)
8064                }
8065            }
8066            #[automatically_derived]
8067            #[doc(hidden)]
8068            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8069            for blocksPerEpochReturn {
8070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8071                    Self { _0: tuple.0 }
8072                }
8073            }
8074        }
8075        #[automatically_derived]
8076        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8077            type Parameters<'a> = ();
8078            type Token<'a> = <Self::Parameters<
8079                'a,
8080            > as alloy_sol_types::SolType>::Token<'a>;
8081            type Return = blocksPerEpochReturn;
8082            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8083            type ReturnToken<'a> = <Self::ReturnTuple<
8084                'a,
8085            > as alloy_sol_types::SolType>::Token<'a>;
8086            const SIGNATURE: &'static str = "blocksPerEpoch()";
8087            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8088            #[inline]
8089            fn new<'a>(
8090                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8091            ) -> Self {
8092                tuple.into()
8093            }
8094            #[inline]
8095            fn tokenize(&self) -> Self::Token<'_> {
8096                ()
8097            }
8098            #[inline]
8099            fn abi_decode_returns(
8100                data: &[u8],
8101                validate: bool,
8102            ) -> alloy_sol_types::Result<Self::Return> {
8103                <Self::ReturnTuple<
8104                    '_,
8105                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8106                    .map(Into::into)
8107            }
8108        }
8109    };
8110    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8111    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8112```solidity
8113function currentBlockNumber() external view returns (uint256);
8114```*/
8115    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8116    #[derive(Clone)]
8117    pub struct currentBlockNumberCall {}
8118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8119    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8120    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8121    #[derive(Clone)]
8122    pub struct currentBlockNumberReturn {
8123        #[allow(missing_docs)]
8124        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8125    }
8126    #[allow(
8127        non_camel_case_types,
8128        non_snake_case,
8129        clippy::pub_underscore_fields,
8130        clippy::style
8131    )]
8132    const _: () = {
8133        use alloy::sol_types as alloy_sol_types;
8134        {
8135            #[doc(hidden)]
8136            type UnderlyingSolTuple<'a> = ();
8137            #[doc(hidden)]
8138            type UnderlyingRustTuple<'a> = ();
8139            #[cfg(test)]
8140            #[allow(dead_code, unreachable_patterns)]
8141            fn _type_assertion(
8142                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8143            ) {
8144                match _t {
8145                    alloy_sol_types::private::AssertTypeEq::<
8146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8147                    >(_) => {}
8148                }
8149            }
8150            #[automatically_derived]
8151            #[doc(hidden)]
8152            impl ::core::convert::From<currentBlockNumberCall>
8153            for UnderlyingRustTuple<'_> {
8154                fn from(value: currentBlockNumberCall) -> Self {
8155                    ()
8156                }
8157            }
8158            #[automatically_derived]
8159            #[doc(hidden)]
8160            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8161            for currentBlockNumberCall {
8162                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8163                    Self {}
8164                }
8165            }
8166        }
8167        {
8168            #[doc(hidden)]
8169            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8170            #[doc(hidden)]
8171            type UnderlyingRustTuple<'a> = (
8172                alloy::sol_types::private::primitives::aliases::U256,
8173            );
8174            #[cfg(test)]
8175            #[allow(dead_code, unreachable_patterns)]
8176            fn _type_assertion(
8177                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8178            ) {
8179                match _t {
8180                    alloy_sol_types::private::AssertTypeEq::<
8181                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8182                    >(_) => {}
8183                }
8184            }
8185            #[automatically_derived]
8186            #[doc(hidden)]
8187            impl ::core::convert::From<currentBlockNumberReturn>
8188            for UnderlyingRustTuple<'_> {
8189                fn from(value: currentBlockNumberReturn) -> Self {
8190                    (value._0,)
8191                }
8192            }
8193            #[automatically_derived]
8194            #[doc(hidden)]
8195            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8196            for currentBlockNumberReturn {
8197                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8198                    Self { _0: tuple.0 }
8199                }
8200            }
8201        }
8202        #[automatically_derived]
8203        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8204            type Parameters<'a> = ();
8205            type Token<'a> = <Self::Parameters<
8206                'a,
8207            > as alloy_sol_types::SolType>::Token<'a>;
8208            type Return = currentBlockNumberReturn;
8209            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8210            type ReturnToken<'a> = <Self::ReturnTuple<
8211                'a,
8212            > as alloy_sol_types::SolType>::Token<'a>;
8213            const SIGNATURE: &'static str = "currentBlockNumber()";
8214            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8215            #[inline]
8216            fn new<'a>(
8217                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8218            ) -> Self {
8219                tuple.into()
8220            }
8221            #[inline]
8222            fn tokenize(&self) -> Self::Token<'_> {
8223                ()
8224            }
8225            #[inline]
8226            fn abi_decode_returns(
8227                data: &[u8],
8228                validate: bool,
8229            ) -> alloy_sol_types::Result<Self::Return> {
8230                <Self::ReturnTuple<
8231                    '_,
8232                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8233                    .map(Into::into)
8234            }
8235        }
8236    };
8237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8238    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8239```solidity
8240function currentEpoch() external view returns (uint64);
8241```*/
8242    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8243    #[derive(Clone)]
8244    pub struct currentEpochCall {}
8245    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8246    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8247    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8248    #[derive(Clone)]
8249    pub struct currentEpochReturn {
8250        #[allow(missing_docs)]
8251        pub _0: u64,
8252    }
8253    #[allow(
8254        non_camel_case_types,
8255        non_snake_case,
8256        clippy::pub_underscore_fields,
8257        clippy::style
8258    )]
8259    const _: () = {
8260        use alloy::sol_types as alloy_sol_types;
8261        {
8262            #[doc(hidden)]
8263            type UnderlyingSolTuple<'a> = ();
8264            #[doc(hidden)]
8265            type UnderlyingRustTuple<'a> = ();
8266            #[cfg(test)]
8267            #[allow(dead_code, unreachable_patterns)]
8268            fn _type_assertion(
8269                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8270            ) {
8271                match _t {
8272                    alloy_sol_types::private::AssertTypeEq::<
8273                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8274                    >(_) => {}
8275                }
8276            }
8277            #[automatically_derived]
8278            #[doc(hidden)]
8279            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8280                fn from(value: currentEpochCall) -> Self {
8281                    ()
8282                }
8283            }
8284            #[automatically_derived]
8285            #[doc(hidden)]
8286            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8287                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8288                    Self {}
8289                }
8290            }
8291        }
8292        {
8293            #[doc(hidden)]
8294            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8295            #[doc(hidden)]
8296            type UnderlyingRustTuple<'a> = (u64,);
8297            #[cfg(test)]
8298            #[allow(dead_code, unreachable_patterns)]
8299            fn _type_assertion(
8300                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8301            ) {
8302                match _t {
8303                    alloy_sol_types::private::AssertTypeEq::<
8304                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8305                    >(_) => {}
8306                }
8307            }
8308            #[automatically_derived]
8309            #[doc(hidden)]
8310            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8311                fn from(value: currentEpochReturn) -> Self {
8312                    (value._0,)
8313                }
8314            }
8315            #[automatically_derived]
8316            #[doc(hidden)]
8317            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8318                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8319                    Self { _0: tuple.0 }
8320                }
8321            }
8322        }
8323        #[automatically_derived]
8324        impl alloy_sol_types::SolCall for currentEpochCall {
8325            type Parameters<'a> = ();
8326            type Token<'a> = <Self::Parameters<
8327                'a,
8328            > as alloy_sol_types::SolType>::Token<'a>;
8329            type Return = currentEpochReturn;
8330            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8331            type ReturnToken<'a> = <Self::ReturnTuple<
8332                'a,
8333            > as alloy_sol_types::SolType>::Token<'a>;
8334            const SIGNATURE: &'static str = "currentEpoch()";
8335            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8336            #[inline]
8337            fn new<'a>(
8338                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8339            ) -> Self {
8340                tuple.into()
8341            }
8342            #[inline]
8343            fn tokenize(&self) -> Self::Token<'_> {
8344                ()
8345            }
8346            #[inline]
8347            fn abi_decode_returns(
8348                data: &[u8],
8349                validate: bool,
8350            ) -> alloy_sol_types::Result<Self::Return> {
8351                <Self::ReturnTuple<
8352                    '_,
8353                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8354                    .map(Into::into)
8355            }
8356        }
8357    };
8358    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8359    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8360```solidity
8361function disablePermissionedProverMode() external;
8362```*/
8363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8364    #[derive(Clone)]
8365    pub struct disablePermissionedProverModeCall {}
8366    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8367    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8368    #[derive(Clone)]
8369    pub struct disablePermissionedProverModeReturn {}
8370    #[allow(
8371        non_camel_case_types,
8372        non_snake_case,
8373        clippy::pub_underscore_fields,
8374        clippy::style
8375    )]
8376    const _: () = {
8377        use alloy::sol_types as alloy_sol_types;
8378        {
8379            #[doc(hidden)]
8380            type UnderlyingSolTuple<'a> = ();
8381            #[doc(hidden)]
8382            type UnderlyingRustTuple<'a> = ();
8383            #[cfg(test)]
8384            #[allow(dead_code, unreachable_patterns)]
8385            fn _type_assertion(
8386                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8387            ) {
8388                match _t {
8389                    alloy_sol_types::private::AssertTypeEq::<
8390                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8391                    >(_) => {}
8392                }
8393            }
8394            #[automatically_derived]
8395            #[doc(hidden)]
8396            impl ::core::convert::From<disablePermissionedProverModeCall>
8397            for UnderlyingRustTuple<'_> {
8398                fn from(value: disablePermissionedProverModeCall) -> Self {
8399                    ()
8400                }
8401            }
8402            #[automatically_derived]
8403            #[doc(hidden)]
8404            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8405            for disablePermissionedProverModeCall {
8406                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8407                    Self {}
8408                }
8409            }
8410        }
8411        {
8412            #[doc(hidden)]
8413            type UnderlyingSolTuple<'a> = ();
8414            #[doc(hidden)]
8415            type UnderlyingRustTuple<'a> = ();
8416            #[cfg(test)]
8417            #[allow(dead_code, unreachable_patterns)]
8418            fn _type_assertion(
8419                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8420            ) {
8421                match _t {
8422                    alloy_sol_types::private::AssertTypeEq::<
8423                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8424                    >(_) => {}
8425                }
8426            }
8427            #[automatically_derived]
8428            #[doc(hidden)]
8429            impl ::core::convert::From<disablePermissionedProverModeReturn>
8430            for UnderlyingRustTuple<'_> {
8431                fn from(value: disablePermissionedProverModeReturn) -> Self {
8432                    ()
8433                }
8434            }
8435            #[automatically_derived]
8436            #[doc(hidden)]
8437            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8438            for disablePermissionedProverModeReturn {
8439                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8440                    Self {}
8441                }
8442            }
8443        }
8444        #[automatically_derived]
8445        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8446            type Parameters<'a> = ();
8447            type Token<'a> = <Self::Parameters<
8448                'a,
8449            > as alloy_sol_types::SolType>::Token<'a>;
8450            type Return = disablePermissionedProverModeReturn;
8451            type ReturnTuple<'a> = ();
8452            type ReturnToken<'a> = <Self::ReturnTuple<
8453                'a,
8454            > as alloy_sol_types::SolType>::Token<'a>;
8455            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8456            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8457            #[inline]
8458            fn new<'a>(
8459                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8460            ) -> Self {
8461                tuple.into()
8462            }
8463            #[inline]
8464            fn tokenize(&self) -> Self::Token<'_> {
8465                ()
8466            }
8467            #[inline]
8468            fn abi_decode_returns(
8469                data: &[u8],
8470                validate: bool,
8471            ) -> alloy_sol_types::Result<Self::Return> {
8472                <Self::ReturnTuple<
8473                    '_,
8474                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8475                    .map(Into::into)
8476            }
8477        }
8478    };
8479    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8480    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8481```solidity
8482function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8483```*/
8484    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8485    #[derive(Clone)]
8486    pub struct epochFromBlockNumberCall {
8487        #[allow(missing_docs)]
8488        pub _blockNum: u64,
8489        #[allow(missing_docs)]
8490        pub _blocksPerEpoch: u64,
8491    }
8492    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8493    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8495    #[derive(Clone)]
8496    pub struct epochFromBlockNumberReturn {
8497        #[allow(missing_docs)]
8498        pub _0: u64,
8499    }
8500    #[allow(
8501        non_camel_case_types,
8502        non_snake_case,
8503        clippy::pub_underscore_fields,
8504        clippy::style
8505    )]
8506    const _: () = {
8507        use alloy::sol_types as alloy_sol_types;
8508        {
8509            #[doc(hidden)]
8510            type UnderlyingSolTuple<'a> = (
8511                alloy::sol_types::sol_data::Uint<64>,
8512                alloy::sol_types::sol_data::Uint<64>,
8513            );
8514            #[doc(hidden)]
8515            type UnderlyingRustTuple<'a> = (u64, u64);
8516            #[cfg(test)]
8517            #[allow(dead_code, unreachable_patterns)]
8518            fn _type_assertion(
8519                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8520            ) {
8521                match _t {
8522                    alloy_sol_types::private::AssertTypeEq::<
8523                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8524                    >(_) => {}
8525                }
8526            }
8527            #[automatically_derived]
8528            #[doc(hidden)]
8529            impl ::core::convert::From<epochFromBlockNumberCall>
8530            for UnderlyingRustTuple<'_> {
8531                fn from(value: epochFromBlockNumberCall) -> Self {
8532                    (value._blockNum, value._blocksPerEpoch)
8533                }
8534            }
8535            #[automatically_derived]
8536            #[doc(hidden)]
8537            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8538            for epochFromBlockNumberCall {
8539                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8540                    Self {
8541                        _blockNum: tuple.0,
8542                        _blocksPerEpoch: tuple.1,
8543                    }
8544                }
8545            }
8546        }
8547        {
8548            #[doc(hidden)]
8549            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8550            #[doc(hidden)]
8551            type UnderlyingRustTuple<'a> = (u64,);
8552            #[cfg(test)]
8553            #[allow(dead_code, unreachable_patterns)]
8554            fn _type_assertion(
8555                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8556            ) {
8557                match _t {
8558                    alloy_sol_types::private::AssertTypeEq::<
8559                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8560                    >(_) => {}
8561                }
8562            }
8563            #[automatically_derived]
8564            #[doc(hidden)]
8565            impl ::core::convert::From<epochFromBlockNumberReturn>
8566            for UnderlyingRustTuple<'_> {
8567                fn from(value: epochFromBlockNumberReturn) -> Self {
8568                    (value._0,)
8569                }
8570            }
8571            #[automatically_derived]
8572            #[doc(hidden)]
8573            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8574            for epochFromBlockNumberReturn {
8575                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8576                    Self { _0: tuple.0 }
8577                }
8578            }
8579        }
8580        #[automatically_derived]
8581        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8582            type Parameters<'a> = (
8583                alloy::sol_types::sol_data::Uint<64>,
8584                alloy::sol_types::sol_data::Uint<64>,
8585            );
8586            type Token<'a> = <Self::Parameters<
8587                'a,
8588            > as alloy_sol_types::SolType>::Token<'a>;
8589            type Return = epochFromBlockNumberReturn;
8590            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8591            type ReturnToken<'a> = <Self::ReturnTuple<
8592                'a,
8593            > as alloy_sol_types::SolType>::Token<'a>;
8594            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
8595            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
8596            #[inline]
8597            fn new<'a>(
8598                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8599            ) -> Self {
8600                tuple.into()
8601            }
8602            #[inline]
8603            fn tokenize(&self) -> Self::Token<'_> {
8604                (
8605                    <alloy::sol_types::sol_data::Uint<
8606                        64,
8607                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
8608                    <alloy::sol_types::sol_data::Uint<
8609                        64,
8610                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
8611                )
8612            }
8613            #[inline]
8614            fn abi_decode_returns(
8615                data: &[u8],
8616                validate: bool,
8617            ) -> alloy_sol_types::Result<Self::Return> {
8618                <Self::ReturnTuple<
8619                    '_,
8620                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8621                    .map(Into::into)
8622            }
8623        }
8624    };
8625    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8626    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
8627```solidity
8628function epochStartBlock() external view returns (uint64);
8629```*/
8630    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8631    #[derive(Clone)]
8632    pub struct epochStartBlockCall {}
8633    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8634    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
8635    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8636    #[derive(Clone)]
8637    pub struct epochStartBlockReturn {
8638        #[allow(missing_docs)]
8639        pub _0: u64,
8640    }
8641    #[allow(
8642        non_camel_case_types,
8643        non_snake_case,
8644        clippy::pub_underscore_fields,
8645        clippy::style
8646    )]
8647    const _: () = {
8648        use alloy::sol_types as alloy_sol_types;
8649        {
8650            #[doc(hidden)]
8651            type UnderlyingSolTuple<'a> = ();
8652            #[doc(hidden)]
8653            type UnderlyingRustTuple<'a> = ();
8654            #[cfg(test)]
8655            #[allow(dead_code, unreachable_patterns)]
8656            fn _type_assertion(
8657                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8658            ) {
8659                match _t {
8660                    alloy_sol_types::private::AssertTypeEq::<
8661                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8662                    >(_) => {}
8663                }
8664            }
8665            #[automatically_derived]
8666            #[doc(hidden)]
8667            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
8668                fn from(value: epochStartBlockCall) -> Self {
8669                    ()
8670                }
8671            }
8672            #[automatically_derived]
8673            #[doc(hidden)]
8674            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8675                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8676                    Self {}
8677                }
8678            }
8679        }
8680        {
8681            #[doc(hidden)]
8682            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8683            #[doc(hidden)]
8684            type UnderlyingRustTuple<'a> = (u64,);
8685            #[cfg(test)]
8686            #[allow(dead_code, unreachable_patterns)]
8687            fn _type_assertion(
8688                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8689            ) {
8690                match _t {
8691                    alloy_sol_types::private::AssertTypeEq::<
8692                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8693                    >(_) => {}
8694                }
8695            }
8696            #[automatically_derived]
8697            #[doc(hidden)]
8698            impl ::core::convert::From<epochStartBlockReturn>
8699            for UnderlyingRustTuple<'_> {
8700                fn from(value: epochStartBlockReturn) -> Self {
8701                    (value._0,)
8702                }
8703            }
8704            #[automatically_derived]
8705            #[doc(hidden)]
8706            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8707            for epochStartBlockReturn {
8708                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8709                    Self { _0: tuple.0 }
8710                }
8711            }
8712        }
8713        #[automatically_derived]
8714        impl alloy_sol_types::SolCall for epochStartBlockCall {
8715            type Parameters<'a> = ();
8716            type Token<'a> = <Self::Parameters<
8717                'a,
8718            > as alloy_sol_types::SolType>::Token<'a>;
8719            type Return = epochStartBlockReturn;
8720            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8721            type ReturnToken<'a> = <Self::ReturnTuple<
8722                'a,
8723            > as alloy_sol_types::SolType>::Token<'a>;
8724            const SIGNATURE: &'static str = "epochStartBlock()";
8725            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8726            #[inline]
8727            fn new<'a>(
8728                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8729            ) -> Self {
8730                tuple.into()
8731            }
8732            #[inline]
8733            fn tokenize(&self) -> Self::Token<'_> {
8734                ()
8735            }
8736            #[inline]
8737            fn abi_decode_returns(
8738                data: &[u8],
8739                validate: bool,
8740            ) -> alloy_sol_types::Result<Self::Return> {
8741                <Self::ReturnTuple<
8742                    '_,
8743                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8744                    .map(Into::into)
8745            }
8746        }
8747    };
8748    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8749    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8750```solidity
8751function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8752```*/
8753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8754    #[derive(Clone)]
8755    pub struct finalizedStateCall {}
8756    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8757    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8758    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8759    #[derive(Clone)]
8760    pub struct finalizedStateReturn {
8761        #[allow(missing_docs)]
8762        pub viewNum: u64,
8763        #[allow(missing_docs)]
8764        pub blockHeight: u64,
8765        #[allow(missing_docs)]
8766        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8767    }
8768    #[allow(
8769        non_camel_case_types,
8770        non_snake_case,
8771        clippy::pub_underscore_fields,
8772        clippy::style
8773    )]
8774    const _: () = {
8775        use alloy::sol_types as alloy_sol_types;
8776        {
8777            #[doc(hidden)]
8778            type UnderlyingSolTuple<'a> = ();
8779            #[doc(hidden)]
8780            type UnderlyingRustTuple<'a> = ();
8781            #[cfg(test)]
8782            #[allow(dead_code, unreachable_patterns)]
8783            fn _type_assertion(
8784                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8785            ) {
8786                match _t {
8787                    alloy_sol_types::private::AssertTypeEq::<
8788                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8789                    >(_) => {}
8790                }
8791            }
8792            #[automatically_derived]
8793            #[doc(hidden)]
8794            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8795                fn from(value: finalizedStateCall) -> Self {
8796                    ()
8797                }
8798            }
8799            #[automatically_derived]
8800            #[doc(hidden)]
8801            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8802                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8803                    Self {}
8804                }
8805            }
8806        }
8807        {
8808            #[doc(hidden)]
8809            type UnderlyingSolTuple<'a> = (
8810                alloy::sol_types::sol_data::Uint<64>,
8811                alloy::sol_types::sol_data::Uint<64>,
8812                BN254::ScalarField,
8813            );
8814            #[doc(hidden)]
8815            type UnderlyingRustTuple<'a> = (
8816                u64,
8817                u64,
8818                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8819            );
8820            #[cfg(test)]
8821            #[allow(dead_code, unreachable_patterns)]
8822            fn _type_assertion(
8823                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8824            ) {
8825                match _t {
8826                    alloy_sol_types::private::AssertTypeEq::<
8827                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8828                    >(_) => {}
8829                }
8830            }
8831            #[automatically_derived]
8832            #[doc(hidden)]
8833            impl ::core::convert::From<finalizedStateReturn>
8834            for UnderlyingRustTuple<'_> {
8835                fn from(value: finalizedStateReturn) -> Self {
8836                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8837                }
8838            }
8839            #[automatically_derived]
8840            #[doc(hidden)]
8841            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8842            for finalizedStateReturn {
8843                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8844                    Self {
8845                        viewNum: tuple.0,
8846                        blockHeight: tuple.1,
8847                        blockCommRoot: tuple.2,
8848                    }
8849                }
8850            }
8851        }
8852        #[automatically_derived]
8853        impl alloy_sol_types::SolCall for finalizedStateCall {
8854            type Parameters<'a> = ();
8855            type Token<'a> = <Self::Parameters<
8856                'a,
8857            > as alloy_sol_types::SolType>::Token<'a>;
8858            type Return = finalizedStateReturn;
8859            type ReturnTuple<'a> = (
8860                alloy::sol_types::sol_data::Uint<64>,
8861                alloy::sol_types::sol_data::Uint<64>,
8862                BN254::ScalarField,
8863            );
8864            type ReturnToken<'a> = <Self::ReturnTuple<
8865                'a,
8866            > as alloy_sol_types::SolType>::Token<'a>;
8867            const SIGNATURE: &'static str = "finalizedState()";
8868            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
8869            #[inline]
8870            fn new<'a>(
8871                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8872            ) -> Self {
8873                tuple.into()
8874            }
8875            #[inline]
8876            fn tokenize(&self) -> Self::Token<'_> {
8877                ()
8878            }
8879            #[inline]
8880            fn abi_decode_returns(
8881                data: &[u8],
8882                validate: bool,
8883            ) -> alloy_sol_types::Result<Self::Return> {
8884                <Self::ReturnTuple<
8885                    '_,
8886                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8887                    .map(Into::into)
8888            }
8889        }
8890    };
8891    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8892    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
8893```solidity
8894function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
8895```*/
8896    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8897    #[derive(Clone)]
8898    pub struct genesisStakeTableStateCall {}
8899    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8900    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
8901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8902    #[derive(Clone)]
8903    pub struct genesisStakeTableStateReturn {
8904        #[allow(missing_docs)]
8905        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
8906        #[allow(missing_docs)]
8907        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8908        #[allow(missing_docs)]
8909        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8910        #[allow(missing_docs)]
8911        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8912    }
8913    #[allow(
8914        non_camel_case_types,
8915        non_snake_case,
8916        clippy::pub_underscore_fields,
8917        clippy::style
8918    )]
8919    const _: () = {
8920        use alloy::sol_types as alloy_sol_types;
8921        {
8922            #[doc(hidden)]
8923            type UnderlyingSolTuple<'a> = ();
8924            #[doc(hidden)]
8925            type UnderlyingRustTuple<'a> = ();
8926            #[cfg(test)]
8927            #[allow(dead_code, unreachable_patterns)]
8928            fn _type_assertion(
8929                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8930            ) {
8931                match _t {
8932                    alloy_sol_types::private::AssertTypeEq::<
8933                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8934                    >(_) => {}
8935                }
8936            }
8937            #[automatically_derived]
8938            #[doc(hidden)]
8939            impl ::core::convert::From<genesisStakeTableStateCall>
8940            for UnderlyingRustTuple<'_> {
8941                fn from(value: genesisStakeTableStateCall) -> Self {
8942                    ()
8943                }
8944            }
8945            #[automatically_derived]
8946            #[doc(hidden)]
8947            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8948            for genesisStakeTableStateCall {
8949                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8950                    Self {}
8951                }
8952            }
8953        }
8954        {
8955            #[doc(hidden)]
8956            type UnderlyingSolTuple<'a> = (
8957                alloy::sol_types::sol_data::Uint<256>,
8958                BN254::ScalarField,
8959                BN254::ScalarField,
8960                BN254::ScalarField,
8961            );
8962            #[doc(hidden)]
8963            type UnderlyingRustTuple<'a> = (
8964                alloy::sol_types::private::primitives::aliases::U256,
8965                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8966                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8967                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8968            );
8969            #[cfg(test)]
8970            #[allow(dead_code, unreachable_patterns)]
8971            fn _type_assertion(
8972                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8973            ) {
8974                match _t {
8975                    alloy_sol_types::private::AssertTypeEq::<
8976                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8977                    >(_) => {}
8978                }
8979            }
8980            #[automatically_derived]
8981            #[doc(hidden)]
8982            impl ::core::convert::From<genesisStakeTableStateReturn>
8983            for UnderlyingRustTuple<'_> {
8984                fn from(value: genesisStakeTableStateReturn) -> Self {
8985                    (
8986                        value.threshold,
8987                        value.blsKeyComm,
8988                        value.schnorrKeyComm,
8989                        value.amountComm,
8990                    )
8991                }
8992            }
8993            #[automatically_derived]
8994            #[doc(hidden)]
8995            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8996            for genesisStakeTableStateReturn {
8997                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8998                    Self {
8999                        threshold: tuple.0,
9000                        blsKeyComm: tuple.1,
9001                        schnorrKeyComm: tuple.2,
9002                        amountComm: tuple.3,
9003                    }
9004                }
9005            }
9006        }
9007        #[automatically_derived]
9008        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9009            type Parameters<'a> = ();
9010            type Token<'a> = <Self::Parameters<
9011                'a,
9012            > as alloy_sol_types::SolType>::Token<'a>;
9013            type Return = genesisStakeTableStateReturn;
9014            type ReturnTuple<'a> = (
9015                alloy::sol_types::sol_data::Uint<256>,
9016                BN254::ScalarField,
9017                BN254::ScalarField,
9018                BN254::ScalarField,
9019            );
9020            type ReturnToken<'a> = <Self::ReturnTuple<
9021                'a,
9022            > as alloy_sol_types::SolType>::Token<'a>;
9023            const SIGNATURE: &'static str = "genesisStakeTableState()";
9024            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9025            #[inline]
9026            fn new<'a>(
9027                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9028            ) -> Self {
9029                tuple.into()
9030            }
9031            #[inline]
9032            fn tokenize(&self) -> Self::Token<'_> {
9033                ()
9034            }
9035            #[inline]
9036            fn abi_decode_returns(
9037                data: &[u8],
9038                validate: bool,
9039            ) -> alloy_sol_types::Result<Self::Return> {
9040                <Self::ReturnTuple<
9041                    '_,
9042                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9043                    .map(Into::into)
9044            }
9045        }
9046    };
9047    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9048    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9049```solidity
9050function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9051```*/
9052    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9053    #[derive(Clone)]
9054    pub struct genesisStateCall {}
9055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9056    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9057    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9058    #[derive(Clone)]
9059    pub struct genesisStateReturn {
9060        #[allow(missing_docs)]
9061        pub viewNum: u64,
9062        #[allow(missing_docs)]
9063        pub blockHeight: u64,
9064        #[allow(missing_docs)]
9065        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9066    }
9067    #[allow(
9068        non_camel_case_types,
9069        non_snake_case,
9070        clippy::pub_underscore_fields,
9071        clippy::style
9072    )]
9073    const _: () = {
9074        use alloy::sol_types as alloy_sol_types;
9075        {
9076            #[doc(hidden)]
9077            type UnderlyingSolTuple<'a> = ();
9078            #[doc(hidden)]
9079            type UnderlyingRustTuple<'a> = ();
9080            #[cfg(test)]
9081            #[allow(dead_code, unreachable_patterns)]
9082            fn _type_assertion(
9083                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9084            ) {
9085                match _t {
9086                    alloy_sol_types::private::AssertTypeEq::<
9087                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9088                    >(_) => {}
9089                }
9090            }
9091            #[automatically_derived]
9092            #[doc(hidden)]
9093            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9094                fn from(value: genesisStateCall) -> Self {
9095                    ()
9096                }
9097            }
9098            #[automatically_derived]
9099            #[doc(hidden)]
9100            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9101                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9102                    Self {}
9103                }
9104            }
9105        }
9106        {
9107            #[doc(hidden)]
9108            type UnderlyingSolTuple<'a> = (
9109                alloy::sol_types::sol_data::Uint<64>,
9110                alloy::sol_types::sol_data::Uint<64>,
9111                BN254::ScalarField,
9112            );
9113            #[doc(hidden)]
9114            type UnderlyingRustTuple<'a> = (
9115                u64,
9116                u64,
9117                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9118            );
9119            #[cfg(test)]
9120            #[allow(dead_code, unreachable_patterns)]
9121            fn _type_assertion(
9122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9123            ) {
9124                match _t {
9125                    alloy_sol_types::private::AssertTypeEq::<
9126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9127                    >(_) => {}
9128                }
9129            }
9130            #[automatically_derived]
9131            #[doc(hidden)]
9132            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9133                fn from(value: genesisStateReturn) -> Self {
9134                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9135                }
9136            }
9137            #[automatically_derived]
9138            #[doc(hidden)]
9139            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9140                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9141                    Self {
9142                        viewNum: tuple.0,
9143                        blockHeight: tuple.1,
9144                        blockCommRoot: tuple.2,
9145                    }
9146                }
9147            }
9148        }
9149        #[automatically_derived]
9150        impl alloy_sol_types::SolCall for genesisStateCall {
9151            type Parameters<'a> = ();
9152            type Token<'a> = <Self::Parameters<
9153                'a,
9154            > as alloy_sol_types::SolType>::Token<'a>;
9155            type Return = genesisStateReturn;
9156            type ReturnTuple<'a> = (
9157                alloy::sol_types::sol_data::Uint<64>,
9158                alloy::sol_types::sol_data::Uint<64>,
9159                BN254::ScalarField,
9160            );
9161            type ReturnToken<'a> = <Self::ReturnTuple<
9162                'a,
9163            > as alloy_sol_types::SolType>::Token<'a>;
9164            const SIGNATURE: &'static str = "genesisState()";
9165            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9166            #[inline]
9167            fn new<'a>(
9168                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9169            ) -> Self {
9170                tuple.into()
9171            }
9172            #[inline]
9173            fn tokenize(&self) -> Self::Token<'_> {
9174                ()
9175            }
9176            #[inline]
9177            fn abi_decode_returns(
9178                data: &[u8],
9179                validate: bool,
9180            ) -> alloy_sol_types::Result<Self::Return> {
9181                <Self::ReturnTuple<
9182                    '_,
9183                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9184                    .map(Into::into)
9185            }
9186        }
9187    };
9188    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9189    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9190```solidity
9191function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9192```*/
9193    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9194    #[derive(Clone)]
9195    pub struct getHotShotCommitmentCall {
9196        #[allow(missing_docs)]
9197        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9198    }
9199    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9200    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9201    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9202    #[derive(Clone)]
9203    pub struct getHotShotCommitmentReturn {
9204        #[allow(missing_docs)]
9205        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9206        #[allow(missing_docs)]
9207        pub hotshotBlockHeight: u64,
9208    }
9209    #[allow(
9210        non_camel_case_types,
9211        non_snake_case,
9212        clippy::pub_underscore_fields,
9213        clippy::style
9214    )]
9215    const _: () = {
9216        use alloy::sol_types as alloy_sol_types;
9217        {
9218            #[doc(hidden)]
9219            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9220            #[doc(hidden)]
9221            type UnderlyingRustTuple<'a> = (
9222                alloy::sol_types::private::primitives::aliases::U256,
9223            );
9224            #[cfg(test)]
9225            #[allow(dead_code, unreachable_patterns)]
9226            fn _type_assertion(
9227                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9228            ) {
9229                match _t {
9230                    alloy_sol_types::private::AssertTypeEq::<
9231                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9232                    >(_) => {}
9233                }
9234            }
9235            #[automatically_derived]
9236            #[doc(hidden)]
9237            impl ::core::convert::From<getHotShotCommitmentCall>
9238            for UnderlyingRustTuple<'_> {
9239                fn from(value: getHotShotCommitmentCall) -> Self {
9240                    (value.hotShotBlockHeight,)
9241                }
9242            }
9243            #[automatically_derived]
9244            #[doc(hidden)]
9245            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9246            for getHotShotCommitmentCall {
9247                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9248                    Self {
9249                        hotShotBlockHeight: tuple.0,
9250                    }
9251                }
9252            }
9253        }
9254        {
9255            #[doc(hidden)]
9256            type UnderlyingSolTuple<'a> = (
9257                BN254::ScalarField,
9258                alloy::sol_types::sol_data::Uint<64>,
9259            );
9260            #[doc(hidden)]
9261            type UnderlyingRustTuple<'a> = (
9262                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9263                u64,
9264            );
9265            #[cfg(test)]
9266            #[allow(dead_code, unreachable_patterns)]
9267            fn _type_assertion(
9268                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9269            ) {
9270                match _t {
9271                    alloy_sol_types::private::AssertTypeEq::<
9272                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9273                    >(_) => {}
9274                }
9275            }
9276            #[automatically_derived]
9277            #[doc(hidden)]
9278            impl ::core::convert::From<getHotShotCommitmentReturn>
9279            for UnderlyingRustTuple<'_> {
9280                fn from(value: getHotShotCommitmentReturn) -> Self {
9281                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9282                }
9283            }
9284            #[automatically_derived]
9285            #[doc(hidden)]
9286            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9287            for getHotShotCommitmentReturn {
9288                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9289                    Self {
9290                        hotShotBlockCommRoot: tuple.0,
9291                        hotshotBlockHeight: tuple.1,
9292                    }
9293                }
9294            }
9295        }
9296        #[automatically_derived]
9297        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9298            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9299            type Token<'a> = <Self::Parameters<
9300                'a,
9301            > as alloy_sol_types::SolType>::Token<'a>;
9302            type Return = getHotShotCommitmentReturn;
9303            type ReturnTuple<'a> = (
9304                BN254::ScalarField,
9305                alloy::sol_types::sol_data::Uint<64>,
9306            );
9307            type ReturnToken<'a> = <Self::ReturnTuple<
9308                'a,
9309            > as alloy_sol_types::SolType>::Token<'a>;
9310            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9311            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9312            #[inline]
9313            fn new<'a>(
9314                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9315            ) -> Self {
9316                tuple.into()
9317            }
9318            #[inline]
9319            fn tokenize(&self) -> Self::Token<'_> {
9320                (
9321                    <alloy::sol_types::sol_data::Uint<
9322                        256,
9323                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9324                )
9325            }
9326            #[inline]
9327            fn abi_decode_returns(
9328                data: &[u8],
9329                validate: bool,
9330            ) -> alloy_sol_types::Result<Self::Return> {
9331                <Self::ReturnTuple<
9332                    '_,
9333                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9334                    .map(Into::into)
9335            }
9336        }
9337    };
9338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9339    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
9340```solidity
9341function getStateHistoryCount() external view returns (uint256);
9342```*/
9343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9344    #[derive(Clone)]
9345    pub struct getStateHistoryCountCall {}
9346    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9347    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
9348    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9349    #[derive(Clone)]
9350    pub struct getStateHistoryCountReturn {
9351        #[allow(missing_docs)]
9352        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9353    }
9354    #[allow(
9355        non_camel_case_types,
9356        non_snake_case,
9357        clippy::pub_underscore_fields,
9358        clippy::style
9359    )]
9360    const _: () = {
9361        use alloy::sol_types as alloy_sol_types;
9362        {
9363            #[doc(hidden)]
9364            type UnderlyingSolTuple<'a> = ();
9365            #[doc(hidden)]
9366            type UnderlyingRustTuple<'a> = ();
9367            #[cfg(test)]
9368            #[allow(dead_code, unreachable_patterns)]
9369            fn _type_assertion(
9370                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9371            ) {
9372                match _t {
9373                    alloy_sol_types::private::AssertTypeEq::<
9374                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9375                    >(_) => {}
9376                }
9377            }
9378            #[automatically_derived]
9379            #[doc(hidden)]
9380            impl ::core::convert::From<getStateHistoryCountCall>
9381            for UnderlyingRustTuple<'_> {
9382                fn from(value: getStateHistoryCountCall) -> Self {
9383                    ()
9384                }
9385            }
9386            #[automatically_derived]
9387            #[doc(hidden)]
9388            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9389            for getStateHistoryCountCall {
9390                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9391                    Self {}
9392                }
9393            }
9394        }
9395        {
9396            #[doc(hidden)]
9397            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9398            #[doc(hidden)]
9399            type UnderlyingRustTuple<'a> = (
9400                alloy::sol_types::private::primitives::aliases::U256,
9401            );
9402            #[cfg(test)]
9403            #[allow(dead_code, unreachable_patterns)]
9404            fn _type_assertion(
9405                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9406            ) {
9407                match _t {
9408                    alloy_sol_types::private::AssertTypeEq::<
9409                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9410                    >(_) => {}
9411                }
9412            }
9413            #[automatically_derived]
9414            #[doc(hidden)]
9415            impl ::core::convert::From<getStateHistoryCountReturn>
9416            for UnderlyingRustTuple<'_> {
9417                fn from(value: getStateHistoryCountReturn) -> Self {
9418                    (value._0,)
9419                }
9420            }
9421            #[automatically_derived]
9422            #[doc(hidden)]
9423            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9424            for getStateHistoryCountReturn {
9425                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9426                    Self { _0: tuple.0 }
9427                }
9428            }
9429        }
9430        #[automatically_derived]
9431        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
9432            type Parameters<'a> = ();
9433            type Token<'a> = <Self::Parameters<
9434                'a,
9435            > as alloy_sol_types::SolType>::Token<'a>;
9436            type Return = getStateHistoryCountReturn;
9437            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9438            type ReturnToken<'a> = <Self::ReturnTuple<
9439                'a,
9440            > as alloy_sol_types::SolType>::Token<'a>;
9441            const SIGNATURE: &'static str = "getStateHistoryCount()";
9442            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
9443            #[inline]
9444            fn new<'a>(
9445                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9446            ) -> Self {
9447                tuple.into()
9448            }
9449            #[inline]
9450            fn tokenize(&self) -> Self::Token<'_> {
9451                ()
9452            }
9453            #[inline]
9454            fn abi_decode_returns(
9455                data: &[u8],
9456                validate: bool,
9457            ) -> alloy_sol_types::Result<Self::Return> {
9458                <Self::ReturnTuple<
9459                    '_,
9460                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9461                    .map(Into::into)
9462            }
9463        }
9464    };
9465    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9466    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
9467```solidity
9468function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
9469```*/
9470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9471    #[derive(Clone)]
9472    pub struct getVersionCall {}
9473    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9474    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
9475    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9476    #[derive(Clone)]
9477    pub struct getVersionReturn {
9478        #[allow(missing_docs)]
9479        pub majorVersion: u8,
9480        #[allow(missing_docs)]
9481        pub minorVersion: u8,
9482        #[allow(missing_docs)]
9483        pub patchVersion: u8,
9484    }
9485    #[allow(
9486        non_camel_case_types,
9487        non_snake_case,
9488        clippy::pub_underscore_fields,
9489        clippy::style
9490    )]
9491    const _: () = {
9492        use alloy::sol_types as alloy_sol_types;
9493        {
9494            #[doc(hidden)]
9495            type UnderlyingSolTuple<'a> = ();
9496            #[doc(hidden)]
9497            type UnderlyingRustTuple<'a> = ();
9498            #[cfg(test)]
9499            #[allow(dead_code, unreachable_patterns)]
9500            fn _type_assertion(
9501                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9502            ) {
9503                match _t {
9504                    alloy_sol_types::private::AssertTypeEq::<
9505                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9506                    >(_) => {}
9507                }
9508            }
9509            #[automatically_derived]
9510            #[doc(hidden)]
9511            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9512                fn from(value: getVersionCall) -> Self {
9513                    ()
9514                }
9515            }
9516            #[automatically_derived]
9517            #[doc(hidden)]
9518            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9519                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9520                    Self {}
9521                }
9522            }
9523        }
9524        {
9525            #[doc(hidden)]
9526            type UnderlyingSolTuple<'a> = (
9527                alloy::sol_types::sol_data::Uint<8>,
9528                alloy::sol_types::sol_data::Uint<8>,
9529                alloy::sol_types::sol_data::Uint<8>,
9530            );
9531            #[doc(hidden)]
9532            type UnderlyingRustTuple<'a> = (u8, u8, u8);
9533            #[cfg(test)]
9534            #[allow(dead_code, unreachable_patterns)]
9535            fn _type_assertion(
9536                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9537            ) {
9538                match _t {
9539                    alloy_sol_types::private::AssertTypeEq::<
9540                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9541                    >(_) => {}
9542                }
9543            }
9544            #[automatically_derived]
9545            #[doc(hidden)]
9546            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
9547                fn from(value: getVersionReturn) -> Self {
9548                    (value.majorVersion, value.minorVersion, value.patchVersion)
9549                }
9550            }
9551            #[automatically_derived]
9552            #[doc(hidden)]
9553            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9554                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9555                    Self {
9556                        majorVersion: tuple.0,
9557                        minorVersion: tuple.1,
9558                        patchVersion: tuple.2,
9559                    }
9560                }
9561            }
9562        }
9563        #[automatically_derived]
9564        impl alloy_sol_types::SolCall for getVersionCall {
9565            type Parameters<'a> = ();
9566            type Token<'a> = <Self::Parameters<
9567                'a,
9568            > as alloy_sol_types::SolType>::Token<'a>;
9569            type Return = getVersionReturn;
9570            type ReturnTuple<'a> = (
9571                alloy::sol_types::sol_data::Uint<8>,
9572                alloy::sol_types::sol_data::Uint<8>,
9573                alloy::sol_types::sol_data::Uint<8>,
9574            );
9575            type ReturnToken<'a> = <Self::ReturnTuple<
9576                'a,
9577            > as alloy_sol_types::SolType>::Token<'a>;
9578            const SIGNATURE: &'static str = "getVersion()";
9579            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
9580            #[inline]
9581            fn new<'a>(
9582                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9583            ) -> Self {
9584                tuple.into()
9585            }
9586            #[inline]
9587            fn tokenize(&self) -> Self::Token<'_> {
9588                ()
9589            }
9590            #[inline]
9591            fn abi_decode_returns(
9592                data: &[u8],
9593                validate: bool,
9594            ) -> alloy_sol_types::Result<Self::Return> {
9595                <Self::ReturnTuple<
9596                    '_,
9597                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9598                    .map(Into::into)
9599            }
9600        }
9601    };
9602    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9603    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
9604```solidity
9605function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
9606```*/
9607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9608    #[derive(Clone)]
9609    pub struct initializeCall {
9610        #[allow(missing_docs)]
9611        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9612        #[allow(missing_docs)]
9613        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9614        #[allow(missing_docs)]
9615        pub _stateHistoryRetentionPeriod: u32,
9616        #[allow(missing_docs)]
9617        pub owner: alloy::sol_types::private::Address,
9618    }
9619    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
9620    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9621    #[derive(Clone)]
9622    pub struct initializeReturn {}
9623    #[allow(
9624        non_camel_case_types,
9625        non_snake_case,
9626        clippy::pub_underscore_fields,
9627        clippy::style
9628    )]
9629    const _: () = {
9630        use alloy::sol_types as alloy_sol_types;
9631        {
9632            #[doc(hidden)]
9633            type UnderlyingSolTuple<'a> = (
9634                LightClient::LightClientState,
9635                LightClient::StakeTableState,
9636                alloy::sol_types::sol_data::Uint<32>,
9637                alloy::sol_types::sol_data::Address,
9638            );
9639            #[doc(hidden)]
9640            type UnderlyingRustTuple<'a> = (
9641                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9642                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9643                u32,
9644                alloy::sol_types::private::Address,
9645            );
9646            #[cfg(test)]
9647            #[allow(dead_code, unreachable_patterns)]
9648            fn _type_assertion(
9649                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9650            ) {
9651                match _t {
9652                    alloy_sol_types::private::AssertTypeEq::<
9653                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9654                    >(_) => {}
9655                }
9656            }
9657            #[automatically_derived]
9658            #[doc(hidden)]
9659            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9660                fn from(value: initializeCall) -> Self {
9661                    (
9662                        value._genesis,
9663                        value._genesisStakeTableState,
9664                        value._stateHistoryRetentionPeriod,
9665                        value.owner,
9666                    )
9667                }
9668            }
9669            #[automatically_derived]
9670            #[doc(hidden)]
9671            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9672                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9673                    Self {
9674                        _genesis: tuple.0,
9675                        _genesisStakeTableState: tuple.1,
9676                        _stateHistoryRetentionPeriod: tuple.2,
9677                        owner: tuple.3,
9678                    }
9679                }
9680            }
9681        }
9682        {
9683            #[doc(hidden)]
9684            type UnderlyingSolTuple<'a> = ();
9685            #[doc(hidden)]
9686            type UnderlyingRustTuple<'a> = ();
9687            #[cfg(test)]
9688            #[allow(dead_code, unreachable_patterns)]
9689            fn _type_assertion(
9690                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9691            ) {
9692                match _t {
9693                    alloy_sol_types::private::AssertTypeEq::<
9694                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9695                    >(_) => {}
9696                }
9697            }
9698            #[automatically_derived]
9699            #[doc(hidden)]
9700            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9701                fn from(value: initializeReturn) -> Self {
9702                    ()
9703                }
9704            }
9705            #[automatically_derived]
9706            #[doc(hidden)]
9707            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9708                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9709                    Self {}
9710                }
9711            }
9712        }
9713        #[automatically_derived]
9714        impl alloy_sol_types::SolCall for initializeCall {
9715            type Parameters<'a> = (
9716                LightClient::LightClientState,
9717                LightClient::StakeTableState,
9718                alloy::sol_types::sol_data::Uint<32>,
9719                alloy::sol_types::sol_data::Address,
9720            );
9721            type Token<'a> = <Self::Parameters<
9722                'a,
9723            > as alloy_sol_types::SolType>::Token<'a>;
9724            type Return = initializeReturn;
9725            type ReturnTuple<'a> = ();
9726            type ReturnToken<'a> = <Self::ReturnTuple<
9727                'a,
9728            > as alloy_sol_types::SolType>::Token<'a>;
9729            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
9730            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
9731            #[inline]
9732            fn new<'a>(
9733                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9734            ) -> Self {
9735                tuple.into()
9736            }
9737            #[inline]
9738            fn tokenize(&self) -> Self::Token<'_> {
9739                (
9740                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9741                        &self._genesis,
9742                    ),
9743                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9744                        &self._genesisStakeTableState,
9745                    ),
9746                    <alloy::sol_types::sol_data::Uint<
9747                        32,
9748                    > as alloy_sol_types::SolType>::tokenize(
9749                        &self._stateHistoryRetentionPeriod,
9750                    ),
9751                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9752                        &self.owner,
9753                    ),
9754                )
9755            }
9756            #[inline]
9757            fn abi_decode_returns(
9758                data: &[u8],
9759                validate: bool,
9760            ) -> alloy_sol_types::Result<Self::Return> {
9761                <Self::ReturnTuple<
9762                    '_,
9763                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9764                    .map(Into::into)
9765            }
9766        }
9767    };
9768    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9769    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
9770```solidity
9771function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
9772```*/
9773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9774    #[derive(Clone)]
9775    pub struct initializeV2Call {
9776        #[allow(missing_docs)]
9777        pub _blocksPerEpoch: u64,
9778        #[allow(missing_docs)]
9779        pub _epochStartBlock: u64,
9780    }
9781    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
9782    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9783    #[derive(Clone)]
9784    pub struct initializeV2Return {}
9785    #[allow(
9786        non_camel_case_types,
9787        non_snake_case,
9788        clippy::pub_underscore_fields,
9789        clippy::style
9790    )]
9791    const _: () = {
9792        use alloy::sol_types as alloy_sol_types;
9793        {
9794            #[doc(hidden)]
9795            type UnderlyingSolTuple<'a> = (
9796                alloy::sol_types::sol_data::Uint<64>,
9797                alloy::sol_types::sol_data::Uint<64>,
9798            );
9799            #[doc(hidden)]
9800            type UnderlyingRustTuple<'a> = (u64, u64);
9801            #[cfg(test)]
9802            #[allow(dead_code, unreachable_patterns)]
9803            fn _type_assertion(
9804                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9805            ) {
9806                match _t {
9807                    alloy_sol_types::private::AssertTypeEq::<
9808                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9809                    >(_) => {}
9810                }
9811            }
9812            #[automatically_derived]
9813            #[doc(hidden)]
9814            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
9815                fn from(value: initializeV2Call) -> Self {
9816                    (value._blocksPerEpoch, value._epochStartBlock)
9817                }
9818            }
9819            #[automatically_derived]
9820            #[doc(hidden)]
9821            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
9822                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9823                    Self {
9824                        _blocksPerEpoch: tuple.0,
9825                        _epochStartBlock: tuple.1,
9826                    }
9827                }
9828            }
9829        }
9830        {
9831            #[doc(hidden)]
9832            type UnderlyingSolTuple<'a> = ();
9833            #[doc(hidden)]
9834            type UnderlyingRustTuple<'a> = ();
9835            #[cfg(test)]
9836            #[allow(dead_code, unreachable_patterns)]
9837            fn _type_assertion(
9838                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9839            ) {
9840                match _t {
9841                    alloy_sol_types::private::AssertTypeEq::<
9842                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9843                    >(_) => {}
9844                }
9845            }
9846            #[automatically_derived]
9847            #[doc(hidden)]
9848            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
9849                fn from(value: initializeV2Return) -> Self {
9850                    ()
9851                }
9852            }
9853            #[automatically_derived]
9854            #[doc(hidden)]
9855            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
9856                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9857                    Self {}
9858                }
9859            }
9860        }
9861        #[automatically_derived]
9862        impl alloy_sol_types::SolCall for initializeV2Call {
9863            type Parameters<'a> = (
9864                alloy::sol_types::sol_data::Uint<64>,
9865                alloy::sol_types::sol_data::Uint<64>,
9866            );
9867            type Token<'a> = <Self::Parameters<
9868                'a,
9869            > as alloy_sol_types::SolType>::Token<'a>;
9870            type Return = initializeV2Return;
9871            type ReturnTuple<'a> = ();
9872            type ReturnToken<'a> = <Self::ReturnTuple<
9873                'a,
9874            > as alloy_sol_types::SolType>::Token<'a>;
9875            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
9876            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
9877            #[inline]
9878            fn new<'a>(
9879                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9880            ) -> Self {
9881                tuple.into()
9882            }
9883            #[inline]
9884            fn tokenize(&self) -> Self::Token<'_> {
9885                (
9886                    <alloy::sol_types::sol_data::Uint<
9887                        64,
9888                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9889                    <alloy::sol_types::sol_data::Uint<
9890                        64,
9891                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
9892                )
9893            }
9894            #[inline]
9895            fn abi_decode_returns(
9896                data: &[u8],
9897                validate: bool,
9898            ) -> alloy_sol_types::Result<Self::Return> {
9899                <Self::ReturnTuple<
9900                    '_,
9901                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9902                    .map(Into::into)
9903            }
9904        }
9905    };
9906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9907    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
9908```solidity
9909function initializeV3() external;
9910```*/
9911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9912    #[derive(Clone)]
9913    pub struct initializeV3Call {}
9914    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
9915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9916    #[derive(Clone)]
9917    pub struct initializeV3Return {}
9918    #[allow(
9919        non_camel_case_types,
9920        non_snake_case,
9921        clippy::pub_underscore_fields,
9922        clippy::style
9923    )]
9924    const _: () = {
9925        use alloy::sol_types as alloy_sol_types;
9926        {
9927            #[doc(hidden)]
9928            type UnderlyingSolTuple<'a> = ();
9929            #[doc(hidden)]
9930            type UnderlyingRustTuple<'a> = ();
9931            #[cfg(test)]
9932            #[allow(dead_code, unreachable_patterns)]
9933            fn _type_assertion(
9934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9935            ) {
9936                match _t {
9937                    alloy_sol_types::private::AssertTypeEq::<
9938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9939                    >(_) => {}
9940                }
9941            }
9942            #[automatically_derived]
9943            #[doc(hidden)]
9944            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
9945                fn from(value: initializeV3Call) -> Self {
9946                    ()
9947                }
9948            }
9949            #[automatically_derived]
9950            #[doc(hidden)]
9951            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
9952                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9953                    Self {}
9954                }
9955            }
9956        }
9957        {
9958            #[doc(hidden)]
9959            type UnderlyingSolTuple<'a> = ();
9960            #[doc(hidden)]
9961            type UnderlyingRustTuple<'a> = ();
9962            #[cfg(test)]
9963            #[allow(dead_code, unreachable_patterns)]
9964            fn _type_assertion(
9965                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9966            ) {
9967                match _t {
9968                    alloy_sol_types::private::AssertTypeEq::<
9969                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9970                    >(_) => {}
9971                }
9972            }
9973            #[automatically_derived]
9974            #[doc(hidden)]
9975            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
9976                fn from(value: initializeV3Return) -> Self {
9977                    ()
9978                }
9979            }
9980            #[automatically_derived]
9981            #[doc(hidden)]
9982            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
9983                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9984                    Self {}
9985                }
9986            }
9987        }
9988        #[automatically_derived]
9989        impl alloy_sol_types::SolCall for initializeV3Call {
9990            type Parameters<'a> = ();
9991            type Token<'a> = <Self::Parameters<
9992                'a,
9993            > as alloy_sol_types::SolType>::Token<'a>;
9994            type Return = initializeV3Return;
9995            type ReturnTuple<'a> = ();
9996            type ReturnToken<'a> = <Self::ReturnTuple<
9997                'a,
9998            > as alloy_sol_types::SolType>::Token<'a>;
9999            const SIGNATURE: &'static str = "initializeV3()";
10000            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
10001            #[inline]
10002            fn new<'a>(
10003                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10004            ) -> Self {
10005                tuple.into()
10006            }
10007            #[inline]
10008            fn tokenize(&self) -> Self::Token<'_> {
10009                ()
10010            }
10011            #[inline]
10012            fn abi_decode_returns(
10013                data: &[u8],
10014                validate: bool,
10015            ) -> alloy_sol_types::Result<Self::Return> {
10016                <Self::ReturnTuple<
10017                    '_,
10018                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10019                    .map(Into::into)
10020            }
10021        }
10022    };
10023    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10024    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10025```solidity
10026function isEpochRoot(uint64 blockHeight) external view returns (bool);
10027```*/
10028    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10029    #[derive(Clone)]
10030    pub struct isEpochRootCall {
10031        #[allow(missing_docs)]
10032        pub blockHeight: u64,
10033    }
10034    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10035    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10036    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10037    #[derive(Clone)]
10038    pub struct isEpochRootReturn {
10039        #[allow(missing_docs)]
10040        pub _0: bool,
10041    }
10042    #[allow(
10043        non_camel_case_types,
10044        non_snake_case,
10045        clippy::pub_underscore_fields,
10046        clippy::style
10047    )]
10048    const _: () = {
10049        use alloy::sol_types as alloy_sol_types;
10050        {
10051            #[doc(hidden)]
10052            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10053            #[doc(hidden)]
10054            type UnderlyingRustTuple<'a> = (u64,);
10055            #[cfg(test)]
10056            #[allow(dead_code, unreachable_patterns)]
10057            fn _type_assertion(
10058                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10059            ) {
10060                match _t {
10061                    alloy_sol_types::private::AssertTypeEq::<
10062                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10063                    >(_) => {}
10064                }
10065            }
10066            #[automatically_derived]
10067            #[doc(hidden)]
10068            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10069                fn from(value: isEpochRootCall) -> Self {
10070                    (value.blockHeight,)
10071                }
10072            }
10073            #[automatically_derived]
10074            #[doc(hidden)]
10075            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10076                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10077                    Self { blockHeight: tuple.0 }
10078                }
10079            }
10080        }
10081        {
10082            #[doc(hidden)]
10083            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10084            #[doc(hidden)]
10085            type UnderlyingRustTuple<'a> = (bool,);
10086            #[cfg(test)]
10087            #[allow(dead_code, unreachable_patterns)]
10088            fn _type_assertion(
10089                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10090            ) {
10091                match _t {
10092                    alloy_sol_types::private::AssertTypeEq::<
10093                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10094                    >(_) => {}
10095                }
10096            }
10097            #[automatically_derived]
10098            #[doc(hidden)]
10099            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10100                fn from(value: isEpochRootReturn) -> Self {
10101                    (value._0,)
10102                }
10103            }
10104            #[automatically_derived]
10105            #[doc(hidden)]
10106            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10107                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10108                    Self { _0: tuple.0 }
10109                }
10110            }
10111        }
10112        #[automatically_derived]
10113        impl alloy_sol_types::SolCall for isEpochRootCall {
10114            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10115            type Token<'a> = <Self::Parameters<
10116                'a,
10117            > as alloy_sol_types::SolType>::Token<'a>;
10118            type Return = isEpochRootReturn;
10119            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10120            type ReturnToken<'a> = <Self::ReturnTuple<
10121                'a,
10122            > as alloy_sol_types::SolType>::Token<'a>;
10123            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10124            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10125            #[inline]
10126            fn new<'a>(
10127                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10128            ) -> Self {
10129                tuple.into()
10130            }
10131            #[inline]
10132            fn tokenize(&self) -> Self::Token<'_> {
10133                (
10134                    <alloy::sol_types::sol_data::Uint<
10135                        64,
10136                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10137                )
10138            }
10139            #[inline]
10140            fn abi_decode_returns(
10141                data: &[u8],
10142                validate: bool,
10143            ) -> alloy_sol_types::Result<Self::Return> {
10144                <Self::ReturnTuple<
10145                    '_,
10146                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10147                    .map(Into::into)
10148            }
10149        }
10150    };
10151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10152    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10153```solidity
10154function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10155```*/
10156    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10157    #[derive(Clone)]
10158    pub struct isGtEpochRootCall {
10159        #[allow(missing_docs)]
10160        pub blockHeight: u64,
10161    }
10162    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10163    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10164    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10165    #[derive(Clone)]
10166    pub struct isGtEpochRootReturn {
10167        #[allow(missing_docs)]
10168        pub _0: bool,
10169    }
10170    #[allow(
10171        non_camel_case_types,
10172        non_snake_case,
10173        clippy::pub_underscore_fields,
10174        clippy::style
10175    )]
10176    const _: () = {
10177        use alloy::sol_types as alloy_sol_types;
10178        {
10179            #[doc(hidden)]
10180            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10181            #[doc(hidden)]
10182            type UnderlyingRustTuple<'a> = (u64,);
10183            #[cfg(test)]
10184            #[allow(dead_code, unreachable_patterns)]
10185            fn _type_assertion(
10186                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10187            ) {
10188                match _t {
10189                    alloy_sol_types::private::AssertTypeEq::<
10190                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10191                    >(_) => {}
10192                }
10193            }
10194            #[automatically_derived]
10195            #[doc(hidden)]
10196            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10197                fn from(value: isGtEpochRootCall) -> Self {
10198                    (value.blockHeight,)
10199                }
10200            }
10201            #[automatically_derived]
10202            #[doc(hidden)]
10203            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10205                    Self { blockHeight: tuple.0 }
10206                }
10207            }
10208        }
10209        {
10210            #[doc(hidden)]
10211            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10212            #[doc(hidden)]
10213            type UnderlyingRustTuple<'a> = (bool,);
10214            #[cfg(test)]
10215            #[allow(dead_code, unreachable_patterns)]
10216            fn _type_assertion(
10217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10218            ) {
10219                match _t {
10220                    alloy_sol_types::private::AssertTypeEq::<
10221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10222                    >(_) => {}
10223                }
10224            }
10225            #[automatically_derived]
10226            #[doc(hidden)]
10227            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10228                fn from(value: isGtEpochRootReturn) -> Self {
10229                    (value._0,)
10230                }
10231            }
10232            #[automatically_derived]
10233            #[doc(hidden)]
10234            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10236                    Self { _0: tuple.0 }
10237                }
10238            }
10239        }
10240        #[automatically_derived]
10241        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10242            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10243            type Token<'a> = <Self::Parameters<
10244                'a,
10245            > as alloy_sol_types::SolType>::Token<'a>;
10246            type Return = isGtEpochRootReturn;
10247            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10248            type ReturnToken<'a> = <Self::ReturnTuple<
10249                'a,
10250            > as alloy_sol_types::SolType>::Token<'a>;
10251            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
10252            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
10253            #[inline]
10254            fn new<'a>(
10255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10256            ) -> Self {
10257                tuple.into()
10258            }
10259            #[inline]
10260            fn tokenize(&self) -> Self::Token<'_> {
10261                (
10262                    <alloy::sol_types::sol_data::Uint<
10263                        64,
10264                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10265                )
10266            }
10267            #[inline]
10268            fn abi_decode_returns(
10269                data: &[u8],
10270                validate: bool,
10271            ) -> alloy_sol_types::Result<Self::Return> {
10272                <Self::ReturnTuple<
10273                    '_,
10274                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10275                    .map(Into::into)
10276            }
10277        }
10278    };
10279    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10280    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
10281```solidity
10282function isPermissionedProverEnabled() external view returns (bool);
10283```*/
10284    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10285    #[derive(Clone)]
10286    pub struct isPermissionedProverEnabledCall {}
10287    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10288    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
10289    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10290    #[derive(Clone)]
10291    pub struct isPermissionedProverEnabledReturn {
10292        #[allow(missing_docs)]
10293        pub _0: bool,
10294    }
10295    #[allow(
10296        non_camel_case_types,
10297        non_snake_case,
10298        clippy::pub_underscore_fields,
10299        clippy::style
10300    )]
10301    const _: () = {
10302        use alloy::sol_types as alloy_sol_types;
10303        {
10304            #[doc(hidden)]
10305            type UnderlyingSolTuple<'a> = ();
10306            #[doc(hidden)]
10307            type UnderlyingRustTuple<'a> = ();
10308            #[cfg(test)]
10309            #[allow(dead_code, unreachable_patterns)]
10310            fn _type_assertion(
10311                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10312            ) {
10313                match _t {
10314                    alloy_sol_types::private::AssertTypeEq::<
10315                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10316                    >(_) => {}
10317                }
10318            }
10319            #[automatically_derived]
10320            #[doc(hidden)]
10321            impl ::core::convert::From<isPermissionedProverEnabledCall>
10322            for UnderlyingRustTuple<'_> {
10323                fn from(value: isPermissionedProverEnabledCall) -> Self {
10324                    ()
10325                }
10326            }
10327            #[automatically_derived]
10328            #[doc(hidden)]
10329            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10330            for isPermissionedProverEnabledCall {
10331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10332                    Self {}
10333                }
10334            }
10335        }
10336        {
10337            #[doc(hidden)]
10338            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10339            #[doc(hidden)]
10340            type UnderlyingRustTuple<'a> = (bool,);
10341            #[cfg(test)]
10342            #[allow(dead_code, unreachable_patterns)]
10343            fn _type_assertion(
10344                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10345            ) {
10346                match _t {
10347                    alloy_sol_types::private::AssertTypeEq::<
10348                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10349                    >(_) => {}
10350                }
10351            }
10352            #[automatically_derived]
10353            #[doc(hidden)]
10354            impl ::core::convert::From<isPermissionedProverEnabledReturn>
10355            for UnderlyingRustTuple<'_> {
10356                fn from(value: isPermissionedProverEnabledReturn) -> Self {
10357                    (value._0,)
10358                }
10359            }
10360            #[automatically_derived]
10361            #[doc(hidden)]
10362            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10363            for isPermissionedProverEnabledReturn {
10364                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10365                    Self { _0: tuple.0 }
10366                }
10367            }
10368        }
10369        #[automatically_derived]
10370        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
10371            type Parameters<'a> = ();
10372            type Token<'a> = <Self::Parameters<
10373                'a,
10374            > as alloy_sol_types::SolType>::Token<'a>;
10375            type Return = isPermissionedProverEnabledReturn;
10376            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10377            type ReturnToken<'a> = <Self::ReturnTuple<
10378                'a,
10379            > as alloy_sol_types::SolType>::Token<'a>;
10380            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
10381            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
10382            #[inline]
10383            fn new<'a>(
10384                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10385            ) -> Self {
10386                tuple.into()
10387            }
10388            #[inline]
10389            fn tokenize(&self) -> Self::Token<'_> {
10390                ()
10391            }
10392            #[inline]
10393            fn abi_decode_returns(
10394                data: &[u8],
10395                validate: bool,
10396            ) -> alloy_sol_types::Result<Self::Return> {
10397                <Self::ReturnTuple<
10398                    '_,
10399                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10400                    .map(Into::into)
10401            }
10402        }
10403    };
10404    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10405    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
10406```solidity
10407function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
10408```*/
10409    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10410    #[derive(Clone)]
10411    pub struct lagOverEscapeHatchThresholdCall {
10412        #[allow(missing_docs)]
10413        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10414        #[allow(missing_docs)]
10415        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
10416    }
10417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10418    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
10419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10420    #[derive(Clone)]
10421    pub struct lagOverEscapeHatchThresholdReturn {
10422        #[allow(missing_docs)]
10423        pub _0: bool,
10424    }
10425    #[allow(
10426        non_camel_case_types,
10427        non_snake_case,
10428        clippy::pub_underscore_fields,
10429        clippy::style
10430    )]
10431    const _: () = {
10432        use alloy::sol_types as alloy_sol_types;
10433        {
10434            #[doc(hidden)]
10435            type UnderlyingSolTuple<'a> = (
10436                alloy::sol_types::sol_data::Uint<256>,
10437                alloy::sol_types::sol_data::Uint<256>,
10438            );
10439            #[doc(hidden)]
10440            type UnderlyingRustTuple<'a> = (
10441                alloy::sol_types::private::primitives::aliases::U256,
10442                alloy::sol_types::private::primitives::aliases::U256,
10443            );
10444            #[cfg(test)]
10445            #[allow(dead_code, unreachable_patterns)]
10446            fn _type_assertion(
10447                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10448            ) {
10449                match _t {
10450                    alloy_sol_types::private::AssertTypeEq::<
10451                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10452                    >(_) => {}
10453                }
10454            }
10455            #[automatically_derived]
10456            #[doc(hidden)]
10457            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
10458            for UnderlyingRustTuple<'_> {
10459                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
10460                    (value.blockNumber, value.blockThreshold)
10461                }
10462            }
10463            #[automatically_derived]
10464            #[doc(hidden)]
10465            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10466            for lagOverEscapeHatchThresholdCall {
10467                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10468                    Self {
10469                        blockNumber: tuple.0,
10470                        blockThreshold: tuple.1,
10471                    }
10472                }
10473            }
10474        }
10475        {
10476            #[doc(hidden)]
10477            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10478            #[doc(hidden)]
10479            type UnderlyingRustTuple<'a> = (bool,);
10480            #[cfg(test)]
10481            #[allow(dead_code, unreachable_patterns)]
10482            fn _type_assertion(
10483                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10484            ) {
10485                match _t {
10486                    alloy_sol_types::private::AssertTypeEq::<
10487                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10488                    >(_) => {}
10489                }
10490            }
10491            #[automatically_derived]
10492            #[doc(hidden)]
10493            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
10494            for UnderlyingRustTuple<'_> {
10495                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
10496                    (value._0,)
10497                }
10498            }
10499            #[automatically_derived]
10500            #[doc(hidden)]
10501            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10502            for lagOverEscapeHatchThresholdReturn {
10503                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10504                    Self { _0: tuple.0 }
10505                }
10506            }
10507        }
10508        #[automatically_derived]
10509        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
10510            type Parameters<'a> = (
10511                alloy::sol_types::sol_data::Uint<256>,
10512                alloy::sol_types::sol_data::Uint<256>,
10513            );
10514            type Token<'a> = <Self::Parameters<
10515                'a,
10516            > as alloy_sol_types::SolType>::Token<'a>;
10517            type Return = lagOverEscapeHatchThresholdReturn;
10518            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10519            type ReturnToken<'a> = <Self::ReturnTuple<
10520                'a,
10521            > as alloy_sol_types::SolType>::Token<'a>;
10522            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
10523            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
10524            #[inline]
10525            fn new<'a>(
10526                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10527            ) -> Self {
10528                tuple.into()
10529            }
10530            #[inline]
10531            fn tokenize(&self) -> Self::Token<'_> {
10532                (
10533                    <alloy::sol_types::sol_data::Uint<
10534                        256,
10535                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
10536                    <alloy::sol_types::sol_data::Uint<
10537                        256,
10538                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
10539                )
10540            }
10541            #[inline]
10542            fn abi_decode_returns(
10543                data: &[u8],
10544                validate: bool,
10545            ) -> alloy_sol_types::Result<Self::Return> {
10546                <Self::ReturnTuple<
10547                    '_,
10548                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10549                    .map(Into::into)
10550            }
10551        }
10552    };
10553    #[derive()]
10554    /**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`.
10555```solidity
10556function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
10557```*/
10558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10559    #[derive(Clone)]
10560    pub struct newFinalizedState_0Call {
10561        #[allow(missing_docs)]
10562        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10563        #[allow(missing_docs)]
10564        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10565    }
10566    ///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.
10567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10568    #[derive(Clone)]
10569    pub struct newFinalizedState_0Return {}
10570    #[allow(
10571        non_camel_case_types,
10572        non_snake_case,
10573        clippy::pub_underscore_fields,
10574        clippy::style
10575    )]
10576    const _: () = {
10577        use alloy::sol_types as alloy_sol_types;
10578        {
10579            #[doc(hidden)]
10580            type UnderlyingSolTuple<'a> = (
10581                LightClient::LightClientState,
10582                IPlonkVerifier::PlonkProof,
10583            );
10584            #[doc(hidden)]
10585            type UnderlyingRustTuple<'a> = (
10586                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10587                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10588            );
10589            #[cfg(test)]
10590            #[allow(dead_code, unreachable_patterns)]
10591            fn _type_assertion(
10592                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10593            ) {
10594                match _t {
10595                    alloy_sol_types::private::AssertTypeEq::<
10596                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10597                    >(_) => {}
10598                }
10599            }
10600            #[automatically_derived]
10601            #[doc(hidden)]
10602            impl ::core::convert::From<newFinalizedState_0Call>
10603            for UnderlyingRustTuple<'_> {
10604                fn from(value: newFinalizedState_0Call) -> Self {
10605                    (value._0, value._1)
10606                }
10607            }
10608            #[automatically_derived]
10609            #[doc(hidden)]
10610            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10611            for newFinalizedState_0Call {
10612                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10613                    Self { _0: tuple.0, _1: tuple.1 }
10614                }
10615            }
10616        }
10617        {
10618            #[doc(hidden)]
10619            type UnderlyingSolTuple<'a> = ();
10620            #[doc(hidden)]
10621            type UnderlyingRustTuple<'a> = ();
10622            #[cfg(test)]
10623            #[allow(dead_code, unreachable_patterns)]
10624            fn _type_assertion(
10625                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10626            ) {
10627                match _t {
10628                    alloy_sol_types::private::AssertTypeEq::<
10629                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10630                    >(_) => {}
10631                }
10632            }
10633            #[automatically_derived]
10634            #[doc(hidden)]
10635            impl ::core::convert::From<newFinalizedState_0Return>
10636            for UnderlyingRustTuple<'_> {
10637                fn from(value: newFinalizedState_0Return) -> Self {
10638                    ()
10639                }
10640            }
10641            #[automatically_derived]
10642            #[doc(hidden)]
10643            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10644            for newFinalizedState_0Return {
10645                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10646                    Self {}
10647                }
10648            }
10649        }
10650        #[automatically_derived]
10651        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
10652            type Parameters<'a> = (
10653                LightClient::LightClientState,
10654                IPlonkVerifier::PlonkProof,
10655            );
10656            type Token<'a> = <Self::Parameters<
10657                'a,
10658            > as alloy_sol_types::SolType>::Token<'a>;
10659            type Return = newFinalizedState_0Return;
10660            type ReturnTuple<'a> = ();
10661            type ReturnToken<'a> = <Self::ReturnTuple<
10662                'a,
10663            > as alloy_sol_types::SolType>::Token<'a>;
10664            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))";
10665            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
10666            #[inline]
10667            fn new<'a>(
10668                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10669            ) -> Self {
10670                tuple.into()
10671            }
10672            #[inline]
10673            fn tokenize(&self) -> Self::Token<'_> {
10674                (
10675                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10676                        &self._0,
10677                    ),
10678                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10679                        &self._1,
10680                    ),
10681                )
10682            }
10683            #[inline]
10684            fn abi_decode_returns(
10685                data: &[u8],
10686                validate: bool,
10687            ) -> alloy_sol_types::Result<Self::Return> {
10688                <Self::ReturnTuple<
10689                    '_,
10690                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10691                    .map(Into::into)
10692            }
10693        }
10694    };
10695    #[derive()]
10696    /**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`.
10697```solidity
10698function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
10699```*/
10700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10701    #[derive(Clone)]
10702    pub struct newFinalizedState_1Call {
10703        #[allow(missing_docs)]
10704        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10705        #[allow(missing_docs)]
10706        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10707        #[allow(missing_docs)]
10708        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10709    }
10710    ///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.
10711    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10712    #[derive(Clone)]
10713    pub struct newFinalizedState_1Return {}
10714    #[allow(
10715        non_camel_case_types,
10716        non_snake_case,
10717        clippy::pub_underscore_fields,
10718        clippy::style
10719    )]
10720    const _: () = {
10721        use alloy::sol_types as alloy_sol_types;
10722        {
10723            #[doc(hidden)]
10724            type UnderlyingSolTuple<'a> = (
10725                LightClient::LightClientState,
10726                LightClient::StakeTableState,
10727                IPlonkVerifier::PlonkProof,
10728            );
10729            #[doc(hidden)]
10730            type UnderlyingRustTuple<'a> = (
10731                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10732                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10733                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10734            );
10735            #[cfg(test)]
10736            #[allow(dead_code, unreachable_patterns)]
10737            fn _type_assertion(
10738                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10739            ) {
10740                match _t {
10741                    alloy_sol_types::private::AssertTypeEq::<
10742                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10743                    >(_) => {}
10744                }
10745            }
10746            #[automatically_derived]
10747            #[doc(hidden)]
10748            impl ::core::convert::From<newFinalizedState_1Call>
10749            for UnderlyingRustTuple<'_> {
10750                fn from(value: newFinalizedState_1Call) -> Self {
10751                    (value._0, value._1, value._2)
10752                }
10753            }
10754            #[automatically_derived]
10755            #[doc(hidden)]
10756            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10757            for newFinalizedState_1Call {
10758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10759                    Self {
10760                        _0: tuple.0,
10761                        _1: tuple.1,
10762                        _2: tuple.2,
10763                    }
10764                }
10765            }
10766        }
10767        {
10768            #[doc(hidden)]
10769            type UnderlyingSolTuple<'a> = ();
10770            #[doc(hidden)]
10771            type UnderlyingRustTuple<'a> = ();
10772            #[cfg(test)]
10773            #[allow(dead_code, unreachable_patterns)]
10774            fn _type_assertion(
10775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10776            ) {
10777                match _t {
10778                    alloy_sol_types::private::AssertTypeEq::<
10779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10780                    >(_) => {}
10781                }
10782            }
10783            #[automatically_derived]
10784            #[doc(hidden)]
10785            impl ::core::convert::From<newFinalizedState_1Return>
10786            for UnderlyingRustTuple<'_> {
10787                fn from(value: newFinalizedState_1Return) -> Self {
10788                    ()
10789                }
10790            }
10791            #[automatically_derived]
10792            #[doc(hidden)]
10793            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10794            for newFinalizedState_1Return {
10795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10796                    Self {}
10797                }
10798            }
10799        }
10800        #[automatically_derived]
10801        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
10802            type Parameters<'a> = (
10803                LightClient::LightClientState,
10804                LightClient::StakeTableState,
10805                IPlonkVerifier::PlonkProof,
10806            );
10807            type Token<'a> = <Self::Parameters<
10808                'a,
10809            > as alloy_sol_types::SolType>::Token<'a>;
10810            type Return = newFinalizedState_1Return;
10811            type ReturnTuple<'a> = ();
10812            type ReturnToken<'a> = <Self::ReturnTuple<
10813                'a,
10814            > as alloy_sol_types::SolType>::Token<'a>;
10815            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))";
10816            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
10817            #[inline]
10818            fn new<'a>(
10819                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10820            ) -> Self {
10821                tuple.into()
10822            }
10823            #[inline]
10824            fn tokenize(&self) -> Self::Token<'_> {
10825                (
10826                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10827                        &self._0,
10828                    ),
10829                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10830                        &self._1,
10831                    ),
10832                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10833                        &self._2,
10834                    ),
10835                )
10836            }
10837            #[inline]
10838            fn abi_decode_returns(
10839                data: &[u8],
10840                validate: bool,
10841            ) -> alloy_sol_types::Result<Self::Return> {
10842                <Self::ReturnTuple<
10843                    '_,
10844                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10845                    .map(Into::into)
10846            }
10847        }
10848    };
10849    #[derive()]
10850    /**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`.
10851```solidity
10852function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
10853```*/
10854    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10855    #[derive(Clone)]
10856    pub struct newFinalizedState_2Call {
10857        #[allow(missing_docs)]
10858        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10859        #[allow(missing_docs)]
10860        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10861        #[allow(missing_docs)]
10862        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
10863        #[allow(missing_docs)]
10864        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10865    }
10866    ///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.
10867    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10868    #[derive(Clone)]
10869    pub struct newFinalizedState_2Return {}
10870    #[allow(
10871        non_camel_case_types,
10872        non_snake_case,
10873        clippy::pub_underscore_fields,
10874        clippy::style
10875    )]
10876    const _: () = {
10877        use alloy::sol_types as alloy_sol_types;
10878        {
10879            #[doc(hidden)]
10880            type UnderlyingSolTuple<'a> = (
10881                LightClient::LightClientState,
10882                LightClient::StakeTableState,
10883                alloy::sol_types::sol_data::Uint<256>,
10884                IPlonkVerifier::PlonkProof,
10885            );
10886            #[doc(hidden)]
10887            type UnderlyingRustTuple<'a> = (
10888                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10889                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10890                alloy::sol_types::private::primitives::aliases::U256,
10891                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10892            );
10893            #[cfg(test)]
10894            #[allow(dead_code, unreachable_patterns)]
10895            fn _type_assertion(
10896                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10897            ) {
10898                match _t {
10899                    alloy_sol_types::private::AssertTypeEq::<
10900                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10901                    >(_) => {}
10902                }
10903            }
10904            #[automatically_derived]
10905            #[doc(hidden)]
10906            impl ::core::convert::From<newFinalizedState_2Call>
10907            for UnderlyingRustTuple<'_> {
10908                fn from(value: newFinalizedState_2Call) -> Self {
10909                    (
10910                        value.newState,
10911                        value.nextStakeTable,
10912                        value.newAuthRoot,
10913                        value.proof,
10914                    )
10915                }
10916            }
10917            #[automatically_derived]
10918            #[doc(hidden)]
10919            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10920            for newFinalizedState_2Call {
10921                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10922                    Self {
10923                        newState: tuple.0,
10924                        nextStakeTable: tuple.1,
10925                        newAuthRoot: tuple.2,
10926                        proof: tuple.3,
10927                    }
10928                }
10929            }
10930        }
10931        {
10932            #[doc(hidden)]
10933            type UnderlyingSolTuple<'a> = ();
10934            #[doc(hidden)]
10935            type UnderlyingRustTuple<'a> = ();
10936            #[cfg(test)]
10937            #[allow(dead_code, unreachable_patterns)]
10938            fn _type_assertion(
10939                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10940            ) {
10941                match _t {
10942                    alloy_sol_types::private::AssertTypeEq::<
10943                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10944                    >(_) => {}
10945                }
10946            }
10947            #[automatically_derived]
10948            #[doc(hidden)]
10949            impl ::core::convert::From<newFinalizedState_2Return>
10950            for UnderlyingRustTuple<'_> {
10951                fn from(value: newFinalizedState_2Return) -> Self {
10952                    ()
10953                }
10954            }
10955            #[automatically_derived]
10956            #[doc(hidden)]
10957            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10958            for newFinalizedState_2Return {
10959                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10960                    Self {}
10961                }
10962            }
10963        }
10964        #[automatically_derived]
10965        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
10966            type Parameters<'a> = (
10967                LightClient::LightClientState,
10968                LightClient::StakeTableState,
10969                alloy::sol_types::sol_data::Uint<256>,
10970                IPlonkVerifier::PlonkProof,
10971            );
10972            type Token<'a> = <Self::Parameters<
10973                'a,
10974            > as alloy_sol_types::SolType>::Token<'a>;
10975            type Return = newFinalizedState_2Return;
10976            type ReturnTuple<'a> = ();
10977            type ReturnToken<'a> = <Self::ReturnTuple<
10978                'a,
10979            > as alloy_sol_types::SolType>::Token<'a>;
10980            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))";
10981            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
10982            #[inline]
10983            fn new<'a>(
10984                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10985            ) -> Self {
10986                tuple.into()
10987            }
10988            #[inline]
10989            fn tokenize(&self) -> Self::Token<'_> {
10990                (
10991                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10992                        &self.newState,
10993                    ),
10994                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10995                        &self.nextStakeTable,
10996                    ),
10997                    <alloy::sol_types::sol_data::Uint<
10998                        256,
10999                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
11000                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11001                        &self.proof,
11002                    ),
11003                )
11004            }
11005            #[inline]
11006            fn abi_decode_returns(
11007                data: &[u8],
11008                validate: bool,
11009            ) -> alloy_sol_types::Result<Self::Return> {
11010                <Self::ReturnTuple<
11011                    '_,
11012                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11013                    .map(Into::into)
11014            }
11015        }
11016    };
11017    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11018    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11019```solidity
11020function owner() external view returns (address);
11021```*/
11022    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11023    #[derive(Clone)]
11024    pub struct ownerCall {}
11025    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11026    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11027    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11028    #[derive(Clone)]
11029    pub struct ownerReturn {
11030        #[allow(missing_docs)]
11031        pub _0: alloy::sol_types::private::Address,
11032    }
11033    #[allow(
11034        non_camel_case_types,
11035        non_snake_case,
11036        clippy::pub_underscore_fields,
11037        clippy::style
11038    )]
11039    const _: () = {
11040        use alloy::sol_types as alloy_sol_types;
11041        {
11042            #[doc(hidden)]
11043            type UnderlyingSolTuple<'a> = ();
11044            #[doc(hidden)]
11045            type UnderlyingRustTuple<'a> = ();
11046            #[cfg(test)]
11047            #[allow(dead_code, unreachable_patterns)]
11048            fn _type_assertion(
11049                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11050            ) {
11051                match _t {
11052                    alloy_sol_types::private::AssertTypeEq::<
11053                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11054                    >(_) => {}
11055                }
11056            }
11057            #[automatically_derived]
11058            #[doc(hidden)]
11059            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11060                fn from(value: ownerCall) -> Self {
11061                    ()
11062                }
11063            }
11064            #[automatically_derived]
11065            #[doc(hidden)]
11066            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11067                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11068                    Self {}
11069                }
11070            }
11071        }
11072        {
11073            #[doc(hidden)]
11074            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11075            #[doc(hidden)]
11076            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11077            #[cfg(test)]
11078            #[allow(dead_code, unreachable_patterns)]
11079            fn _type_assertion(
11080                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11081            ) {
11082                match _t {
11083                    alloy_sol_types::private::AssertTypeEq::<
11084                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11085                    >(_) => {}
11086                }
11087            }
11088            #[automatically_derived]
11089            #[doc(hidden)]
11090            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11091                fn from(value: ownerReturn) -> Self {
11092                    (value._0,)
11093                }
11094            }
11095            #[automatically_derived]
11096            #[doc(hidden)]
11097            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11098                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11099                    Self { _0: tuple.0 }
11100                }
11101            }
11102        }
11103        #[automatically_derived]
11104        impl alloy_sol_types::SolCall for ownerCall {
11105            type Parameters<'a> = ();
11106            type Token<'a> = <Self::Parameters<
11107                'a,
11108            > as alloy_sol_types::SolType>::Token<'a>;
11109            type Return = ownerReturn;
11110            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11111            type ReturnToken<'a> = <Self::ReturnTuple<
11112                'a,
11113            > as alloy_sol_types::SolType>::Token<'a>;
11114            const SIGNATURE: &'static str = "owner()";
11115            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11116            #[inline]
11117            fn new<'a>(
11118                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11119            ) -> Self {
11120                tuple.into()
11121            }
11122            #[inline]
11123            fn tokenize(&self) -> Self::Token<'_> {
11124                ()
11125            }
11126            #[inline]
11127            fn abi_decode_returns(
11128                data: &[u8],
11129                validate: bool,
11130            ) -> alloy_sol_types::Result<Self::Return> {
11131                <Self::ReturnTuple<
11132                    '_,
11133                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11134                    .map(Into::into)
11135            }
11136        }
11137    };
11138    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11139    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11140```solidity
11141function permissionedProver() external view returns (address);
11142```*/
11143    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11144    #[derive(Clone)]
11145    pub struct permissionedProverCall {}
11146    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11147    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11149    #[derive(Clone)]
11150    pub struct permissionedProverReturn {
11151        #[allow(missing_docs)]
11152        pub _0: alloy::sol_types::private::Address,
11153    }
11154    #[allow(
11155        non_camel_case_types,
11156        non_snake_case,
11157        clippy::pub_underscore_fields,
11158        clippy::style
11159    )]
11160    const _: () = {
11161        use alloy::sol_types as alloy_sol_types;
11162        {
11163            #[doc(hidden)]
11164            type UnderlyingSolTuple<'a> = ();
11165            #[doc(hidden)]
11166            type UnderlyingRustTuple<'a> = ();
11167            #[cfg(test)]
11168            #[allow(dead_code, unreachable_patterns)]
11169            fn _type_assertion(
11170                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11171            ) {
11172                match _t {
11173                    alloy_sol_types::private::AssertTypeEq::<
11174                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11175                    >(_) => {}
11176                }
11177            }
11178            #[automatically_derived]
11179            #[doc(hidden)]
11180            impl ::core::convert::From<permissionedProverCall>
11181            for UnderlyingRustTuple<'_> {
11182                fn from(value: permissionedProverCall) -> Self {
11183                    ()
11184                }
11185            }
11186            #[automatically_derived]
11187            #[doc(hidden)]
11188            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11189            for permissionedProverCall {
11190                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11191                    Self {}
11192                }
11193            }
11194        }
11195        {
11196            #[doc(hidden)]
11197            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11198            #[doc(hidden)]
11199            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11200            #[cfg(test)]
11201            #[allow(dead_code, unreachable_patterns)]
11202            fn _type_assertion(
11203                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11204            ) {
11205                match _t {
11206                    alloy_sol_types::private::AssertTypeEq::<
11207                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11208                    >(_) => {}
11209                }
11210            }
11211            #[automatically_derived]
11212            #[doc(hidden)]
11213            impl ::core::convert::From<permissionedProverReturn>
11214            for UnderlyingRustTuple<'_> {
11215                fn from(value: permissionedProverReturn) -> Self {
11216                    (value._0,)
11217                }
11218            }
11219            #[automatically_derived]
11220            #[doc(hidden)]
11221            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11222            for permissionedProverReturn {
11223                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11224                    Self { _0: tuple.0 }
11225                }
11226            }
11227        }
11228        #[automatically_derived]
11229        impl alloy_sol_types::SolCall for permissionedProverCall {
11230            type Parameters<'a> = ();
11231            type Token<'a> = <Self::Parameters<
11232                'a,
11233            > as alloy_sol_types::SolType>::Token<'a>;
11234            type Return = permissionedProverReturn;
11235            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11236            type ReturnToken<'a> = <Self::ReturnTuple<
11237                'a,
11238            > as alloy_sol_types::SolType>::Token<'a>;
11239            const SIGNATURE: &'static str = "permissionedProver()";
11240            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11241            #[inline]
11242            fn new<'a>(
11243                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11244            ) -> Self {
11245                tuple.into()
11246            }
11247            #[inline]
11248            fn tokenize(&self) -> Self::Token<'_> {
11249                ()
11250            }
11251            #[inline]
11252            fn abi_decode_returns(
11253                data: &[u8],
11254                validate: bool,
11255            ) -> alloy_sol_types::Result<Self::Return> {
11256                <Self::ReturnTuple<
11257                    '_,
11258                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11259                    .map(Into::into)
11260            }
11261        }
11262    };
11263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11264    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11265```solidity
11266function proxiableUUID() external view returns (bytes32);
11267```*/
11268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11269    #[derive(Clone)]
11270    pub struct proxiableUUIDCall {}
11271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11272    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11273    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11274    #[derive(Clone)]
11275    pub struct proxiableUUIDReturn {
11276        #[allow(missing_docs)]
11277        pub _0: alloy::sol_types::private::FixedBytes<32>,
11278    }
11279    #[allow(
11280        non_camel_case_types,
11281        non_snake_case,
11282        clippy::pub_underscore_fields,
11283        clippy::style
11284    )]
11285    const _: () = {
11286        use alloy::sol_types as alloy_sol_types;
11287        {
11288            #[doc(hidden)]
11289            type UnderlyingSolTuple<'a> = ();
11290            #[doc(hidden)]
11291            type UnderlyingRustTuple<'a> = ();
11292            #[cfg(test)]
11293            #[allow(dead_code, unreachable_patterns)]
11294            fn _type_assertion(
11295                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11296            ) {
11297                match _t {
11298                    alloy_sol_types::private::AssertTypeEq::<
11299                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11300                    >(_) => {}
11301                }
11302            }
11303            #[automatically_derived]
11304            #[doc(hidden)]
11305            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
11306                fn from(value: proxiableUUIDCall) -> Self {
11307                    ()
11308                }
11309            }
11310            #[automatically_derived]
11311            #[doc(hidden)]
11312            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
11313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11314                    Self {}
11315                }
11316            }
11317        }
11318        {
11319            #[doc(hidden)]
11320            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11321            #[doc(hidden)]
11322            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11323            #[cfg(test)]
11324            #[allow(dead_code, unreachable_patterns)]
11325            fn _type_assertion(
11326                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11327            ) {
11328                match _t {
11329                    alloy_sol_types::private::AssertTypeEq::<
11330                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11331                    >(_) => {}
11332                }
11333            }
11334            #[automatically_derived]
11335            #[doc(hidden)]
11336            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
11337                fn from(value: proxiableUUIDReturn) -> Self {
11338                    (value._0,)
11339                }
11340            }
11341            #[automatically_derived]
11342            #[doc(hidden)]
11343            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
11344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11345                    Self { _0: tuple.0 }
11346                }
11347            }
11348        }
11349        #[automatically_derived]
11350        impl alloy_sol_types::SolCall for proxiableUUIDCall {
11351            type Parameters<'a> = ();
11352            type Token<'a> = <Self::Parameters<
11353                'a,
11354            > as alloy_sol_types::SolType>::Token<'a>;
11355            type Return = proxiableUUIDReturn;
11356            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11357            type ReturnToken<'a> = <Self::ReturnTuple<
11358                'a,
11359            > as alloy_sol_types::SolType>::Token<'a>;
11360            const SIGNATURE: &'static str = "proxiableUUID()";
11361            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
11362            #[inline]
11363            fn new<'a>(
11364                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11365            ) -> Self {
11366                tuple.into()
11367            }
11368            #[inline]
11369            fn tokenize(&self) -> Self::Token<'_> {
11370                ()
11371            }
11372            #[inline]
11373            fn abi_decode_returns(
11374                data: &[u8],
11375                validate: bool,
11376            ) -> alloy_sol_types::Result<Self::Return> {
11377                <Self::ReturnTuple<
11378                    '_,
11379                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11380                    .map(Into::into)
11381            }
11382        }
11383    };
11384    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11385    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
11386```solidity
11387function renounceOwnership() external;
11388```*/
11389    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11390    #[derive(Clone)]
11391    pub struct renounceOwnershipCall {}
11392    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
11393    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11394    #[derive(Clone)]
11395    pub struct renounceOwnershipReturn {}
11396    #[allow(
11397        non_camel_case_types,
11398        non_snake_case,
11399        clippy::pub_underscore_fields,
11400        clippy::style
11401    )]
11402    const _: () = {
11403        use alloy::sol_types as alloy_sol_types;
11404        {
11405            #[doc(hidden)]
11406            type UnderlyingSolTuple<'a> = ();
11407            #[doc(hidden)]
11408            type UnderlyingRustTuple<'a> = ();
11409            #[cfg(test)]
11410            #[allow(dead_code, unreachable_patterns)]
11411            fn _type_assertion(
11412                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11413            ) {
11414                match _t {
11415                    alloy_sol_types::private::AssertTypeEq::<
11416                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11417                    >(_) => {}
11418                }
11419            }
11420            #[automatically_derived]
11421            #[doc(hidden)]
11422            impl ::core::convert::From<renounceOwnershipCall>
11423            for UnderlyingRustTuple<'_> {
11424                fn from(value: renounceOwnershipCall) -> Self {
11425                    ()
11426                }
11427            }
11428            #[automatically_derived]
11429            #[doc(hidden)]
11430            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11431            for renounceOwnershipCall {
11432                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11433                    Self {}
11434                }
11435            }
11436        }
11437        {
11438            #[doc(hidden)]
11439            type UnderlyingSolTuple<'a> = ();
11440            #[doc(hidden)]
11441            type UnderlyingRustTuple<'a> = ();
11442            #[cfg(test)]
11443            #[allow(dead_code, unreachable_patterns)]
11444            fn _type_assertion(
11445                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11446            ) {
11447                match _t {
11448                    alloy_sol_types::private::AssertTypeEq::<
11449                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11450                    >(_) => {}
11451                }
11452            }
11453            #[automatically_derived]
11454            #[doc(hidden)]
11455            impl ::core::convert::From<renounceOwnershipReturn>
11456            for UnderlyingRustTuple<'_> {
11457                fn from(value: renounceOwnershipReturn) -> Self {
11458                    ()
11459                }
11460            }
11461            #[automatically_derived]
11462            #[doc(hidden)]
11463            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11464            for renounceOwnershipReturn {
11465                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11466                    Self {}
11467                }
11468            }
11469        }
11470        #[automatically_derived]
11471        impl alloy_sol_types::SolCall for renounceOwnershipCall {
11472            type Parameters<'a> = ();
11473            type Token<'a> = <Self::Parameters<
11474                'a,
11475            > as alloy_sol_types::SolType>::Token<'a>;
11476            type Return = renounceOwnershipReturn;
11477            type ReturnTuple<'a> = ();
11478            type ReturnToken<'a> = <Self::ReturnTuple<
11479                'a,
11480            > as alloy_sol_types::SolType>::Token<'a>;
11481            const SIGNATURE: &'static str = "renounceOwnership()";
11482            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
11483            #[inline]
11484            fn new<'a>(
11485                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11486            ) -> Self {
11487                tuple.into()
11488            }
11489            #[inline]
11490            fn tokenize(&self) -> Self::Token<'_> {
11491                ()
11492            }
11493            #[inline]
11494            fn abi_decode_returns(
11495                data: &[u8],
11496                validate: bool,
11497            ) -> alloy_sol_types::Result<Self::Return> {
11498                <Self::ReturnTuple<
11499                    '_,
11500                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11501                    .map(Into::into)
11502            }
11503        }
11504    };
11505    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11506    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
11507```solidity
11508function setPermissionedProver(address prover) external;
11509```*/
11510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11511    #[derive(Clone)]
11512    pub struct setPermissionedProverCall {
11513        #[allow(missing_docs)]
11514        pub prover: alloy::sol_types::private::Address,
11515    }
11516    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
11517    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11518    #[derive(Clone)]
11519    pub struct setPermissionedProverReturn {}
11520    #[allow(
11521        non_camel_case_types,
11522        non_snake_case,
11523        clippy::pub_underscore_fields,
11524        clippy::style
11525    )]
11526    const _: () = {
11527        use alloy::sol_types as alloy_sol_types;
11528        {
11529            #[doc(hidden)]
11530            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11531            #[doc(hidden)]
11532            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11533            #[cfg(test)]
11534            #[allow(dead_code, unreachable_patterns)]
11535            fn _type_assertion(
11536                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11537            ) {
11538                match _t {
11539                    alloy_sol_types::private::AssertTypeEq::<
11540                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11541                    >(_) => {}
11542                }
11543            }
11544            #[automatically_derived]
11545            #[doc(hidden)]
11546            impl ::core::convert::From<setPermissionedProverCall>
11547            for UnderlyingRustTuple<'_> {
11548                fn from(value: setPermissionedProverCall) -> Self {
11549                    (value.prover,)
11550                }
11551            }
11552            #[automatically_derived]
11553            #[doc(hidden)]
11554            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11555            for setPermissionedProverCall {
11556                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11557                    Self { prover: tuple.0 }
11558                }
11559            }
11560        }
11561        {
11562            #[doc(hidden)]
11563            type UnderlyingSolTuple<'a> = ();
11564            #[doc(hidden)]
11565            type UnderlyingRustTuple<'a> = ();
11566            #[cfg(test)]
11567            #[allow(dead_code, unreachable_patterns)]
11568            fn _type_assertion(
11569                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11570            ) {
11571                match _t {
11572                    alloy_sol_types::private::AssertTypeEq::<
11573                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11574                    >(_) => {}
11575                }
11576            }
11577            #[automatically_derived]
11578            #[doc(hidden)]
11579            impl ::core::convert::From<setPermissionedProverReturn>
11580            for UnderlyingRustTuple<'_> {
11581                fn from(value: setPermissionedProverReturn) -> Self {
11582                    ()
11583                }
11584            }
11585            #[automatically_derived]
11586            #[doc(hidden)]
11587            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11588            for setPermissionedProverReturn {
11589                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11590                    Self {}
11591                }
11592            }
11593        }
11594        #[automatically_derived]
11595        impl alloy_sol_types::SolCall for setPermissionedProverCall {
11596            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11597            type Token<'a> = <Self::Parameters<
11598                'a,
11599            > as alloy_sol_types::SolType>::Token<'a>;
11600            type Return = setPermissionedProverReturn;
11601            type ReturnTuple<'a> = ();
11602            type ReturnToken<'a> = <Self::ReturnTuple<
11603                'a,
11604            > as alloy_sol_types::SolType>::Token<'a>;
11605            const SIGNATURE: &'static str = "setPermissionedProver(address)";
11606            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
11607            #[inline]
11608            fn new<'a>(
11609                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11610            ) -> Self {
11611                tuple.into()
11612            }
11613            #[inline]
11614            fn tokenize(&self) -> Self::Token<'_> {
11615                (
11616                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11617                        &self.prover,
11618                    ),
11619                )
11620            }
11621            #[inline]
11622            fn abi_decode_returns(
11623                data: &[u8],
11624                validate: bool,
11625            ) -> alloy_sol_types::Result<Self::Return> {
11626                <Self::ReturnTuple<
11627                    '_,
11628                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11629                    .map(Into::into)
11630            }
11631        }
11632    };
11633    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11634    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
11635```solidity
11636function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
11637```*/
11638    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11639    #[derive(Clone)]
11640    pub struct setStateHistoryRetentionPeriodCall {
11641        #[allow(missing_docs)]
11642        pub historySeconds: u32,
11643    }
11644    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
11645    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11646    #[derive(Clone)]
11647    pub struct setStateHistoryRetentionPeriodReturn {}
11648    #[allow(
11649        non_camel_case_types,
11650        non_snake_case,
11651        clippy::pub_underscore_fields,
11652        clippy::style
11653    )]
11654    const _: () = {
11655        use alloy::sol_types as alloy_sol_types;
11656        {
11657            #[doc(hidden)]
11658            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11659            #[doc(hidden)]
11660            type UnderlyingRustTuple<'a> = (u32,);
11661            #[cfg(test)]
11662            #[allow(dead_code, unreachable_patterns)]
11663            fn _type_assertion(
11664                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11665            ) {
11666                match _t {
11667                    alloy_sol_types::private::AssertTypeEq::<
11668                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11669                    >(_) => {}
11670                }
11671            }
11672            #[automatically_derived]
11673            #[doc(hidden)]
11674            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
11675            for UnderlyingRustTuple<'_> {
11676                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
11677                    (value.historySeconds,)
11678                }
11679            }
11680            #[automatically_derived]
11681            #[doc(hidden)]
11682            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11683            for setStateHistoryRetentionPeriodCall {
11684                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11685                    Self { historySeconds: tuple.0 }
11686                }
11687            }
11688        }
11689        {
11690            #[doc(hidden)]
11691            type UnderlyingSolTuple<'a> = ();
11692            #[doc(hidden)]
11693            type UnderlyingRustTuple<'a> = ();
11694            #[cfg(test)]
11695            #[allow(dead_code, unreachable_patterns)]
11696            fn _type_assertion(
11697                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11698            ) {
11699                match _t {
11700                    alloy_sol_types::private::AssertTypeEq::<
11701                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11702                    >(_) => {}
11703                }
11704            }
11705            #[automatically_derived]
11706            #[doc(hidden)]
11707            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
11708            for UnderlyingRustTuple<'_> {
11709                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
11710                    ()
11711                }
11712            }
11713            #[automatically_derived]
11714            #[doc(hidden)]
11715            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11716            for setStateHistoryRetentionPeriodReturn {
11717                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11718                    Self {}
11719                }
11720            }
11721        }
11722        #[automatically_derived]
11723        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
11724            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11725            type Token<'a> = <Self::Parameters<
11726                'a,
11727            > as alloy_sol_types::SolType>::Token<'a>;
11728            type Return = setStateHistoryRetentionPeriodReturn;
11729            type ReturnTuple<'a> = ();
11730            type ReturnToken<'a> = <Self::ReturnTuple<
11731                'a,
11732            > as alloy_sol_types::SolType>::Token<'a>;
11733            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
11734            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
11735            #[inline]
11736            fn new<'a>(
11737                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11738            ) -> Self {
11739                tuple.into()
11740            }
11741            #[inline]
11742            fn tokenize(&self) -> Self::Token<'_> {
11743                (
11744                    <alloy::sol_types::sol_data::Uint<
11745                        32,
11746                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
11747                )
11748            }
11749            #[inline]
11750            fn abi_decode_returns(
11751                data: &[u8],
11752                validate: bool,
11753            ) -> alloy_sol_types::Result<Self::Return> {
11754                <Self::ReturnTuple<
11755                    '_,
11756                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11757                    .map(Into::into)
11758            }
11759        }
11760    };
11761    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11762    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
11763```solidity
11764function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
11765```*/
11766    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11767    #[derive(Clone)]
11768    pub struct setstateHistoryRetentionPeriodCall {
11769        #[allow(missing_docs)]
11770        pub historySeconds: u32,
11771    }
11772    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
11773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11774    #[derive(Clone)]
11775    pub struct setstateHistoryRetentionPeriodReturn {}
11776    #[allow(
11777        non_camel_case_types,
11778        non_snake_case,
11779        clippy::pub_underscore_fields,
11780        clippy::style
11781    )]
11782    const _: () = {
11783        use alloy::sol_types as alloy_sol_types;
11784        {
11785            #[doc(hidden)]
11786            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11787            #[doc(hidden)]
11788            type UnderlyingRustTuple<'a> = (u32,);
11789            #[cfg(test)]
11790            #[allow(dead_code, unreachable_patterns)]
11791            fn _type_assertion(
11792                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11793            ) {
11794                match _t {
11795                    alloy_sol_types::private::AssertTypeEq::<
11796                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11797                    >(_) => {}
11798                }
11799            }
11800            #[automatically_derived]
11801            #[doc(hidden)]
11802            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
11803            for UnderlyingRustTuple<'_> {
11804                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
11805                    (value.historySeconds,)
11806                }
11807            }
11808            #[automatically_derived]
11809            #[doc(hidden)]
11810            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11811            for setstateHistoryRetentionPeriodCall {
11812                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11813                    Self { historySeconds: tuple.0 }
11814                }
11815            }
11816        }
11817        {
11818            #[doc(hidden)]
11819            type UnderlyingSolTuple<'a> = ();
11820            #[doc(hidden)]
11821            type UnderlyingRustTuple<'a> = ();
11822            #[cfg(test)]
11823            #[allow(dead_code, unreachable_patterns)]
11824            fn _type_assertion(
11825                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11826            ) {
11827                match _t {
11828                    alloy_sol_types::private::AssertTypeEq::<
11829                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11830                    >(_) => {}
11831                }
11832            }
11833            #[automatically_derived]
11834            #[doc(hidden)]
11835            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
11836            for UnderlyingRustTuple<'_> {
11837                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
11838                    ()
11839                }
11840            }
11841            #[automatically_derived]
11842            #[doc(hidden)]
11843            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11844            for setstateHistoryRetentionPeriodReturn {
11845                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11846                    Self {}
11847                }
11848            }
11849        }
11850        #[automatically_derived]
11851        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
11852            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11853            type Token<'a> = <Self::Parameters<
11854                'a,
11855            > as alloy_sol_types::SolType>::Token<'a>;
11856            type Return = setstateHistoryRetentionPeriodReturn;
11857            type ReturnTuple<'a> = ();
11858            type ReturnToken<'a> = <Self::ReturnTuple<
11859                'a,
11860            > as alloy_sol_types::SolType>::Token<'a>;
11861            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
11862            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
11863            #[inline]
11864            fn new<'a>(
11865                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11866            ) -> Self {
11867                tuple.into()
11868            }
11869            #[inline]
11870            fn tokenize(&self) -> Self::Token<'_> {
11871                (
11872                    <alloy::sol_types::sol_data::Uint<
11873                        32,
11874                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
11875                )
11876            }
11877            #[inline]
11878            fn abi_decode_returns(
11879                data: &[u8],
11880                validate: bool,
11881            ) -> alloy_sol_types::Result<Self::Return> {
11882                <Self::ReturnTuple<
11883                    '_,
11884                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11885                    .map(Into::into)
11886            }
11887        }
11888    };
11889    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11890    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
11891```solidity
11892function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
11893```*/
11894    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11895    #[derive(Clone)]
11896    pub struct stateHistoryCommitmentsCall {
11897        #[allow(missing_docs)]
11898        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11899    }
11900    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11901    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
11902    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11903    #[derive(Clone)]
11904    pub struct stateHistoryCommitmentsReturn {
11905        #[allow(missing_docs)]
11906        pub l1BlockHeight: u64,
11907        #[allow(missing_docs)]
11908        pub l1BlockTimestamp: u64,
11909        #[allow(missing_docs)]
11910        pub hotShotBlockHeight: u64,
11911        #[allow(missing_docs)]
11912        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11913    }
11914    #[allow(
11915        non_camel_case_types,
11916        non_snake_case,
11917        clippy::pub_underscore_fields,
11918        clippy::style
11919    )]
11920    const _: () = {
11921        use alloy::sol_types as alloy_sol_types;
11922        {
11923            #[doc(hidden)]
11924            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11925            #[doc(hidden)]
11926            type UnderlyingRustTuple<'a> = (
11927                alloy::sol_types::private::primitives::aliases::U256,
11928            );
11929            #[cfg(test)]
11930            #[allow(dead_code, unreachable_patterns)]
11931            fn _type_assertion(
11932                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11933            ) {
11934                match _t {
11935                    alloy_sol_types::private::AssertTypeEq::<
11936                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11937                    >(_) => {}
11938                }
11939            }
11940            #[automatically_derived]
11941            #[doc(hidden)]
11942            impl ::core::convert::From<stateHistoryCommitmentsCall>
11943            for UnderlyingRustTuple<'_> {
11944                fn from(value: stateHistoryCommitmentsCall) -> Self {
11945                    (value._0,)
11946                }
11947            }
11948            #[automatically_derived]
11949            #[doc(hidden)]
11950            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11951            for stateHistoryCommitmentsCall {
11952                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11953                    Self { _0: tuple.0 }
11954                }
11955            }
11956        }
11957        {
11958            #[doc(hidden)]
11959            type UnderlyingSolTuple<'a> = (
11960                alloy::sol_types::sol_data::Uint<64>,
11961                alloy::sol_types::sol_data::Uint<64>,
11962                alloy::sol_types::sol_data::Uint<64>,
11963                BN254::ScalarField,
11964            );
11965            #[doc(hidden)]
11966            type UnderlyingRustTuple<'a> = (
11967                u64,
11968                u64,
11969                u64,
11970                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11971            );
11972            #[cfg(test)]
11973            #[allow(dead_code, unreachable_patterns)]
11974            fn _type_assertion(
11975                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11976            ) {
11977                match _t {
11978                    alloy_sol_types::private::AssertTypeEq::<
11979                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11980                    >(_) => {}
11981                }
11982            }
11983            #[automatically_derived]
11984            #[doc(hidden)]
11985            impl ::core::convert::From<stateHistoryCommitmentsReturn>
11986            for UnderlyingRustTuple<'_> {
11987                fn from(value: stateHistoryCommitmentsReturn) -> Self {
11988                    (
11989                        value.l1BlockHeight,
11990                        value.l1BlockTimestamp,
11991                        value.hotShotBlockHeight,
11992                        value.hotShotBlockCommRoot,
11993                    )
11994                }
11995            }
11996            #[automatically_derived]
11997            #[doc(hidden)]
11998            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11999            for stateHistoryCommitmentsReturn {
12000                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12001                    Self {
12002                        l1BlockHeight: tuple.0,
12003                        l1BlockTimestamp: tuple.1,
12004                        hotShotBlockHeight: tuple.2,
12005                        hotShotBlockCommRoot: tuple.3,
12006                    }
12007                }
12008            }
12009        }
12010        #[automatically_derived]
12011        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
12012            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12013            type Token<'a> = <Self::Parameters<
12014                'a,
12015            > as alloy_sol_types::SolType>::Token<'a>;
12016            type Return = stateHistoryCommitmentsReturn;
12017            type ReturnTuple<'a> = (
12018                alloy::sol_types::sol_data::Uint<64>,
12019                alloy::sol_types::sol_data::Uint<64>,
12020                alloy::sol_types::sol_data::Uint<64>,
12021                BN254::ScalarField,
12022            );
12023            type ReturnToken<'a> = <Self::ReturnTuple<
12024                'a,
12025            > as alloy_sol_types::SolType>::Token<'a>;
12026            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
12027            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
12028            #[inline]
12029            fn new<'a>(
12030                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12031            ) -> Self {
12032                tuple.into()
12033            }
12034            #[inline]
12035            fn tokenize(&self) -> Self::Token<'_> {
12036                (
12037                    <alloy::sol_types::sol_data::Uint<
12038                        256,
12039                    > as alloy_sol_types::SolType>::tokenize(&self._0),
12040                )
12041            }
12042            #[inline]
12043            fn abi_decode_returns(
12044                data: &[u8],
12045                validate: bool,
12046            ) -> alloy_sol_types::Result<Self::Return> {
12047                <Self::ReturnTuple<
12048                    '_,
12049                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12050                    .map(Into::into)
12051            }
12052        }
12053    };
12054    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12055    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
12056```solidity
12057function stateHistoryFirstIndex() external view returns (uint64);
12058```*/
12059    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12060    #[derive(Clone)]
12061    pub struct stateHistoryFirstIndexCall {}
12062    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12063    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
12064    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12065    #[derive(Clone)]
12066    pub struct stateHistoryFirstIndexReturn {
12067        #[allow(missing_docs)]
12068        pub _0: u64,
12069    }
12070    #[allow(
12071        non_camel_case_types,
12072        non_snake_case,
12073        clippy::pub_underscore_fields,
12074        clippy::style
12075    )]
12076    const _: () = {
12077        use alloy::sol_types as alloy_sol_types;
12078        {
12079            #[doc(hidden)]
12080            type UnderlyingSolTuple<'a> = ();
12081            #[doc(hidden)]
12082            type UnderlyingRustTuple<'a> = ();
12083            #[cfg(test)]
12084            #[allow(dead_code, unreachable_patterns)]
12085            fn _type_assertion(
12086                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12087            ) {
12088                match _t {
12089                    alloy_sol_types::private::AssertTypeEq::<
12090                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12091                    >(_) => {}
12092                }
12093            }
12094            #[automatically_derived]
12095            #[doc(hidden)]
12096            impl ::core::convert::From<stateHistoryFirstIndexCall>
12097            for UnderlyingRustTuple<'_> {
12098                fn from(value: stateHistoryFirstIndexCall) -> Self {
12099                    ()
12100                }
12101            }
12102            #[automatically_derived]
12103            #[doc(hidden)]
12104            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12105            for stateHistoryFirstIndexCall {
12106                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12107                    Self {}
12108                }
12109            }
12110        }
12111        {
12112            #[doc(hidden)]
12113            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12114            #[doc(hidden)]
12115            type UnderlyingRustTuple<'a> = (u64,);
12116            #[cfg(test)]
12117            #[allow(dead_code, unreachable_patterns)]
12118            fn _type_assertion(
12119                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12120            ) {
12121                match _t {
12122                    alloy_sol_types::private::AssertTypeEq::<
12123                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12124                    >(_) => {}
12125                }
12126            }
12127            #[automatically_derived]
12128            #[doc(hidden)]
12129            impl ::core::convert::From<stateHistoryFirstIndexReturn>
12130            for UnderlyingRustTuple<'_> {
12131                fn from(value: stateHistoryFirstIndexReturn) -> Self {
12132                    (value._0,)
12133                }
12134            }
12135            #[automatically_derived]
12136            #[doc(hidden)]
12137            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12138            for stateHistoryFirstIndexReturn {
12139                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12140                    Self { _0: tuple.0 }
12141                }
12142            }
12143        }
12144        #[automatically_derived]
12145        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
12146            type Parameters<'a> = ();
12147            type Token<'a> = <Self::Parameters<
12148                'a,
12149            > as alloy_sol_types::SolType>::Token<'a>;
12150            type Return = stateHistoryFirstIndexReturn;
12151            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12152            type ReturnToken<'a> = <Self::ReturnTuple<
12153                'a,
12154            > as alloy_sol_types::SolType>::Token<'a>;
12155            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
12156            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
12157            #[inline]
12158            fn new<'a>(
12159                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12160            ) -> Self {
12161                tuple.into()
12162            }
12163            #[inline]
12164            fn tokenize(&self) -> Self::Token<'_> {
12165                ()
12166            }
12167            #[inline]
12168            fn abi_decode_returns(
12169                data: &[u8],
12170                validate: bool,
12171            ) -> alloy_sol_types::Result<Self::Return> {
12172                <Self::ReturnTuple<
12173                    '_,
12174                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12175                    .map(Into::into)
12176            }
12177        }
12178    };
12179    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12180    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
12181```solidity
12182function stateHistoryRetentionPeriod() external view returns (uint32);
12183```*/
12184    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12185    #[derive(Clone)]
12186    pub struct stateHistoryRetentionPeriodCall {}
12187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12188    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
12189    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12190    #[derive(Clone)]
12191    pub struct stateHistoryRetentionPeriodReturn {
12192        #[allow(missing_docs)]
12193        pub _0: u32,
12194    }
12195    #[allow(
12196        non_camel_case_types,
12197        non_snake_case,
12198        clippy::pub_underscore_fields,
12199        clippy::style
12200    )]
12201    const _: () = {
12202        use alloy::sol_types as alloy_sol_types;
12203        {
12204            #[doc(hidden)]
12205            type UnderlyingSolTuple<'a> = ();
12206            #[doc(hidden)]
12207            type UnderlyingRustTuple<'a> = ();
12208            #[cfg(test)]
12209            #[allow(dead_code, unreachable_patterns)]
12210            fn _type_assertion(
12211                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12212            ) {
12213                match _t {
12214                    alloy_sol_types::private::AssertTypeEq::<
12215                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12216                    >(_) => {}
12217                }
12218            }
12219            #[automatically_derived]
12220            #[doc(hidden)]
12221            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
12222            for UnderlyingRustTuple<'_> {
12223                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
12224                    ()
12225                }
12226            }
12227            #[automatically_derived]
12228            #[doc(hidden)]
12229            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12230            for stateHistoryRetentionPeriodCall {
12231                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12232                    Self {}
12233                }
12234            }
12235        }
12236        {
12237            #[doc(hidden)]
12238            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12239            #[doc(hidden)]
12240            type UnderlyingRustTuple<'a> = (u32,);
12241            #[cfg(test)]
12242            #[allow(dead_code, unreachable_patterns)]
12243            fn _type_assertion(
12244                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12245            ) {
12246                match _t {
12247                    alloy_sol_types::private::AssertTypeEq::<
12248                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12249                    >(_) => {}
12250                }
12251            }
12252            #[automatically_derived]
12253            #[doc(hidden)]
12254            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
12255            for UnderlyingRustTuple<'_> {
12256                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
12257                    (value._0,)
12258                }
12259            }
12260            #[automatically_derived]
12261            #[doc(hidden)]
12262            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12263            for stateHistoryRetentionPeriodReturn {
12264                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12265                    Self { _0: tuple.0 }
12266                }
12267            }
12268        }
12269        #[automatically_derived]
12270        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
12271            type Parameters<'a> = ();
12272            type Token<'a> = <Self::Parameters<
12273                'a,
12274            > as alloy_sol_types::SolType>::Token<'a>;
12275            type Return = stateHistoryRetentionPeriodReturn;
12276            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12277            type ReturnToken<'a> = <Self::ReturnTuple<
12278                'a,
12279            > as alloy_sol_types::SolType>::Token<'a>;
12280            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
12281            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
12282            #[inline]
12283            fn new<'a>(
12284                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12285            ) -> Self {
12286                tuple.into()
12287            }
12288            #[inline]
12289            fn tokenize(&self) -> Self::Token<'_> {
12290                ()
12291            }
12292            #[inline]
12293            fn abi_decode_returns(
12294                data: &[u8],
12295                validate: bool,
12296            ) -> alloy_sol_types::Result<Self::Return> {
12297                <Self::ReturnTuple<
12298                    '_,
12299                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12300                    .map(Into::into)
12301            }
12302        }
12303    };
12304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12305    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
12306```solidity
12307function transferOwnership(address newOwner) external;
12308```*/
12309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12310    #[derive(Clone)]
12311    pub struct transferOwnershipCall {
12312        #[allow(missing_docs)]
12313        pub newOwner: alloy::sol_types::private::Address,
12314    }
12315    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
12316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12317    #[derive(Clone)]
12318    pub struct transferOwnershipReturn {}
12319    #[allow(
12320        non_camel_case_types,
12321        non_snake_case,
12322        clippy::pub_underscore_fields,
12323        clippy::style
12324    )]
12325    const _: () = {
12326        use alloy::sol_types as alloy_sol_types;
12327        {
12328            #[doc(hidden)]
12329            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12330            #[doc(hidden)]
12331            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12332            #[cfg(test)]
12333            #[allow(dead_code, unreachable_patterns)]
12334            fn _type_assertion(
12335                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12336            ) {
12337                match _t {
12338                    alloy_sol_types::private::AssertTypeEq::<
12339                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12340                    >(_) => {}
12341                }
12342            }
12343            #[automatically_derived]
12344            #[doc(hidden)]
12345            impl ::core::convert::From<transferOwnershipCall>
12346            for UnderlyingRustTuple<'_> {
12347                fn from(value: transferOwnershipCall) -> Self {
12348                    (value.newOwner,)
12349                }
12350            }
12351            #[automatically_derived]
12352            #[doc(hidden)]
12353            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12354            for transferOwnershipCall {
12355                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12356                    Self { newOwner: tuple.0 }
12357                }
12358            }
12359        }
12360        {
12361            #[doc(hidden)]
12362            type UnderlyingSolTuple<'a> = ();
12363            #[doc(hidden)]
12364            type UnderlyingRustTuple<'a> = ();
12365            #[cfg(test)]
12366            #[allow(dead_code, unreachable_patterns)]
12367            fn _type_assertion(
12368                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12369            ) {
12370                match _t {
12371                    alloy_sol_types::private::AssertTypeEq::<
12372                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12373                    >(_) => {}
12374                }
12375            }
12376            #[automatically_derived]
12377            #[doc(hidden)]
12378            impl ::core::convert::From<transferOwnershipReturn>
12379            for UnderlyingRustTuple<'_> {
12380                fn from(value: transferOwnershipReturn) -> Self {
12381                    ()
12382                }
12383            }
12384            #[automatically_derived]
12385            #[doc(hidden)]
12386            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12387            for transferOwnershipReturn {
12388                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12389                    Self {}
12390                }
12391            }
12392        }
12393        #[automatically_derived]
12394        impl alloy_sol_types::SolCall for transferOwnershipCall {
12395            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12396            type Token<'a> = <Self::Parameters<
12397                'a,
12398            > as alloy_sol_types::SolType>::Token<'a>;
12399            type Return = transferOwnershipReturn;
12400            type ReturnTuple<'a> = ();
12401            type ReturnToken<'a> = <Self::ReturnTuple<
12402                'a,
12403            > as alloy_sol_types::SolType>::Token<'a>;
12404            const SIGNATURE: &'static str = "transferOwnership(address)";
12405            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
12406            #[inline]
12407            fn new<'a>(
12408                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12409            ) -> Self {
12410                tuple.into()
12411            }
12412            #[inline]
12413            fn tokenize(&self) -> Self::Token<'_> {
12414                (
12415                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12416                        &self.newOwner,
12417                    ),
12418                )
12419            }
12420            #[inline]
12421            fn abi_decode_returns(
12422                data: &[u8],
12423                validate: bool,
12424            ) -> alloy_sol_types::Result<Self::Return> {
12425                <Self::ReturnTuple<
12426                    '_,
12427                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12428                    .map(Into::into)
12429            }
12430        }
12431    };
12432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12433    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
12434```solidity
12435function updateEpochStartBlock(uint64 newEpochStartBlock) external;
12436```*/
12437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12438    #[derive(Clone)]
12439    pub struct updateEpochStartBlockCall {
12440        #[allow(missing_docs)]
12441        pub newEpochStartBlock: u64,
12442    }
12443    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
12444    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12445    #[derive(Clone)]
12446    pub struct updateEpochStartBlockReturn {}
12447    #[allow(
12448        non_camel_case_types,
12449        non_snake_case,
12450        clippy::pub_underscore_fields,
12451        clippy::style
12452    )]
12453    const _: () = {
12454        use alloy::sol_types as alloy_sol_types;
12455        {
12456            #[doc(hidden)]
12457            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12458            #[doc(hidden)]
12459            type UnderlyingRustTuple<'a> = (u64,);
12460            #[cfg(test)]
12461            #[allow(dead_code, unreachable_patterns)]
12462            fn _type_assertion(
12463                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12464            ) {
12465                match _t {
12466                    alloy_sol_types::private::AssertTypeEq::<
12467                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12468                    >(_) => {}
12469                }
12470            }
12471            #[automatically_derived]
12472            #[doc(hidden)]
12473            impl ::core::convert::From<updateEpochStartBlockCall>
12474            for UnderlyingRustTuple<'_> {
12475                fn from(value: updateEpochStartBlockCall) -> Self {
12476                    (value.newEpochStartBlock,)
12477                }
12478            }
12479            #[automatically_derived]
12480            #[doc(hidden)]
12481            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12482            for updateEpochStartBlockCall {
12483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12484                    Self {
12485                        newEpochStartBlock: tuple.0,
12486                    }
12487                }
12488            }
12489        }
12490        {
12491            #[doc(hidden)]
12492            type UnderlyingSolTuple<'a> = ();
12493            #[doc(hidden)]
12494            type UnderlyingRustTuple<'a> = ();
12495            #[cfg(test)]
12496            #[allow(dead_code, unreachable_patterns)]
12497            fn _type_assertion(
12498                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12499            ) {
12500                match _t {
12501                    alloy_sol_types::private::AssertTypeEq::<
12502                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12503                    >(_) => {}
12504                }
12505            }
12506            #[automatically_derived]
12507            #[doc(hidden)]
12508            impl ::core::convert::From<updateEpochStartBlockReturn>
12509            for UnderlyingRustTuple<'_> {
12510                fn from(value: updateEpochStartBlockReturn) -> Self {
12511                    ()
12512                }
12513            }
12514            #[automatically_derived]
12515            #[doc(hidden)]
12516            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12517            for updateEpochStartBlockReturn {
12518                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12519                    Self {}
12520                }
12521            }
12522        }
12523        #[automatically_derived]
12524        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
12525            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12526            type Token<'a> = <Self::Parameters<
12527                'a,
12528            > as alloy_sol_types::SolType>::Token<'a>;
12529            type Return = updateEpochStartBlockReturn;
12530            type ReturnTuple<'a> = ();
12531            type ReturnToken<'a> = <Self::ReturnTuple<
12532                'a,
12533            > as alloy_sol_types::SolType>::Token<'a>;
12534            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
12535            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
12536            #[inline]
12537            fn new<'a>(
12538                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12539            ) -> Self {
12540                tuple.into()
12541            }
12542            #[inline]
12543            fn tokenize(&self) -> Self::Token<'_> {
12544                (
12545                    <alloy::sol_types::sol_data::Uint<
12546                        64,
12547                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
12548                )
12549            }
12550            #[inline]
12551            fn abi_decode_returns(
12552                data: &[u8],
12553                validate: bool,
12554            ) -> alloy_sol_types::Result<Self::Return> {
12555                <Self::ReturnTuple<
12556                    '_,
12557                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12558                    .map(Into::into)
12559            }
12560        }
12561    };
12562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12563    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
12564```solidity
12565function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
12566```*/
12567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12568    #[derive(Clone)]
12569    pub struct upgradeToAndCallCall {
12570        #[allow(missing_docs)]
12571        pub newImplementation: alloy::sol_types::private::Address,
12572        #[allow(missing_docs)]
12573        pub data: alloy::sol_types::private::Bytes,
12574    }
12575    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
12576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12577    #[derive(Clone)]
12578    pub struct upgradeToAndCallReturn {}
12579    #[allow(
12580        non_camel_case_types,
12581        non_snake_case,
12582        clippy::pub_underscore_fields,
12583        clippy::style
12584    )]
12585    const _: () = {
12586        use alloy::sol_types as alloy_sol_types;
12587        {
12588            #[doc(hidden)]
12589            type UnderlyingSolTuple<'a> = (
12590                alloy::sol_types::sol_data::Address,
12591                alloy::sol_types::sol_data::Bytes,
12592            );
12593            #[doc(hidden)]
12594            type UnderlyingRustTuple<'a> = (
12595                alloy::sol_types::private::Address,
12596                alloy::sol_types::private::Bytes,
12597            );
12598            #[cfg(test)]
12599            #[allow(dead_code, unreachable_patterns)]
12600            fn _type_assertion(
12601                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12602            ) {
12603                match _t {
12604                    alloy_sol_types::private::AssertTypeEq::<
12605                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12606                    >(_) => {}
12607                }
12608            }
12609            #[automatically_derived]
12610            #[doc(hidden)]
12611            impl ::core::convert::From<upgradeToAndCallCall>
12612            for UnderlyingRustTuple<'_> {
12613                fn from(value: upgradeToAndCallCall) -> Self {
12614                    (value.newImplementation, value.data)
12615                }
12616            }
12617            #[automatically_derived]
12618            #[doc(hidden)]
12619            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12620            for upgradeToAndCallCall {
12621                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12622                    Self {
12623                        newImplementation: tuple.0,
12624                        data: tuple.1,
12625                    }
12626                }
12627            }
12628        }
12629        {
12630            #[doc(hidden)]
12631            type UnderlyingSolTuple<'a> = ();
12632            #[doc(hidden)]
12633            type UnderlyingRustTuple<'a> = ();
12634            #[cfg(test)]
12635            #[allow(dead_code, unreachable_patterns)]
12636            fn _type_assertion(
12637                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12638            ) {
12639                match _t {
12640                    alloy_sol_types::private::AssertTypeEq::<
12641                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12642                    >(_) => {}
12643                }
12644            }
12645            #[automatically_derived]
12646            #[doc(hidden)]
12647            impl ::core::convert::From<upgradeToAndCallReturn>
12648            for UnderlyingRustTuple<'_> {
12649                fn from(value: upgradeToAndCallReturn) -> Self {
12650                    ()
12651                }
12652            }
12653            #[automatically_derived]
12654            #[doc(hidden)]
12655            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12656            for upgradeToAndCallReturn {
12657                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12658                    Self {}
12659                }
12660            }
12661        }
12662        #[automatically_derived]
12663        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
12664            type Parameters<'a> = (
12665                alloy::sol_types::sol_data::Address,
12666                alloy::sol_types::sol_data::Bytes,
12667            );
12668            type Token<'a> = <Self::Parameters<
12669                'a,
12670            > as alloy_sol_types::SolType>::Token<'a>;
12671            type Return = upgradeToAndCallReturn;
12672            type ReturnTuple<'a> = ();
12673            type ReturnToken<'a> = <Self::ReturnTuple<
12674                'a,
12675            > as alloy_sol_types::SolType>::Token<'a>;
12676            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
12677            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
12678            #[inline]
12679            fn new<'a>(
12680                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12681            ) -> Self {
12682                tuple.into()
12683            }
12684            #[inline]
12685            fn tokenize(&self) -> Self::Token<'_> {
12686                (
12687                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12688                        &self.newImplementation,
12689                    ),
12690                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
12691                        &self.data,
12692                    ),
12693                )
12694            }
12695            #[inline]
12696            fn abi_decode_returns(
12697                data: &[u8],
12698                validate: bool,
12699            ) -> alloy_sol_types::Result<Self::Return> {
12700                <Self::ReturnTuple<
12701                    '_,
12702                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12703                    .map(Into::into)
12704            }
12705        }
12706    };
12707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12708    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
12709```solidity
12710function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
12711```*/
12712    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12713    #[derive(Clone)]
12714    pub struct votingStakeTableStateCall {}
12715    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12716    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
12717    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12718    #[derive(Clone)]
12719    pub struct votingStakeTableStateReturn {
12720        #[allow(missing_docs)]
12721        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
12722        #[allow(missing_docs)]
12723        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12724        #[allow(missing_docs)]
12725        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12726        #[allow(missing_docs)]
12727        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12728    }
12729    #[allow(
12730        non_camel_case_types,
12731        non_snake_case,
12732        clippy::pub_underscore_fields,
12733        clippy::style
12734    )]
12735    const _: () = {
12736        use alloy::sol_types as alloy_sol_types;
12737        {
12738            #[doc(hidden)]
12739            type UnderlyingSolTuple<'a> = ();
12740            #[doc(hidden)]
12741            type UnderlyingRustTuple<'a> = ();
12742            #[cfg(test)]
12743            #[allow(dead_code, unreachable_patterns)]
12744            fn _type_assertion(
12745                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12746            ) {
12747                match _t {
12748                    alloy_sol_types::private::AssertTypeEq::<
12749                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12750                    >(_) => {}
12751                }
12752            }
12753            #[automatically_derived]
12754            #[doc(hidden)]
12755            impl ::core::convert::From<votingStakeTableStateCall>
12756            for UnderlyingRustTuple<'_> {
12757                fn from(value: votingStakeTableStateCall) -> Self {
12758                    ()
12759                }
12760            }
12761            #[automatically_derived]
12762            #[doc(hidden)]
12763            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12764            for votingStakeTableStateCall {
12765                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12766                    Self {}
12767                }
12768            }
12769        }
12770        {
12771            #[doc(hidden)]
12772            type UnderlyingSolTuple<'a> = (
12773                alloy::sol_types::sol_data::Uint<256>,
12774                BN254::ScalarField,
12775                BN254::ScalarField,
12776                BN254::ScalarField,
12777            );
12778            #[doc(hidden)]
12779            type UnderlyingRustTuple<'a> = (
12780                alloy::sol_types::private::primitives::aliases::U256,
12781                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12782                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12783                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12784            );
12785            #[cfg(test)]
12786            #[allow(dead_code, unreachable_patterns)]
12787            fn _type_assertion(
12788                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12789            ) {
12790                match _t {
12791                    alloy_sol_types::private::AssertTypeEq::<
12792                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12793                    >(_) => {}
12794                }
12795            }
12796            #[automatically_derived]
12797            #[doc(hidden)]
12798            impl ::core::convert::From<votingStakeTableStateReturn>
12799            for UnderlyingRustTuple<'_> {
12800                fn from(value: votingStakeTableStateReturn) -> Self {
12801                    (
12802                        value.threshold,
12803                        value.blsKeyComm,
12804                        value.schnorrKeyComm,
12805                        value.amountComm,
12806                    )
12807                }
12808            }
12809            #[automatically_derived]
12810            #[doc(hidden)]
12811            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12812            for votingStakeTableStateReturn {
12813                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12814                    Self {
12815                        threshold: tuple.0,
12816                        blsKeyComm: tuple.1,
12817                        schnorrKeyComm: tuple.2,
12818                        amountComm: tuple.3,
12819                    }
12820                }
12821            }
12822        }
12823        #[automatically_derived]
12824        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
12825            type Parameters<'a> = ();
12826            type Token<'a> = <Self::Parameters<
12827                'a,
12828            > as alloy_sol_types::SolType>::Token<'a>;
12829            type Return = votingStakeTableStateReturn;
12830            type ReturnTuple<'a> = (
12831                alloy::sol_types::sol_data::Uint<256>,
12832                BN254::ScalarField,
12833                BN254::ScalarField,
12834                BN254::ScalarField,
12835            );
12836            type ReturnToken<'a> = <Self::ReturnTuple<
12837                'a,
12838            > as alloy_sol_types::SolType>::Token<'a>;
12839            const SIGNATURE: &'static str = "votingStakeTableState()";
12840            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
12841            #[inline]
12842            fn new<'a>(
12843                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12844            ) -> Self {
12845                tuple.into()
12846            }
12847            #[inline]
12848            fn tokenize(&self) -> Self::Token<'_> {
12849                ()
12850            }
12851            #[inline]
12852            fn abi_decode_returns(
12853                data: &[u8],
12854                validate: bool,
12855            ) -> alloy_sol_types::Result<Self::Return> {
12856                <Self::ReturnTuple<
12857                    '_,
12858                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12859                    .map(Into::into)
12860            }
12861        }
12862    };
12863    ///Container for all the [`LightClientV3`](self) function calls.
12864    #[derive()]
12865    pub enum LightClientV3Calls {
12866        #[allow(missing_docs)]
12867        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
12868        #[allow(missing_docs)]
12869        _getVk(_getVkCall),
12870        #[allow(missing_docs)]
12871        authRoot(authRootCall),
12872        #[allow(missing_docs)]
12873        blocksPerEpoch(blocksPerEpochCall),
12874        #[allow(missing_docs)]
12875        currentBlockNumber(currentBlockNumberCall),
12876        #[allow(missing_docs)]
12877        currentEpoch(currentEpochCall),
12878        #[allow(missing_docs)]
12879        disablePermissionedProverMode(disablePermissionedProverModeCall),
12880        #[allow(missing_docs)]
12881        epochFromBlockNumber(epochFromBlockNumberCall),
12882        #[allow(missing_docs)]
12883        epochStartBlock(epochStartBlockCall),
12884        #[allow(missing_docs)]
12885        finalizedState(finalizedStateCall),
12886        #[allow(missing_docs)]
12887        genesisStakeTableState(genesisStakeTableStateCall),
12888        #[allow(missing_docs)]
12889        genesisState(genesisStateCall),
12890        #[allow(missing_docs)]
12891        getHotShotCommitment(getHotShotCommitmentCall),
12892        #[allow(missing_docs)]
12893        getStateHistoryCount(getStateHistoryCountCall),
12894        #[allow(missing_docs)]
12895        getVersion(getVersionCall),
12896        #[allow(missing_docs)]
12897        initialize(initializeCall),
12898        #[allow(missing_docs)]
12899        initializeV2(initializeV2Call),
12900        #[allow(missing_docs)]
12901        initializeV3(initializeV3Call),
12902        #[allow(missing_docs)]
12903        isEpochRoot(isEpochRootCall),
12904        #[allow(missing_docs)]
12905        isGtEpochRoot(isGtEpochRootCall),
12906        #[allow(missing_docs)]
12907        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
12908        #[allow(missing_docs)]
12909        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
12910        #[allow(missing_docs)]
12911        newFinalizedState_0(newFinalizedState_0Call),
12912        #[allow(missing_docs)]
12913        newFinalizedState_1(newFinalizedState_1Call),
12914        #[allow(missing_docs)]
12915        newFinalizedState_2(newFinalizedState_2Call),
12916        #[allow(missing_docs)]
12917        owner(ownerCall),
12918        #[allow(missing_docs)]
12919        permissionedProver(permissionedProverCall),
12920        #[allow(missing_docs)]
12921        proxiableUUID(proxiableUUIDCall),
12922        #[allow(missing_docs)]
12923        renounceOwnership(renounceOwnershipCall),
12924        #[allow(missing_docs)]
12925        setPermissionedProver(setPermissionedProverCall),
12926        #[allow(missing_docs)]
12927        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
12928        #[allow(missing_docs)]
12929        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
12930        #[allow(missing_docs)]
12931        stateHistoryCommitments(stateHistoryCommitmentsCall),
12932        #[allow(missing_docs)]
12933        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
12934        #[allow(missing_docs)]
12935        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
12936        #[allow(missing_docs)]
12937        transferOwnership(transferOwnershipCall),
12938        #[allow(missing_docs)]
12939        updateEpochStartBlock(updateEpochStartBlockCall),
12940        #[allow(missing_docs)]
12941        upgradeToAndCall(upgradeToAndCallCall),
12942        #[allow(missing_docs)]
12943        votingStakeTableState(votingStakeTableStateCall),
12944    }
12945    #[automatically_derived]
12946    impl LightClientV3Calls {
12947        /// All the selectors of this enum.
12948        ///
12949        /// Note that the selectors might not be in the same order as the variants.
12950        /// No guarantees are made about the order of the selectors.
12951        ///
12952        /// Prefer using `SolInterface` methods instead.
12953        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12954            [1u8, 63u8, 165u8, 252u8],
12955            [2u8, 181u8, 146u8, 243u8],
12956            [6u8, 37u8, 225u8, 155u8],
12957            [13u8, 142u8, 110u8, 44u8],
12958            [18u8, 23u8, 60u8, 44u8],
12959            [22u8, 122u8, 198u8, 24u8],
12960            [32u8, 99u8, 212u8, 247u8],
12961            [37u8, 41u8, 116u8, 39u8],
12962            [47u8, 121u8, 136u8, 157u8],
12963            [48u8, 12u8, 137u8, 221u8],
12964            [49u8, 61u8, 247u8, 177u8],
12965            [55u8, 142u8, 194u8, 59u8],
12966            [56u8, 228u8, 84u8, 177u8],
12967            [62u8, 213u8, 91u8, 123u8],
12968            [66u8, 109u8, 49u8, 148u8],
12969            [67u8, 61u8, 186u8, 159u8],
12970            [79u8, 30u8, 242u8, 134u8],
12971            [82u8, 209u8, 144u8, 45u8],
12972            [105u8, 204u8, 106u8, 4u8],
12973            [113u8, 80u8, 24u8, 166u8],
12974            [117u8, 124u8, 55u8, 173u8],
12975            [118u8, 103u8, 24u8, 8u8],
12976            [130u8, 110u8, 65u8, 252u8],
12977            [133u8, 132u8, 210u8, 63u8],
12978            [141u8, 165u8, 203u8, 91u8],
12979            [144u8, 193u8, 67u8, 144u8],
12980            [150u8, 193u8, 202u8, 97u8],
12981            [153u8, 131u8, 40u8, 232u8],
12982            [155u8, 170u8, 60u8, 201u8],
12983            [159u8, 219u8, 84u8, 167u8],
12984            [170u8, 189u8, 93u8, 179u8],
12985            [173u8, 60u8, 177u8, 204u8],
12986            [179u8, 59u8, 196u8, 145u8],
12987            [194u8, 59u8, 158u8, 158u8],
12988            [210u8, 77u8, 147u8, 61u8],
12989            [224u8, 48u8, 51u8, 1u8],
12990            [240u8, 104u8, 32u8, 84u8],
12991            [242u8, 253u8, 227u8, 139u8],
12992            [249u8, 229u8, 13u8, 25u8],
12993        ];
12994    }
12995    #[automatically_derived]
12996    impl alloy_sol_types::SolInterface for LightClientV3Calls {
12997        const NAME: &'static str = "LightClientV3Calls";
12998        const MIN_DATA_LENGTH: usize = 0usize;
12999        const COUNT: usize = 39usize;
13000        #[inline]
13001        fn selector(&self) -> [u8; 4] {
13002            match self {
13003                Self::UPGRADE_INTERFACE_VERSION(_) => {
13004                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
13005                }
13006                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
13007                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
13008                Self::blocksPerEpoch(_) => {
13009                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
13010                }
13011                Self::currentBlockNumber(_) => {
13012                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13013                }
13014                Self::currentEpoch(_) => {
13015                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
13016                }
13017                Self::disablePermissionedProverMode(_) => {
13018                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
13019                }
13020                Self::epochFromBlockNumber(_) => {
13021                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13022                }
13023                Self::epochStartBlock(_) => {
13024                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13025                }
13026                Self::finalizedState(_) => {
13027                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
13028                }
13029                Self::genesisStakeTableState(_) => {
13030                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13031                }
13032                Self::genesisState(_) => {
13033                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
13034                }
13035                Self::getHotShotCommitment(_) => {
13036                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
13037                }
13038                Self::getStateHistoryCount(_) => {
13039                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
13040                }
13041                Self::getVersion(_) => {
13042                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
13043                }
13044                Self::initialize(_) => {
13045                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
13046                }
13047                Self::initializeV2(_) => {
13048                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
13049                }
13050                Self::initializeV3(_) => {
13051                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
13052                }
13053                Self::isEpochRoot(_) => {
13054                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13055                }
13056                Self::isGtEpochRoot(_) => {
13057                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13058                }
13059                Self::isPermissionedProverEnabled(_) => {
13060                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
13061                }
13062                Self::lagOverEscapeHatchThreshold(_) => {
13063                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
13064                }
13065                Self::newFinalizedState_0(_) => {
13066                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
13067                }
13068                Self::newFinalizedState_1(_) => {
13069                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
13070                }
13071                Self::newFinalizedState_2(_) => {
13072                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
13073                }
13074                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
13075                Self::permissionedProver(_) => {
13076                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13077                }
13078                Self::proxiableUUID(_) => {
13079                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
13080                }
13081                Self::renounceOwnership(_) => {
13082                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13083                }
13084                Self::setPermissionedProver(_) => {
13085                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13086                }
13087                Self::setStateHistoryRetentionPeriod(_) => {
13088                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13089                }
13090                Self::setstateHistoryRetentionPeriod(_) => {
13091                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13092                }
13093                Self::stateHistoryCommitments(_) => {
13094                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
13095                }
13096                Self::stateHistoryFirstIndex(_) => {
13097                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
13098                }
13099                Self::stateHistoryRetentionPeriod(_) => {
13100                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13101                }
13102                Self::transferOwnership(_) => {
13103                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13104                }
13105                Self::updateEpochStartBlock(_) => {
13106                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13107                }
13108                Self::upgradeToAndCall(_) => {
13109                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
13110                }
13111                Self::votingStakeTableState(_) => {
13112                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13113                }
13114            }
13115        }
13116        #[inline]
13117        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13118            Self::SELECTORS.get(i).copied()
13119        }
13120        #[inline]
13121        fn valid_selector(selector: [u8; 4]) -> bool {
13122            Self::SELECTORS.binary_search(&selector).is_ok()
13123        }
13124        #[inline]
13125        #[allow(non_snake_case)]
13126        fn abi_decode_raw(
13127            selector: [u8; 4],
13128            data: &[u8],
13129            validate: bool,
13130        ) -> alloy_sol_types::Result<Self> {
13131            static DECODE_SHIMS: &[fn(
13132                &[u8],
13133                bool,
13134            ) -> alloy_sol_types::Result<LightClientV3Calls>] = &[
13135                {
13136                    fn setPermissionedProver(
13137                        data: &[u8],
13138                        validate: bool,
13139                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13140                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13141                                data,
13142                                validate,
13143                            )
13144                            .map(LightClientV3Calls::setPermissionedProver)
13145                    }
13146                    setPermissionedProver
13147                },
13148                {
13149                    fn stateHistoryCommitments(
13150                        data: &[u8],
13151                        validate: bool,
13152                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13153                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13154                                data,
13155                                validate,
13156                            )
13157                            .map(LightClientV3Calls::stateHistoryCommitments)
13158                    }
13159                    stateHistoryCommitments
13160                },
13161                {
13162                    fn votingStakeTableState(
13163                        data: &[u8],
13164                        validate: bool,
13165                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13166                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13167                                data,
13168                                validate,
13169                            )
13170                            .map(LightClientV3Calls::votingStakeTableState)
13171                    }
13172                    votingStakeTableState
13173                },
13174                {
13175                    fn getVersion(
13176                        data: &[u8],
13177                        validate: bool,
13178                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13179                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
13180                                data,
13181                                validate,
13182                            )
13183                            .map(LightClientV3Calls::getVersion)
13184                    }
13185                    getVersion
13186                },
13187                {
13188                    fn _getVk(
13189                        data: &[u8],
13190                        validate: bool,
13191                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13192                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(
13193                                data,
13194                                validate,
13195                            )
13196                            .map(LightClientV3Calls::_getVk)
13197                    }
13198                    _getVk
13199                },
13200                {
13201                    fn updateEpochStartBlock(
13202                        data: &[u8],
13203                        validate: bool,
13204                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13205                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13206                                data,
13207                                validate,
13208                            )
13209                            .map(LightClientV3Calls::updateEpochStartBlock)
13210                    }
13211                    updateEpochStartBlock
13212                },
13213                {
13214                    fn newFinalizedState_0(
13215                        data: &[u8],
13216                        validate: bool,
13217                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13218                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
13219                                data,
13220                                validate,
13221                            )
13222                            .map(LightClientV3Calls::newFinalizedState_0)
13223                    }
13224                    newFinalizedState_0
13225                },
13226                {
13227                    fn isEpochRoot(
13228                        data: &[u8],
13229                        validate: bool,
13230                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13231                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13232                                data,
13233                                validate,
13234                            )
13235                            .map(LightClientV3Calls::isEpochRoot)
13236                    }
13237                    isEpochRoot
13238                },
13239                {
13240                    fn stateHistoryFirstIndex(
13241                        data: &[u8],
13242                        validate: bool,
13243                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13244                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
13245                                data,
13246                                validate,
13247                            )
13248                            .map(LightClientV3Calls::stateHistoryFirstIndex)
13249                    }
13250                    stateHistoryFirstIndex
13251                },
13252                {
13253                    fn isGtEpochRoot(
13254                        data: &[u8],
13255                        validate: bool,
13256                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13257                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13258                                data,
13259                                validate,
13260                            )
13261                            .map(LightClientV3Calls::isGtEpochRoot)
13262                    }
13263                    isGtEpochRoot
13264                },
13265                {
13266                    fn permissionedProver(
13267                        data: &[u8],
13268                        validate: bool,
13269                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13270                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13271                                data,
13272                                validate,
13273                            )
13274                            .map(LightClientV3Calls::permissionedProver)
13275                    }
13276                    permissionedProver
13277                },
13278                {
13279                    fn currentBlockNumber(
13280                        data: &[u8],
13281                        validate: bool,
13282                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13283                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13284                                data,
13285                                validate,
13286                            )
13287                            .map(LightClientV3Calls::currentBlockNumber)
13288                    }
13289                    currentBlockNumber
13290                },
13291                {
13292                    fn initializeV3(
13293                        data: &[u8],
13294                        validate: bool,
13295                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13296                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
13297                                data,
13298                                validate,
13299                            )
13300                            .map(LightClientV3Calls::initializeV3)
13301                    }
13302                    initializeV3
13303                },
13304                {
13305                    fn epochStartBlock(
13306                        data: &[u8],
13307                        validate: bool,
13308                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13309                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13310                                data,
13311                                validate,
13312                            )
13313                            .map(LightClientV3Calls::epochStartBlock)
13314                    }
13315                    epochStartBlock
13316                },
13317                {
13318                    fn genesisStakeTableState(
13319                        data: &[u8],
13320                        validate: bool,
13321                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13322                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13323                                data,
13324                                validate,
13325                            )
13326                            .map(LightClientV3Calls::genesisStakeTableState)
13327                    }
13328                    genesisStakeTableState
13329                },
13330                {
13331                    fn setStateHistoryRetentionPeriod(
13332                        data: &[u8],
13333                        validate: bool,
13334                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13335                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13336                                data,
13337                                validate,
13338                            )
13339                            .map(LightClientV3Calls::setStateHistoryRetentionPeriod)
13340                    }
13341                    setStateHistoryRetentionPeriod
13342                },
13343                {
13344                    fn upgradeToAndCall(
13345                        data: &[u8],
13346                        validate: bool,
13347                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13348                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
13349                                data,
13350                                validate,
13351                            )
13352                            .map(LightClientV3Calls::upgradeToAndCall)
13353                    }
13354                    upgradeToAndCall
13355                },
13356                {
13357                    fn proxiableUUID(
13358                        data: &[u8],
13359                        validate: bool,
13360                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13361                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
13362                                data,
13363                                validate,
13364                            )
13365                            .map(LightClientV3Calls::proxiableUUID)
13366                    }
13367                    proxiableUUID
13368                },
13369                {
13370                    fn disablePermissionedProverMode(
13371                        data: &[u8],
13372                        validate: bool,
13373                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13374                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13375                                data,
13376                                validate,
13377                            )
13378                            .map(LightClientV3Calls::disablePermissionedProverMode)
13379                    }
13380                    disablePermissionedProverMode
13381                },
13382                {
13383                    fn renounceOwnership(
13384                        data: &[u8],
13385                        validate: bool,
13386                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13387                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13388                                data,
13389                                validate,
13390                            )
13391                            .map(LightClientV3Calls::renounceOwnership)
13392                    }
13393                    renounceOwnership
13394                },
13395                {
13396                    fn newFinalizedState_1(
13397                        data: &[u8],
13398                        validate: bool,
13399                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13400                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
13401                                data,
13402                                validate,
13403                            )
13404                            .map(LightClientV3Calls::newFinalizedState_1)
13405                    }
13406                    newFinalizedState_1
13407                },
13408                {
13409                    fn currentEpoch(
13410                        data: &[u8],
13411                        validate: bool,
13412                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13413                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13414                                data,
13415                                validate,
13416                            )
13417                            .map(LightClientV3Calls::currentEpoch)
13418                    }
13419                    currentEpoch
13420                },
13421                {
13422                    fn isPermissionedProverEnabled(
13423                        data: &[u8],
13424                        validate: bool,
13425                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13426                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
13427                                data,
13428                                validate,
13429                            )
13430                            .map(LightClientV3Calls::isPermissionedProverEnabled)
13431                    }
13432                    isPermissionedProverEnabled
13433                },
13434                {
13435                    fn getHotShotCommitment(
13436                        data: &[u8],
13437                        validate: bool,
13438                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13439                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
13440                                data,
13441                                validate,
13442                            )
13443                            .map(LightClientV3Calls::getHotShotCommitment)
13444                    }
13445                    getHotShotCommitment
13446                },
13447                {
13448                    fn owner(
13449                        data: &[u8],
13450                        validate: bool,
13451                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13452                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
13453                                data,
13454                                validate,
13455                            )
13456                            .map(LightClientV3Calls::owner)
13457                    }
13458                    owner
13459                },
13460                {
13461                    fn epochFromBlockNumber(
13462                        data: &[u8],
13463                        validate: bool,
13464                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13465                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13466                                data,
13467                                validate,
13468                            )
13469                            .map(LightClientV3Calls::epochFromBlockNumber)
13470                    }
13471                    epochFromBlockNumber
13472                },
13473                {
13474                    fn setstateHistoryRetentionPeriod(
13475                        data: &[u8],
13476                        validate: bool,
13477                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13478                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13479                                data,
13480                                validate,
13481                            )
13482                            .map(LightClientV3Calls::setstateHistoryRetentionPeriod)
13483                    }
13484                    setstateHistoryRetentionPeriod
13485                },
13486                {
13487                    fn authRoot(
13488                        data: &[u8],
13489                        validate: bool,
13490                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13491                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13492                                data,
13493                                validate,
13494                            )
13495                            .map(LightClientV3Calls::authRoot)
13496                    }
13497                    authRoot
13498                },
13499                {
13500                    fn initialize(
13501                        data: &[u8],
13502                        validate: bool,
13503                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13504                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13505                                data,
13506                                validate,
13507                            )
13508                            .map(LightClientV3Calls::initialize)
13509                    }
13510                    initialize
13511                },
13512                {
13513                    fn finalizedState(
13514                        data: &[u8],
13515                        validate: bool,
13516                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13517                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13518                                data,
13519                                validate,
13520                            )
13521                            .map(LightClientV3Calls::finalizedState)
13522                    }
13523                    finalizedState
13524                },
13525                {
13526                    fn newFinalizedState_2(
13527                        data: &[u8],
13528                        validate: bool,
13529                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13530                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw(
13531                                data,
13532                                validate,
13533                            )
13534                            .map(LightClientV3Calls::newFinalizedState_2)
13535                    }
13536                    newFinalizedState_2
13537                },
13538                {
13539                    fn UPGRADE_INTERFACE_VERSION(
13540                        data: &[u8],
13541                        validate: bool,
13542                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13543                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
13544                                data,
13545                                validate,
13546                            )
13547                            .map(LightClientV3Calls::UPGRADE_INTERFACE_VERSION)
13548                    }
13549                    UPGRADE_INTERFACE_VERSION
13550                },
13551                {
13552                    fn initializeV2(
13553                        data: &[u8],
13554                        validate: bool,
13555                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13556                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
13557                                data,
13558                                validate,
13559                            )
13560                            .map(LightClientV3Calls::initializeV2)
13561                    }
13562                    initializeV2
13563                },
13564                {
13565                    fn stateHistoryRetentionPeriod(
13566                        data: &[u8],
13567                        validate: bool,
13568                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13569                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13570                                data,
13571                                validate,
13572                            )
13573                            .map(LightClientV3Calls::stateHistoryRetentionPeriod)
13574                    }
13575                    stateHistoryRetentionPeriod
13576                },
13577                {
13578                    fn genesisState(
13579                        data: &[u8],
13580                        validate: bool,
13581                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13582                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13583                                data,
13584                                validate,
13585                            )
13586                            .map(LightClientV3Calls::genesisState)
13587                    }
13588                    genesisState
13589                },
13590                {
13591                    fn lagOverEscapeHatchThreshold(
13592                        data: &[u8],
13593                        validate: bool,
13594                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13595                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
13596                                data,
13597                                validate,
13598                            )
13599                            .map(LightClientV3Calls::lagOverEscapeHatchThreshold)
13600                    }
13601                    lagOverEscapeHatchThreshold
13602                },
13603                {
13604                    fn blocksPerEpoch(
13605                        data: &[u8],
13606                        validate: bool,
13607                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13608                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13609                                data,
13610                                validate,
13611                            )
13612                            .map(LightClientV3Calls::blocksPerEpoch)
13613                    }
13614                    blocksPerEpoch
13615                },
13616                {
13617                    fn transferOwnership(
13618                        data: &[u8],
13619                        validate: bool,
13620                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13621                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13622                                data,
13623                                validate,
13624                            )
13625                            .map(LightClientV3Calls::transferOwnership)
13626                    }
13627                    transferOwnership
13628                },
13629                {
13630                    fn getStateHistoryCount(
13631                        data: &[u8],
13632                        validate: bool,
13633                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
13634                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
13635                                data,
13636                                validate,
13637                            )
13638                            .map(LightClientV3Calls::getStateHistoryCount)
13639                    }
13640                    getStateHistoryCount
13641                },
13642            ];
13643            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13644                return Err(
13645                    alloy_sol_types::Error::unknown_selector(
13646                        <Self as alloy_sol_types::SolInterface>::NAME,
13647                        selector,
13648                    ),
13649                );
13650            };
13651            DECODE_SHIMS[idx](data, validate)
13652        }
13653        #[inline]
13654        fn abi_encoded_size(&self) -> usize {
13655            match self {
13656                Self::UPGRADE_INTERFACE_VERSION(inner) => {
13657                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
13658                        inner,
13659                    )
13660                }
13661                Self::_getVk(inner) => {
13662                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13663                }
13664                Self::authRoot(inner) => {
13665                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13666                }
13667                Self::blocksPerEpoch(inner) => {
13668                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
13669                        inner,
13670                    )
13671                }
13672                Self::currentBlockNumber(inner) => {
13673                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
13674                        inner,
13675                    )
13676                }
13677                Self::currentEpoch(inner) => {
13678                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
13679                        inner,
13680                    )
13681                }
13682                Self::disablePermissionedProverMode(inner) => {
13683                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
13684                        inner,
13685                    )
13686                }
13687                Self::epochFromBlockNumber(inner) => {
13688                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
13689                        inner,
13690                    )
13691                }
13692                Self::epochStartBlock(inner) => {
13693                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
13694                        inner,
13695                    )
13696                }
13697                Self::finalizedState(inner) => {
13698                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13699                        inner,
13700                    )
13701                }
13702                Self::genesisStakeTableState(inner) => {
13703                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13704                        inner,
13705                    )
13706                }
13707                Self::genesisState(inner) => {
13708                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13709                        inner,
13710                    )
13711                }
13712                Self::getHotShotCommitment(inner) => {
13713                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
13714                        inner,
13715                    )
13716                }
13717                Self::getStateHistoryCount(inner) => {
13718                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
13719                        inner,
13720                    )
13721                }
13722                Self::getVersion(inner) => {
13723                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13724                }
13725                Self::initialize(inner) => {
13726                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13727                }
13728                Self::initializeV2(inner) => {
13729                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
13730                        inner,
13731                    )
13732                }
13733                Self::initializeV3(inner) => {
13734                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
13735                        inner,
13736                    )
13737                }
13738                Self::isEpochRoot(inner) => {
13739                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
13740                        inner,
13741                    )
13742                }
13743                Self::isGtEpochRoot(inner) => {
13744                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
13745                        inner,
13746                    )
13747                }
13748                Self::isPermissionedProverEnabled(inner) => {
13749                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
13750                        inner,
13751                    )
13752                }
13753                Self::lagOverEscapeHatchThreshold(inner) => {
13754                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
13755                        inner,
13756                    )
13757                }
13758                Self::newFinalizedState_0(inner) => {
13759                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
13760                        inner,
13761                    )
13762                }
13763                Self::newFinalizedState_1(inner) => {
13764                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
13765                        inner,
13766                    )
13767                }
13768                Self::newFinalizedState_2(inner) => {
13769                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
13770                        inner,
13771                    )
13772                }
13773                Self::owner(inner) => {
13774                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
13775                }
13776                Self::permissionedProver(inner) => {
13777                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
13778                        inner,
13779                    )
13780                }
13781                Self::proxiableUUID(inner) => {
13782                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
13783                        inner,
13784                    )
13785                }
13786                Self::renounceOwnership(inner) => {
13787                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
13788                        inner,
13789                    )
13790                }
13791                Self::setPermissionedProver(inner) => {
13792                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
13793                        inner,
13794                    )
13795                }
13796                Self::setStateHistoryRetentionPeriod(inner) => {
13797                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13798                        inner,
13799                    )
13800                }
13801                Self::setstateHistoryRetentionPeriod(inner) => {
13802                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13803                        inner,
13804                    )
13805                }
13806                Self::stateHistoryCommitments(inner) => {
13807                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
13808                        inner,
13809                    )
13810                }
13811                Self::stateHistoryFirstIndex(inner) => {
13812                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
13813                        inner,
13814                    )
13815                }
13816                Self::stateHistoryRetentionPeriod(inner) => {
13817                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
13818                        inner,
13819                    )
13820                }
13821                Self::transferOwnership(inner) => {
13822                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
13823                        inner,
13824                    )
13825                }
13826                Self::updateEpochStartBlock(inner) => {
13827                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
13828                        inner,
13829                    )
13830                }
13831                Self::upgradeToAndCall(inner) => {
13832                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
13833                        inner,
13834                    )
13835                }
13836                Self::votingStakeTableState(inner) => {
13837                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13838                        inner,
13839                    )
13840                }
13841            }
13842        }
13843        #[inline]
13844        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13845            match self {
13846                Self::UPGRADE_INTERFACE_VERSION(inner) => {
13847                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
13848                        inner,
13849                        out,
13850                    )
13851                }
13852                Self::_getVk(inner) => {
13853                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13854                }
13855                Self::authRoot(inner) => {
13856                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
13857                        inner,
13858                        out,
13859                    )
13860                }
13861                Self::blocksPerEpoch(inner) => {
13862                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
13863                        inner,
13864                        out,
13865                    )
13866                }
13867                Self::currentBlockNumber(inner) => {
13868                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
13869                        inner,
13870                        out,
13871                    )
13872                }
13873                Self::currentEpoch(inner) => {
13874                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
13875                        inner,
13876                        out,
13877                    )
13878                }
13879                Self::disablePermissionedProverMode(inner) => {
13880                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
13881                        inner,
13882                        out,
13883                    )
13884                }
13885                Self::epochFromBlockNumber(inner) => {
13886                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
13887                        inner,
13888                        out,
13889                    )
13890                }
13891                Self::epochStartBlock(inner) => {
13892                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
13893                        inner,
13894                        out,
13895                    )
13896                }
13897                Self::finalizedState(inner) => {
13898                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13899                        inner,
13900                        out,
13901                    )
13902                }
13903                Self::genesisStakeTableState(inner) => {
13904                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13905                        inner,
13906                        out,
13907                    )
13908                }
13909                Self::genesisState(inner) => {
13910                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13911                        inner,
13912                        out,
13913                    )
13914                }
13915                Self::getHotShotCommitment(inner) => {
13916                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
13917                        inner,
13918                        out,
13919                    )
13920                }
13921                Self::getStateHistoryCount(inner) => {
13922                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
13923                        inner,
13924                        out,
13925                    )
13926                }
13927                Self::getVersion(inner) => {
13928                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
13929                        inner,
13930                        out,
13931                    )
13932                }
13933                Self::initialize(inner) => {
13934                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
13935                        inner,
13936                        out,
13937                    )
13938                }
13939                Self::initializeV2(inner) => {
13940                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
13941                        inner,
13942                        out,
13943                    )
13944                }
13945                Self::initializeV3(inner) => {
13946                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
13947                        inner,
13948                        out,
13949                    )
13950                }
13951                Self::isEpochRoot(inner) => {
13952                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
13953                        inner,
13954                        out,
13955                    )
13956                }
13957                Self::isGtEpochRoot(inner) => {
13958                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
13959                        inner,
13960                        out,
13961                    )
13962                }
13963                Self::isPermissionedProverEnabled(inner) => {
13964                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
13965                        inner,
13966                        out,
13967                    )
13968                }
13969                Self::lagOverEscapeHatchThreshold(inner) => {
13970                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
13971                        inner,
13972                        out,
13973                    )
13974                }
13975                Self::newFinalizedState_0(inner) => {
13976                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
13977                        inner,
13978                        out,
13979                    )
13980                }
13981                Self::newFinalizedState_1(inner) => {
13982                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
13983                        inner,
13984                        out,
13985                    )
13986                }
13987                Self::newFinalizedState_2(inner) => {
13988                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
13989                        inner,
13990                        out,
13991                    )
13992                }
13993                Self::owner(inner) => {
13994                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13995                }
13996                Self::permissionedProver(inner) => {
13997                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
13998                        inner,
13999                        out,
14000                    )
14001                }
14002                Self::proxiableUUID(inner) => {
14003                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
14004                        inner,
14005                        out,
14006                    )
14007                }
14008                Self::renounceOwnership(inner) => {
14009                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14010                        inner,
14011                        out,
14012                    )
14013                }
14014                Self::setPermissionedProver(inner) => {
14015                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14016                        inner,
14017                        out,
14018                    )
14019                }
14020                Self::setStateHistoryRetentionPeriod(inner) => {
14021                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14022                        inner,
14023                        out,
14024                    )
14025                }
14026                Self::setstateHistoryRetentionPeriod(inner) => {
14027                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14028                        inner,
14029                        out,
14030                    )
14031                }
14032                Self::stateHistoryCommitments(inner) => {
14033                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14034                        inner,
14035                        out,
14036                    )
14037                }
14038                Self::stateHistoryFirstIndex(inner) => {
14039                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
14040                        inner,
14041                        out,
14042                    )
14043                }
14044                Self::stateHistoryRetentionPeriod(inner) => {
14045                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14046                        inner,
14047                        out,
14048                    )
14049                }
14050                Self::transferOwnership(inner) => {
14051                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14052                        inner,
14053                        out,
14054                    )
14055                }
14056                Self::updateEpochStartBlock(inner) => {
14057                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14058                        inner,
14059                        out,
14060                    )
14061                }
14062                Self::upgradeToAndCall(inner) => {
14063                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
14064                        inner,
14065                        out,
14066                    )
14067                }
14068                Self::votingStakeTableState(inner) => {
14069                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14070                        inner,
14071                        out,
14072                    )
14073                }
14074            }
14075        }
14076    }
14077    ///Container for all the [`LightClientV3`](self) custom errors.
14078    #[derive(Debug, PartialEq, Eq, Hash)]
14079    pub enum LightClientV3Errors {
14080        #[allow(missing_docs)]
14081        AddressEmptyCode(AddressEmptyCode),
14082        #[allow(missing_docs)]
14083        DeprecatedApi(DeprecatedApi),
14084        #[allow(missing_docs)]
14085        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
14086        #[allow(missing_docs)]
14087        ERC1967NonPayable(ERC1967NonPayable),
14088        #[allow(missing_docs)]
14089        FailedInnerCall(FailedInnerCall),
14090        #[allow(missing_docs)]
14091        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
14092        #[allow(missing_docs)]
14093        InvalidAddress(InvalidAddress),
14094        #[allow(missing_docs)]
14095        InvalidArgs(InvalidArgs),
14096        #[allow(missing_docs)]
14097        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
14098        #[allow(missing_docs)]
14099        InvalidInitialization(InvalidInitialization),
14100        #[allow(missing_docs)]
14101        InvalidMaxStateHistory(InvalidMaxStateHistory),
14102        #[allow(missing_docs)]
14103        InvalidProof(InvalidProof),
14104        #[allow(missing_docs)]
14105        MissingEpochRootUpdate(MissingEpochRootUpdate),
14106        #[allow(missing_docs)]
14107        NoChangeRequired(NoChangeRequired),
14108        #[allow(missing_docs)]
14109        NotInitializing(NotInitializing),
14110        #[allow(missing_docs)]
14111        OutdatedState(OutdatedState),
14112        #[allow(missing_docs)]
14113        OwnableInvalidOwner(OwnableInvalidOwner),
14114        #[allow(missing_docs)]
14115        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
14116        #[allow(missing_docs)]
14117        ProverNotPermissioned(ProverNotPermissioned),
14118        #[allow(missing_docs)]
14119        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
14120        #[allow(missing_docs)]
14121        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
14122        #[allow(missing_docs)]
14123        WrongStakeTableUsed(WrongStakeTableUsed),
14124    }
14125    #[automatically_derived]
14126    impl LightClientV3Errors {
14127        /// All the selectors of this enum.
14128        ///
14129        /// Note that the selectors might not be in the same order as the variants.
14130        /// No guarantees are made about the order of the selectors.
14131        ///
14132        /// Prefer using `SolInterface` methods instead.
14133        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14134            [5u8, 28u8, 70u8, 239u8],
14135            [8u8, 10u8, 232u8, 217u8],
14136            [9u8, 189u8, 227u8, 57u8],
14137            [17u8, 140u8, 218u8, 167u8],
14138            [20u8, 37u8, 234u8, 66u8],
14139            [30u8, 79u8, 189u8, 247u8],
14140            [76u8, 156u8, 140u8, 227u8],
14141            [78u8, 64u8, 92u8, 141u8],
14142            [81u8, 97u8, 128u8, 137u8],
14143            [97u8, 90u8, 146u8, 100u8],
14144            [153u8, 150u8, 179u8, 21u8],
14145            [161u8, 186u8, 7u8, 238u8],
14146            [163u8, 166u8, 71u8, 128u8],
14147            [168u8, 99u8, 174u8, 201u8],
14148            [170u8, 29u8, 73u8, 164u8],
14149            [176u8, 180u8, 56u8, 119u8],
14150            [179u8, 152u8, 151u8, 159u8],
14151            [215u8, 230u8, 188u8, 248u8],
14152            [224u8, 124u8, 141u8, 186u8],
14153            [230u8, 196u8, 36u8, 123u8],
14154            [244u8, 160u8, 238u8, 224u8],
14155            [249u8, 46u8, 232u8, 169u8],
14156        ];
14157    }
14158    #[automatically_derived]
14159    impl alloy_sol_types::SolInterface for LightClientV3Errors {
14160        const NAME: &'static str = "LightClientV3Errors";
14161        const MIN_DATA_LENGTH: usize = 0usize;
14162        const COUNT: usize = 22usize;
14163        #[inline]
14164        fn selector(&self) -> [u8; 4] {
14165            match self {
14166                Self::AddressEmptyCode(_) => {
14167                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
14168                }
14169                Self::DeprecatedApi(_) => {
14170                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
14171                }
14172                Self::ERC1967InvalidImplementation(_) => {
14173                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
14174                }
14175                Self::ERC1967NonPayable(_) => {
14176                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
14177                }
14178                Self::FailedInnerCall(_) => {
14179                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
14180                }
14181                Self::InsufficientSnapshotHistory(_) => {
14182                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
14183                }
14184                Self::InvalidAddress(_) => {
14185                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
14186                }
14187                Self::InvalidArgs(_) => {
14188                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
14189                }
14190                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
14191                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
14192                }
14193                Self::InvalidInitialization(_) => {
14194                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
14195                }
14196                Self::InvalidMaxStateHistory(_) => {
14197                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
14198                }
14199                Self::InvalidProof(_) => {
14200                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
14201                }
14202                Self::MissingEpochRootUpdate(_) => {
14203                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
14204                }
14205                Self::NoChangeRequired(_) => {
14206                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
14207                }
14208                Self::NotInitializing(_) => {
14209                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
14210                }
14211                Self::OutdatedState(_) => {
14212                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
14213                }
14214                Self::OwnableInvalidOwner(_) => {
14215                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
14216                }
14217                Self::OwnableUnauthorizedAccount(_) => {
14218                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
14219                }
14220                Self::ProverNotPermissioned(_) => {
14221                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
14222                }
14223                Self::UUPSUnauthorizedCallContext(_) => {
14224                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
14225                }
14226                Self::UUPSUnsupportedProxiableUUID(_) => {
14227                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
14228                }
14229                Self::WrongStakeTableUsed(_) => {
14230                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
14231                }
14232            }
14233        }
14234        #[inline]
14235        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14236            Self::SELECTORS.get(i).copied()
14237        }
14238        #[inline]
14239        fn valid_selector(selector: [u8; 4]) -> bool {
14240            Self::SELECTORS.binary_search(&selector).is_ok()
14241        }
14242        #[inline]
14243        #[allow(non_snake_case)]
14244        fn abi_decode_raw(
14245            selector: [u8; 4],
14246            data: &[u8],
14247            validate: bool,
14248        ) -> alloy_sol_types::Result<Self> {
14249            static DECODE_SHIMS: &[fn(
14250                &[u8],
14251                bool,
14252            ) -> alloy_sol_types::Result<LightClientV3Errors>] = &[
14253                {
14254                    fn OutdatedState(
14255                        data: &[u8],
14256                        validate: bool,
14257                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14258                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
14259                                data,
14260                                validate,
14261                            )
14262                            .map(LightClientV3Errors::OutdatedState)
14263                    }
14264                    OutdatedState
14265                },
14266                {
14267                    fn MissingEpochRootUpdate(
14268                        data: &[u8],
14269                        validate: bool,
14270                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14271                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
14272                                data,
14273                                validate,
14274                            )
14275                            .map(LightClientV3Errors::MissingEpochRootUpdate)
14276                    }
14277                    MissingEpochRootUpdate
14278                },
14279                {
14280                    fn InvalidProof(
14281                        data: &[u8],
14282                        validate: bool,
14283                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14284                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(
14285                                data,
14286                                validate,
14287                            )
14288                            .map(LightClientV3Errors::InvalidProof)
14289                    }
14290                    InvalidProof
14291                },
14292                {
14293                    fn OwnableUnauthorizedAccount(
14294                        data: &[u8],
14295                        validate: bool,
14296                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14297                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
14298                                data,
14299                                validate,
14300                            )
14301                            .map(LightClientV3Errors::OwnableUnauthorizedAccount)
14302                    }
14303                    OwnableUnauthorizedAccount
14304                },
14305                {
14306                    fn FailedInnerCall(
14307                        data: &[u8],
14308                        validate: bool,
14309                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14310                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
14311                                data,
14312                                validate,
14313                            )
14314                            .map(LightClientV3Errors::FailedInnerCall)
14315                    }
14316                    FailedInnerCall
14317                },
14318                {
14319                    fn OwnableInvalidOwner(
14320                        data: &[u8],
14321                        validate: bool,
14322                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14323                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
14324                                data,
14325                                validate,
14326                            )
14327                            .map(LightClientV3Errors::OwnableInvalidOwner)
14328                    }
14329                    OwnableInvalidOwner
14330                },
14331                {
14332                    fn ERC1967InvalidImplementation(
14333                        data: &[u8],
14334                        validate: bool,
14335                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14336                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
14337                                data,
14338                                validate,
14339                            )
14340                            .map(LightClientV3Errors::ERC1967InvalidImplementation)
14341                    }
14342                    ERC1967InvalidImplementation
14343                },
14344                {
14345                    fn DeprecatedApi(
14346                        data: &[u8],
14347                        validate: bool,
14348                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14349                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
14350                                data,
14351                                validate,
14352                            )
14353                            .map(LightClientV3Errors::DeprecatedApi)
14354                    }
14355                    DeprecatedApi
14356                },
14357                {
14358                    fn WrongStakeTableUsed(
14359                        data: &[u8],
14360                        validate: bool,
14361                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14362                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
14363                                data,
14364                                validate,
14365                            )
14366                            .map(LightClientV3Errors::WrongStakeTableUsed)
14367                    }
14368                    WrongStakeTableUsed
14369                },
14370                {
14371                    fn InvalidHotShotBlockForCommitmentCheck(
14372                        data: &[u8],
14373                        validate: bool,
14374                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14375                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
14376                                data,
14377                                validate,
14378                            )
14379                            .map(
14380                                LightClientV3Errors::InvalidHotShotBlockForCommitmentCheck,
14381                            )
14382                    }
14383                    InvalidHotShotBlockForCommitmentCheck
14384                },
14385                {
14386                    fn AddressEmptyCode(
14387                        data: &[u8],
14388                        validate: bool,
14389                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14390                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
14391                                data,
14392                                validate,
14393                            )
14394                            .map(LightClientV3Errors::AddressEmptyCode)
14395                    }
14396                    AddressEmptyCode
14397                },
14398                {
14399                    fn InvalidArgs(
14400                        data: &[u8],
14401                        validate: bool,
14402                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14403                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(
14404                                data,
14405                                validate,
14406                            )
14407                            .map(LightClientV3Errors::InvalidArgs)
14408                    }
14409                    InvalidArgs
14410                },
14411                {
14412                    fn ProverNotPermissioned(
14413                        data: &[u8],
14414                        validate: bool,
14415                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14416                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
14417                                data,
14418                                validate,
14419                            )
14420                            .map(LightClientV3Errors::ProverNotPermissioned)
14421                    }
14422                    ProverNotPermissioned
14423                },
14424                {
14425                    fn NoChangeRequired(
14426                        data: &[u8],
14427                        validate: bool,
14428                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14429                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
14430                                data,
14431                                validate,
14432                            )
14433                            .map(LightClientV3Errors::NoChangeRequired)
14434                    }
14435                    NoChangeRequired
14436                },
14437                {
14438                    fn UUPSUnsupportedProxiableUUID(
14439                        data: &[u8],
14440                        validate: bool,
14441                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14442                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
14443                                data,
14444                                validate,
14445                            )
14446                            .map(LightClientV3Errors::UUPSUnsupportedProxiableUUID)
14447                    }
14448                    UUPSUnsupportedProxiableUUID
14449                },
14450                {
14451                    fn InsufficientSnapshotHistory(
14452                        data: &[u8],
14453                        validate: bool,
14454                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14455                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
14456                                data,
14457                                validate,
14458                            )
14459                            .map(LightClientV3Errors::InsufficientSnapshotHistory)
14460                    }
14461                    InsufficientSnapshotHistory
14462                },
14463                {
14464                    fn ERC1967NonPayable(
14465                        data: &[u8],
14466                        validate: bool,
14467                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14468                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
14469                                data,
14470                                validate,
14471                            )
14472                            .map(LightClientV3Errors::ERC1967NonPayable)
14473                    }
14474                    ERC1967NonPayable
14475                },
14476                {
14477                    fn NotInitializing(
14478                        data: &[u8],
14479                        validate: bool,
14480                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14481                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
14482                                data,
14483                                validate,
14484                            )
14485                            .map(LightClientV3Errors::NotInitializing)
14486                    }
14487                    NotInitializing
14488                },
14489                {
14490                    fn UUPSUnauthorizedCallContext(
14491                        data: &[u8],
14492                        validate: bool,
14493                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14494                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
14495                                data,
14496                                validate,
14497                            )
14498                            .map(LightClientV3Errors::UUPSUnauthorizedCallContext)
14499                    }
14500                    UUPSUnauthorizedCallContext
14501                },
14502                {
14503                    fn InvalidAddress(
14504                        data: &[u8],
14505                        validate: bool,
14506                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14507                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
14508                                data,
14509                                validate,
14510                            )
14511                            .map(LightClientV3Errors::InvalidAddress)
14512                    }
14513                    InvalidAddress
14514                },
14515                {
14516                    fn InvalidMaxStateHistory(
14517                        data: &[u8],
14518                        validate: bool,
14519                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14520                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
14521                                data,
14522                                validate,
14523                            )
14524                            .map(LightClientV3Errors::InvalidMaxStateHistory)
14525                    }
14526                    InvalidMaxStateHistory
14527                },
14528                {
14529                    fn InvalidInitialization(
14530                        data: &[u8],
14531                        validate: bool,
14532                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
14533                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
14534                                data,
14535                                validate,
14536                            )
14537                            .map(LightClientV3Errors::InvalidInitialization)
14538                    }
14539                    InvalidInitialization
14540                },
14541            ];
14542            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14543                return Err(
14544                    alloy_sol_types::Error::unknown_selector(
14545                        <Self as alloy_sol_types::SolInterface>::NAME,
14546                        selector,
14547                    ),
14548                );
14549            };
14550            DECODE_SHIMS[idx](data, validate)
14551        }
14552        #[inline]
14553        fn abi_encoded_size(&self) -> usize {
14554            match self {
14555                Self::AddressEmptyCode(inner) => {
14556                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
14557                        inner,
14558                    )
14559                }
14560                Self::DeprecatedApi(inner) => {
14561                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
14562                }
14563                Self::ERC1967InvalidImplementation(inner) => {
14564                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
14565                        inner,
14566                    )
14567                }
14568                Self::ERC1967NonPayable(inner) => {
14569                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
14570                        inner,
14571                    )
14572                }
14573                Self::FailedInnerCall(inner) => {
14574                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
14575                        inner,
14576                    )
14577                }
14578                Self::InsufficientSnapshotHistory(inner) => {
14579                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
14580                        inner,
14581                    )
14582                }
14583                Self::InvalidAddress(inner) => {
14584                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
14585                        inner,
14586                    )
14587                }
14588                Self::InvalidArgs(inner) => {
14589                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
14590                }
14591                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
14592                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
14593                        inner,
14594                    )
14595                }
14596                Self::InvalidInitialization(inner) => {
14597                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
14598                        inner,
14599                    )
14600                }
14601                Self::InvalidMaxStateHistory(inner) => {
14602                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
14603                        inner,
14604                    )
14605                }
14606                Self::InvalidProof(inner) => {
14607                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
14608                }
14609                Self::MissingEpochRootUpdate(inner) => {
14610                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
14611                        inner,
14612                    )
14613                }
14614                Self::NoChangeRequired(inner) => {
14615                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
14616                        inner,
14617                    )
14618                }
14619                Self::NotInitializing(inner) => {
14620                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
14621                        inner,
14622                    )
14623                }
14624                Self::OutdatedState(inner) => {
14625                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
14626                }
14627                Self::OwnableInvalidOwner(inner) => {
14628                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
14629                        inner,
14630                    )
14631                }
14632                Self::OwnableUnauthorizedAccount(inner) => {
14633                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
14634                        inner,
14635                    )
14636                }
14637                Self::ProverNotPermissioned(inner) => {
14638                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
14639                        inner,
14640                    )
14641                }
14642                Self::UUPSUnauthorizedCallContext(inner) => {
14643                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
14644                        inner,
14645                    )
14646                }
14647                Self::UUPSUnsupportedProxiableUUID(inner) => {
14648                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
14649                        inner,
14650                    )
14651                }
14652                Self::WrongStakeTableUsed(inner) => {
14653                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
14654                        inner,
14655                    )
14656                }
14657            }
14658        }
14659        #[inline]
14660        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14661            match self {
14662                Self::AddressEmptyCode(inner) => {
14663                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
14664                        inner,
14665                        out,
14666                    )
14667                }
14668                Self::DeprecatedApi(inner) => {
14669                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
14670                        inner,
14671                        out,
14672                    )
14673                }
14674                Self::ERC1967InvalidImplementation(inner) => {
14675                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
14676                        inner,
14677                        out,
14678                    )
14679                }
14680                Self::ERC1967NonPayable(inner) => {
14681                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
14682                        inner,
14683                        out,
14684                    )
14685                }
14686                Self::FailedInnerCall(inner) => {
14687                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
14688                        inner,
14689                        out,
14690                    )
14691                }
14692                Self::InsufficientSnapshotHistory(inner) => {
14693                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
14694                        inner,
14695                        out,
14696                    )
14697                }
14698                Self::InvalidAddress(inner) => {
14699                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
14700                        inner,
14701                        out,
14702                    )
14703                }
14704                Self::InvalidArgs(inner) => {
14705                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
14706                        inner,
14707                        out,
14708                    )
14709                }
14710                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
14711                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
14712                        inner,
14713                        out,
14714                    )
14715                }
14716                Self::InvalidInitialization(inner) => {
14717                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
14718                        inner,
14719                        out,
14720                    )
14721                }
14722                Self::InvalidMaxStateHistory(inner) => {
14723                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
14724                        inner,
14725                        out,
14726                    )
14727                }
14728                Self::InvalidProof(inner) => {
14729                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
14730                        inner,
14731                        out,
14732                    )
14733                }
14734                Self::MissingEpochRootUpdate(inner) => {
14735                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
14736                        inner,
14737                        out,
14738                    )
14739                }
14740                Self::NoChangeRequired(inner) => {
14741                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
14742                        inner,
14743                        out,
14744                    )
14745                }
14746                Self::NotInitializing(inner) => {
14747                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
14748                        inner,
14749                        out,
14750                    )
14751                }
14752                Self::OutdatedState(inner) => {
14753                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
14754                        inner,
14755                        out,
14756                    )
14757                }
14758                Self::OwnableInvalidOwner(inner) => {
14759                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
14760                        inner,
14761                        out,
14762                    )
14763                }
14764                Self::OwnableUnauthorizedAccount(inner) => {
14765                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
14766                        inner,
14767                        out,
14768                    )
14769                }
14770                Self::ProverNotPermissioned(inner) => {
14771                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
14772                        inner,
14773                        out,
14774                    )
14775                }
14776                Self::UUPSUnauthorizedCallContext(inner) => {
14777                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
14778                        inner,
14779                        out,
14780                    )
14781                }
14782                Self::UUPSUnsupportedProxiableUUID(inner) => {
14783                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
14784                        inner,
14785                        out,
14786                    )
14787                }
14788                Self::WrongStakeTableUsed(inner) => {
14789                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
14790                        inner,
14791                        out,
14792                    )
14793                }
14794            }
14795        }
14796    }
14797    ///Container for all the [`LightClientV3`](self) events.
14798    #[derive(Debug, PartialEq, Eq, Hash)]
14799    pub enum LightClientV3Events {
14800        #[allow(missing_docs)]
14801        Initialized(Initialized),
14802        #[allow(missing_docs)]
14803        NewEpoch(NewEpoch),
14804        #[allow(missing_docs)]
14805        NewState(NewState),
14806        #[allow(missing_docs)]
14807        OwnershipTransferred(OwnershipTransferred),
14808        #[allow(missing_docs)]
14809        PermissionedProverNotRequired(PermissionedProverNotRequired),
14810        #[allow(missing_docs)]
14811        PermissionedProverRequired(PermissionedProverRequired),
14812        #[allow(missing_docs)]
14813        Upgrade(Upgrade),
14814        #[allow(missing_docs)]
14815        Upgraded(Upgraded),
14816    }
14817    #[automatically_derived]
14818    impl LightClientV3Events {
14819        /// All the selectors of this enum.
14820        ///
14821        /// Note that the selectors might not be in the same order as the variants.
14822        /// No guarantees are made about the order of the selectors.
14823        ///
14824        /// Prefer using `SolInterface` methods instead.
14825        pub const SELECTORS: &'static [[u8; 32usize]] = &[
14826            [
14827                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
14828                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
14829                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
14830            ],
14831            [
14832                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
14833                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
14834                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
14835            ],
14836            [
14837                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
14838                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
14839                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
14840            ],
14841            [
14842                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
14843                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
14844                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
14845            ],
14846            [
14847                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
14848                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
14849                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
14850            ],
14851            [
14852                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
14853                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
14854                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
14855            ],
14856            [
14857                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
14858                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
14859                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
14860            ],
14861            [
14862                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
14863                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
14864                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
14865            ],
14866        ];
14867    }
14868    #[automatically_derived]
14869    impl alloy_sol_types::SolEventInterface for LightClientV3Events {
14870        const NAME: &'static str = "LightClientV3Events";
14871        const COUNT: usize = 8usize;
14872        fn decode_raw_log(
14873            topics: &[alloy_sol_types::Word],
14874            data: &[u8],
14875            validate: bool,
14876        ) -> alloy_sol_types::Result<Self> {
14877            match topics.first().copied() {
14878                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14879                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
14880                            topics,
14881                            data,
14882                            validate,
14883                        )
14884                        .map(Self::Initialized)
14885                }
14886                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14887                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(
14888                            topics,
14889                            data,
14890                            validate,
14891                        )
14892                        .map(Self::NewEpoch)
14893                }
14894                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14895                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(
14896                            topics,
14897                            data,
14898                            validate,
14899                        )
14900                        .map(Self::NewState)
14901                }
14902                Some(
14903                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14904                ) => {
14905                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
14906                            topics,
14907                            data,
14908                            validate,
14909                        )
14910                        .map(Self::OwnershipTransferred)
14911                }
14912                Some(
14913                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14914                ) => {
14915                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14916                            topics,
14917                            data,
14918                            validate,
14919                        )
14920                        .map(Self::PermissionedProverNotRequired)
14921                }
14922                Some(
14923                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14924                ) => {
14925                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14926                            topics,
14927                            data,
14928                            validate,
14929                        )
14930                        .map(Self::PermissionedProverRequired)
14931                }
14932                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14933                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(
14934                            topics,
14935                            data,
14936                            validate,
14937                        )
14938                        .map(Self::Upgrade)
14939                }
14940                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14941                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
14942                            topics,
14943                            data,
14944                            validate,
14945                        )
14946                        .map(Self::Upgraded)
14947                }
14948                _ => {
14949                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
14950                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
14951                        log: alloy_sol_types::private::Box::new(
14952                            alloy_sol_types::private::LogData::new_unchecked(
14953                                topics.to_vec(),
14954                                data.to_vec().into(),
14955                            ),
14956                        ),
14957                    })
14958                }
14959            }
14960        }
14961    }
14962    #[automatically_derived]
14963    impl alloy_sol_types::private::IntoLogData for LightClientV3Events {
14964        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
14965            match self {
14966                Self::Initialized(inner) => {
14967                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14968                }
14969                Self::NewEpoch(inner) => {
14970                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14971                }
14972                Self::NewState(inner) => {
14973                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14974                }
14975                Self::OwnershipTransferred(inner) => {
14976                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14977                }
14978                Self::PermissionedProverNotRequired(inner) => {
14979                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14980                }
14981                Self::PermissionedProverRequired(inner) => {
14982                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14983                }
14984                Self::Upgrade(inner) => {
14985                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14986                }
14987                Self::Upgraded(inner) => {
14988                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14989                }
14990            }
14991        }
14992        fn into_log_data(self) -> alloy_sol_types::private::LogData {
14993            match self {
14994                Self::Initialized(inner) => {
14995                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14996                }
14997                Self::NewEpoch(inner) => {
14998                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14999                }
15000                Self::NewState(inner) => {
15001                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15002                }
15003                Self::OwnershipTransferred(inner) => {
15004                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15005                }
15006                Self::PermissionedProverNotRequired(inner) => {
15007                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15008                }
15009                Self::PermissionedProverRequired(inner) => {
15010                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15011                }
15012                Self::Upgrade(inner) => {
15013                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15014                }
15015                Self::Upgraded(inner) => {
15016                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15017                }
15018            }
15019        }
15020    }
15021    use alloy::contract as alloy_contract;
15022    /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
15023
15024See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
15025    #[inline]
15026    pub const fn new<
15027        T: alloy_contract::private::Transport + ::core::clone::Clone,
15028        P: alloy_contract::private::Provider<T, N>,
15029        N: alloy_contract::private::Network,
15030    >(
15031        address: alloy_sol_types::private::Address,
15032        provider: P,
15033    ) -> LightClientV3Instance<T, P, N> {
15034        LightClientV3Instance::<T, P, N>::new(address, provider)
15035    }
15036    /**Deploys this contract using the given `provider` and constructor arguments, if any.
15037
15038Returns a new instance of the contract, if the deployment was successful.
15039
15040For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15041    #[inline]
15042    pub fn deploy<
15043        T: alloy_contract::private::Transport + ::core::clone::Clone,
15044        P: alloy_contract::private::Provider<T, N>,
15045        N: alloy_contract::private::Network,
15046    >(
15047        provider: P,
15048    ) -> impl ::core::future::Future<
15049        Output = alloy_contract::Result<LightClientV3Instance<T, P, N>>,
15050    > {
15051        LightClientV3Instance::<T, P, N>::deploy(provider)
15052    }
15053    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15054and constructor arguments, if any.
15055
15056This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15057the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15058    #[inline]
15059    pub fn deploy_builder<
15060        T: alloy_contract::private::Transport + ::core::clone::Clone,
15061        P: alloy_contract::private::Provider<T, N>,
15062        N: alloy_contract::private::Network,
15063    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
15064        LightClientV3Instance::<T, P, N>::deploy_builder(provider)
15065    }
15066    /**A [`LightClientV3`](self) instance.
15067
15068Contains type-safe methods for interacting with an on-chain instance of the
15069[`LightClientV3`](self) contract located at a given `address`, using a given
15070provider `P`.
15071
15072If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
15073documentation on how to provide it), the `deploy` and `deploy_builder` methods can
15074be used to deploy a new instance of the contract.
15075
15076See the [module-level documentation](self) for all the available methods.*/
15077    #[derive(Clone)]
15078    pub struct LightClientV3Instance<T, P, N = alloy_contract::private::Ethereum> {
15079        address: alloy_sol_types::private::Address,
15080        provider: P,
15081        _network_transport: ::core::marker::PhantomData<(N, T)>,
15082    }
15083    #[automatically_derived]
15084    impl<T, P, N> ::core::fmt::Debug for LightClientV3Instance<T, P, N> {
15085        #[inline]
15086        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
15087            f.debug_tuple("LightClientV3Instance").field(&self.address).finish()
15088        }
15089    }
15090    /// Instantiation and getters/setters.
15091    #[automatically_derived]
15092    impl<
15093        T: alloy_contract::private::Transport + ::core::clone::Clone,
15094        P: alloy_contract::private::Provider<T, N>,
15095        N: alloy_contract::private::Network,
15096    > LightClientV3Instance<T, P, N> {
15097        /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
15098
15099See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
15100        #[inline]
15101        pub const fn new(
15102            address: alloy_sol_types::private::Address,
15103            provider: P,
15104        ) -> Self {
15105            Self {
15106                address,
15107                provider,
15108                _network_transport: ::core::marker::PhantomData,
15109            }
15110        }
15111        /**Deploys this contract using the given `provider` and constructor arguments, if any.
15112
15113Returns a new instance of the contract, if the deployment was successful.
15114
15115For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15116        #[inline]
15117        pub async fn deploy(
15118            provider: P,
15119        ) -> alloy_contract::Result<LightClientV3Instance<T, P, N>> {
15120            let call_builder = Self::deploy_builder(provider);
15121            let contract_address = call_builder.deploy().await?;
15122            Ok(Self::new(contract_address, call_builder.provider))
15123        }
15124        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15125and constructor arguments, if any.
15126
15127This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15128the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15129        #[inline]
15130        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
15131            alloy_contract::RawCallBuilder::new_raw_deploy(
15132                provider,
15133                ::core::clone::Clone::clone(&BYTECODE),
15134            )
15135        }
15136        /// Returns a reference to the address.
15137        #[inline]
15138        pub const fn address(&self) -> &alloy_sol_types::private::Address {
15139            &self.address
15140        }
15141        /// Sets the address.
15142        #[inline]
15143        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
15144            self.address = address;
15145        }
15146        /// Sets the address and returns `self`.
15147        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
15148            self.set_address(address);
15149            self
15150        }
15151        /// Returns a reference to the provider.
15152        #[inline]
15153        pub const fn provider(&self) -> &P {
15154            &self.provider
15155        }
15156    }
15157    impl<T, P: ::core::clone::Clone, N> LightClientV3Instance<T, &P, N> {
15158        /// Clones the provider and returns a new instance with the cloned provider.
15159        #[inline]
15160        pub fn with_cloned_provider(self) -> LightClientV3Instance<T, P, N> {
15161            LightClientV3Instance {
15162                address: self.address,
15163                provider: ::core::clone::Clone::clone(&self.provider),
15164                _network_transport: ::core::marker::PhantomData,
15165            }
15166        }
15167    }
15168    /// Function calls.
15169    #[automatically_derived]
15170    impl<
15171        T: alloy_contract::private::Transport + ::core::clone::Clone,
15172        P: alloy_contract::private::Provider<T, N>,
15173        N: alloy_contract::private::Network,
15174    > LightClientV3Instance<T, P, N> {
15175        /// Creates a new call builder using this contract instance's provider and address.
15176        ///
15177        /// Note that the call can be any function call, not just those defined in this
15178        /// contract. Prefer using the other methods for building type-safe contract calls.
15179        pub fn call_builder<C: alloy_sol_types::SolCall>(
15180            &self,
15181            call: &C,
15182        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
15183            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
15184        }
15185        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
15186        pub fn UPGRADE_INTERFACE_VERSION(
15187            &self,
15188        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
15189            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
15190        }
15191        ///Creates a new call builder for the [`_getVk`] function.
15192        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
15193            self.call_builder(&_getVkCall {})
15194        }
15195        ///Creates a new call builder for the [`authRoot`] function.
15196        pub fn authRoot(
15197            &self,
15198        ) -> alloy_contract::SolCallBuilder<T, &P, authRootCall, N> {
15199            self.call_builder(&authRootCall {})
15200        }
15201        ///Creates a new call builder for the [`blocksPerEpoch`] function.
15202        pub fn blocksPerEpoch(
15203            &self,
15204        ) -> alloy_contract::SolCallBuilder<T, &P, blocksPerEpochCall, N> {
15205            self.call_builder(&blocksPerEpochCall {})
15206        }
15207        ///Creates a new call builder for the [`currentBlockNumber`] function.
15208        pub fn currentBlockNumber(
15209            &self,
15210        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
15211            self.call_builder(&currentBlockNumberCall {})
15212        }
15213        ///Creates a new call builder for the [`currentEpoch`] function.
15214        pub fn currentEpoch(
15215            &self,
15216        ) -> alloy_contract::SolCallBuilder<T, &P, currentEpochCall, N> {
15217            self.call_builder(&currentEpochCall {})
15218        }
15219        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
15220        pub fn disablePermissionedProverMode(
15221            &self,
15222        ) -> alloy_contract::SolCallBuilder<
15223            T,
15224            &P,
15225            disablePermissionedProverModeCall,
15226            N,
15227        > {
15228            self.call_builder(
15229                &disablePermissionedProverModeCall {
15230                },
15231            )
15232        }
15233        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
15234        pub fn epochFromBlockNumber(
15235            &self,
15236            _blockNum: u64,
15237            _blocksPerEpoch: u64,
15238        ) -> alloy_contract::SolCallBuilder<T, &P, epochFromBlockNumberCall, N> {
15239            self.call_builder(
15240                &epochFromBlockNumberCall {
15241                    _blockNum,
15242                    _blocksPerEpoch,
15243                },
15244            )
15245        }
15246        ///Creates a new call builder for the [`epochStartBlock`] function.
15247        pub fn epochStartBlock(
15248            &self,
15249        ) -> alloy_contract::SolCallBuilder<T, &P, epochStartBlockCall, N> {
15250            self.call_builder(&epochStartBlockCall {})
15251        }
15252        ///Creates a new call builder for the [`finalizedState`] function.
15253        pub fn finalizedState(
15254            &self,
15255        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
15256            self.call_builder(&finalizedStateCall {})
15257        }
15258        ///Creates a new call builder for the [`genesisStakeTableState`] function.
15259        pub fn genesisStakeTableState(
15260            &self,
15261        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
15262            self.call_builder(&genesisStakeTableStateCall {})
15263        }
15264        ///Creates a new call builder for the [`genesisState`] function.
15265        pub fn genesisState(
15266            &self,
15267        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
15268            self.call_builder(&genesisStateCall {})
15269        }
15270        ///Creates a new call builder for the [`getHotShotCommitment`] function.
15271        pub fn getHotShotCommitment(
15272            &self,
15273            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
15274        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
15275            self.call_builder(
15276                &getHotShotCommitmentCall {
15277                    hotShotBlockHeight,
15278                },
15279            )
15280        }
15281        ///Creates a new call builder for the [`getStateHistoryCount`] function.
15282        pub fn getStateHistoryCount(
15283            &self,
15284        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
15285            self.call_builder(&getStateHistoryCountCall {})
15286        }
15287        ///Creates a new call builder for the [`getVersion`] function.
15288        pub fn getVersion(
15289            &self,
15290        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
15291            self.call_builder(&getVersionCall {})
15292        }
15293        ///Creates a new call builder for the [`initialize`] function.
15294        pub fn initialize(
15295            &self,
15296            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
15297            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
15298            _stateHistoryRetentionPeriod: u32,
15299            owner: alloy::sol_types::private::Address,
15300        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
15301            self.call_builder(
15302                &initializeCall {
15303                    _genesis,
15304                    _genesisStakeTableState,
15305                    _stateHistoryRetentionPeriod,
15306                    owner,
15307                },
15308            )
15309        }
15310        ///Creates a new call builder for the [`initializeV2`] function.
15311        pub fn initializeV2(
15312            &self,
15313            _blocksPerEpoch: u64,
15314            _epochStartBlock: u64,
15315        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV2Call, N> {
15316            self.call_builder(
15317                &initializeV2Call {
15318                    _blocksPerEpoch,
15319                    _epochStartBlock,
15320                },
15321            )
15322        }
15323        ///Creates a new call builder for the [`initializeV3`] function.
15324        pub fn initializeV3(
15325            &self,
15326        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV3Call, N> {
15327            self.call_builder(&initializeV3Call {})
15328        }
15329        ///Creates a new call builder for the [`isEpochRoot`] function.
15330        pub fn isEpochRoot(
15331            &self,
15332            blockHeight: u64,
15333        ) -> alloy_contract::SolCallBuilder<T, &P, isEpochRootCall, N> {
15334            self.call_builder(&isEpochRootCall { blockHeight })
15335        }
15336        ///Creates a new call builder for the [`isGtEpochRoot`] function.
15337        pub fn isGtEpochRoot(
15338            &self,
15339            blockHeight: u64,
15340        ) -> alloy_contract::SolCallBuilder<T, &P, isGtEpochRootCall, N> {
15341            self.call_builder(&isGtEpochRootCall { blockHeight })
15342        }
15343        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
15344        pub fn isPermissionedProverEnabled(
15345            &self,
15346        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
15347            self.call_builder(&isPermissionedProverEnabledCall {})
15348        }
15349        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
15350        pub fn lagOverEscapeHatchThreshold(
15351            &self,
15352            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
15353            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
15354        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
15355            self.call_builder(
15356                &lagOverEscapeHatchThresholdCall {
15357                    blockNumber,
15358                    blockThreshold,
15359                },
15360            )
15361        }
15362        ///Creates a new call builder for the [`newFinalizedState_0`] function.
15363        pub fn newFinalizedState_0(
15364            &self,
15365            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
15366            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
15367        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_0Call, N> {
15368            self.call_builder(&newFinalizedState_0Call { _0, _1 })
15369        }
15370        ///Creates a new call builder for the [`newFinalizedState_1`] function.
15371        pub fn newFinalizedState_1(
15372            &self,
15373            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
15374            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
15375            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
15376        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_1Call, N> {
15377            self.call_builder(
15378                &newFinalizedState_1Call {
15379                    _0,
15380                    _1,
15381                    _2,
15382                },
15383            )
15384        }
15385        ///Creates a new call builder for the [`newFinalizedState_2`] function.
15386        pub fn newFinalizedState_2(
15387            &self,
15388            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
15389            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
15390            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
15391            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
15392        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_2Call, N> {
15393            self.call_builder(
15394                &newFinalizedState_2Call {
15395                    newState,
15396                    nextStakeTable,
15397                    newAuthRoot,
15398                    proof,
15399                },
15400            )
15401        }
15402        ///Creates a new call builder for the [`owner`] function.
15403        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
15404            self.call_builder(&ownerCall {})
15405        }
15406        ///Creates a new call builder for the [`permissionedProver`] function.
15407        pub fn permissionedProver(
15408            &self,
15409        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
15410            self.call_builder(&permissionedProverCall {})
15411        }
15412        ///Creates a new call builder for the [`proxiableUUID`] function.
15413        pub fn proxiableUUID(
15414            &self,
15415        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
15416            self.call_builder(&proxiableUUIDCall {})
15417        }
15418        ///Creates a new call builder for the [`renounceOwnership`] function.
15419        pub fn renounceOwnership(
15420            &self,
15421        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
15422            self.call_builder(&renounceOwnershipCall {})
15423        }
15424        ///Creates a new call builder for the [`setPermissionedProver`] function.
15425        pub fn setPermissionedProver(
15426            &self,
15427            prover: alloy::sol_types::private::Address,
15428        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
15429            self.call_builder(
15430                &setPermissionedProverCall {
15431                    prover,
15432                },
15433            )
15434        }
15435        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
15436        pub fn setStateHistoryRetentionPeriod(
15437            &self,
15438            historySeconds: u32,
15439        ) -> alloy_contract::SolCallBuilder<
15440            T,
15441            &P,
15442            setStateHistoryRetentionPeriodCall,
15443            N,
15444        > {
15445            self.call_builder(
15446                &setStateHistoryRetentionPeriodCall {
15447                    historySeconds,
15448                },
15449            )
15450        }
15451        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
15452        pub fn setstateHistoryRetentionPeriod(
15453            &self,
15454            historySeconds: u32,
15455        ) -> alloy_contract::SolCallBuilder<
15456            T,
15457            &P,
15458            setstateHistoryRetentionPeriodCall,
15459            N,
15460        > {
15461            self.call_builder(
15462                &setstateHistoryRetentionPeriodCall {
15463                    historySeconds,
15464                },
15465            )
15466        }
15467        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
15468        pub fn stateHistoryCommitments(
15469            &self,
15470            _0: alloy::sol_types::private::primitives::aliases::U256,
15471        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
15472            self.call_builder(&stateHistoryCommitmentsCall { _0 })
15473        }
15474        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
15475        pub fn stateHistoryFirstIndex(
15476            &self,
15477        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
15478            self.call_builder(&stateHistoryFirstIndexCall {})
15479        }
15480        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
15481        pub fn stateHistoryRetentionPeriod(
15482            &self,
15483        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
15484            self.call_builder(&stateHistoryRetentionPeriodCall {})
15485        }
15486        ///Creates a new call builder for the [`transferOwnership`] function.
15487        pub fn transferOwnership(
15488            &self,
15489            newOwner: alloy::sol_types::private::Address,
15490        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
15491            self.call_builder(&transferOwnershipCall { newOwner })
15492        }
15493        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
15494        pub fn updateEpochStartBlock(
15495            &self,
15496            newEpochStartBlock: u64,
15497        ) -> alloy_contract::SolCallBuilder<T, &P, updateEpochStartBlockCall, N> {
15498            self.call_builder(
15499                &updateEpochStartBlockCall {
15500                    newEpochStartBlock,
15501                },
15502            )
15503        }
15504        ///Creates a new call builder for the [`upgradeToAndCall`] function.
15505        pub fn upgradeToAndCall(
15506            &self,
15507            newImplementation: alloy::sol_types::private::Address,
15508            data: alloy::sol_types::private::Bytes,
15509        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
15510            self.call_builder(
15511                &upgradeToAndCallCall {
15512                    newImplementation,
15513                    data,
15514                },
15515            )
15516        }
15517        ///Creates a new call builder for the [`votingStakeTableState`] function.
15518        pub fn votingStakeTableState(
15519            &self,
15520        ) -> alloy_contract::SolCallBuilder<T, &P, votingStakeTableStateCall, N> {
15521            self.call_builder(&votingStakeTableStateCall {})
15522        }
15523    }
15524    /// Event filters.
15525    #[automatically_derived]
15526    impl<
15527        T: alloy_contract::private::Transport + ::core::clone::Clone,
15528        P: alloy_contract::private::Provider<T, N>,
15529        N: alloy_contract::private::Network,
15530    > LightClientV3Instance<T, P, N> {
15531        /// Creates a new event filter using this contract instance's provider and address.
15532        ///
15533        /// Note that the type can be any event, not just those defined in this contract.
15534        /// Prefer using the other methods for building type-safe event filters.
15535        pub fn event_filter<E: alloy_sol_types::SolEvent>(
15536            &self,
15537        ) -> alloy_contract::Event<T, &P, E, N> {
15538            alloy_contract::Event::new_sol(&self.provider, &self.address)
15539        }
15540        ///Creates a new event filter for the [`Initialized`] event.
15541        pub fn Initialized_filter(
15542            &self,
15543        ) -> alloy_contract::Event<T, &P, Initialized, N> {
15544            self.event_filter::<Initialized>()
15545        }
15546        ///Creates a new event filter for the [`NewEpoch`] event.
15547        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<T, &P, NewEpoch, N> {
15548            self.event_filter::<NewEpoch>()
15549        }
15550        ///Creates a new event filter for the [`NewState`] event.
15551        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
15552            self.event_filter::<NewState>()
15553        }
15554        ///Creates a new event filter for the [`OwnershipTransferred`] event.
15555        pub fn OwnershipTransferred_filter(
15556            &self,
15557        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
15558            self.event_filter::<OwnershipTransferred>()
15559        }
15560        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
15561        pub fn PermissionedProverNotRequired_filter(
15562            &self,
15563        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
15564            self.event_filter::<PermissionedProverNotRequired>()
15565        }
15566        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
15567        pub fn PermissionedProverRequired_filter(
15568            &self,
15569        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
15570            self.event_filter::<PermissionedProverRequired>()
15571        }
15572        ///Creates a new event filter for the [`Upgrade`] event.
15573        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
15574            self.event_filter::<Upgrade>()
15575        }
15576        ///Creates a new event filter for the [`Upgraded`] event.
15577        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
15578            self.event_filter::<Upgraded>()
15579        }
15580    }
15581}