hotshot_contract_adapter/bindings/
lightclient.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/**
2218
2219Generated by the following Solidity interface...
2220```solidity
2221library BN254 {
2222    type BaseField is uint256;
2223    type ScalarField is uint256;
2224    struct G1Point {
2225        BaseField x;
2226        BaseField y;
2227    }
2228}
2229
2230library IPlonkVerifier {
2231    struct PlonkProof {
2232        BN254.G1Point wire0;
2233        BN254.G1Point wire1;
2234        BN254.G1Point wire2;
2235        BN254.G1Point wire3;
2236        BN254.G1Point wire4;
2237        BN254.G1Point prodPerm;
2238        BN254.G1Point split0;
2239        BN254.G1Point split1;
2240        BN254.G1Point split2;
2241        BN254.G1Point split3;
2242        BN254.G1Point split4;
2243        BN254.G1Point zeta;
2244        BN254.G1Point zetaOmega;
2245        BN254.ScalarField wireEval0;
2246        BN254.ScalarField wireEval1;
2247        BN254.ScalarField wireEval2;
2248        BN254.ScalarField wireEval3;
2249        BN254.ScalarField wireEval4;
2250        BN254.ScalarField sigmaEval0;
2251        BN254.ScalarField sigmaEval1;
2252        BN254.ScalarField sigmaEval2;
2253        BN254.ScalarField sigmaEval3;
2254        BN254.ScalarField prodPermZetaOmegaEval;
2255    }
2256    struct VerifyingKey {
2257        uint256 domainSize;
2258        uint256 numInputs;
2259        BN254.G1Point sigma0;
2260        BN254.G1Point sigma1;
2261        BN254.G1Point sigma2;
2262        BN254.G1Point sigma3;
2263        BN254.G1Point sigma4;
2264        BN254.G1Point q1;
2265        BN254.G1Point q2;
2266        BN254.G1Point q3;
2267        BN254.G1Point q4;
2268        BN254.G1Point qM12;
2269        BN254.G1Point qM34;
2270        BN254.G1Point qO;
2271        BN254.G1Point qC;
2272        BN254.G1Point qH1;
2273        BN254.G1Point qH2;
2274        BN254.G1Point qH3;
2275        BN254.G1Point qH4;
2276        BN254.G1Point qEcc;
2277        bytes32 g2LSB;
2278        bytes32 g2MSB;
2279    }
2280}
2281
2282interface LightClient {
2283    struct LightClientState {
2284        uint64 viewNum;
2285        uint64 blockHeight;
2286        BN254.ScalarField blockCommRoot;
2287    }
2288    struct StakeTableState {
2289        uint256 threshold;
2290        BN254.ScalarField blsKeyComm;
2291        BN254.ScalarField schnorrKeyComm;
2292        BN254.ScalarField amountComm;
2293    }
2294
2295    error AddressEmptyCode(address target);
2296    error ERC1967InvalidImplementation(address implementation);
2297    error ERC1967NonPayable();
2298    error FailedInnerCall();
2299    error InsufficientSnapshotHistory();
2300    error InvalidAddress();
2301    error InvalidArgs();
2302    error InvalidHotShotBlockForCommitmentCheck();
2303    error InvalidInitialization();
2304    error InvalidMaxStateHistory();
2305    error InvalidProof();
2306    error NoChangeRequired();
2307    error NotInitializing();
2308    error OutdatedState();
2309    error OwnableInvalidOwner(address owner);
2310    error OwnableUnauthorizedAccount(address account);
2311    error ProverNotPermissioned();
2312    error UUPSUnauthorizedCallContext();
2313    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2314    error WrongStakeTableUsed();
2315
2316    event Initialized(uint64 version);
2317    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2318    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2319    event PermissionedProverNotRequired();
2320    event PermissionedProverRequired(address permissionedProver);
2321    event Upgrade(address implementation);
2322    event Upgraded(address indexed implementation);
2323
2324    constructor();
2325
2326    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2327    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2328    function currentBlockNumber() external view returns (uint256);
2329    function disablePermissionedProverMode() external;
2330    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2331    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2332    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2333    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2334    function getStateHistoryCount() external view returns (uint256);
2335    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2336    function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2337    function isPermissionedProverEnabled() external view returns (bool);
2338    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
2339    function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
2340    function owner() external view returns (address);
2341    function permissionedProver() external view returns (address);
2342    function proxiableUUID() external view returns (bytes32);
2343    function renounceOwnership() external;
2344    function setPermissionedProver(address prover) external;
2345    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2346    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2347    function stateHistoryFirstIndex() external view returns (uint64);
2348    function stateHistoryRetentionPeriod() external view returns (uint32);
2349    function transferOwnership(address newOwner) external;
2350    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2351}
2352```
2353
2354...which was generated by the following JSON ABI:
2355```json
2356[
2357  {
2358    "type": "constructor",
2359    "inputs": [],
2360    "stateMutability": "nonpayable"
2361  },
2362  {
2363    "type": "function",
2364    "name": "UPGRADE_INTERFACE_VERSION",
2365    "inputs": [],
2366    "outputs": [
2367      {
2368        "name": "",
2369        "type": "string",
2370        "internalType": "string"
2371      }
2372    ],
2373    "stateMutability": "view"
2374  },
2375  {
2376    "type": "function",
2377    "name": "_getVk",
2378    "inputs": [],
2379    "outputs": [
2380      {
2381        "name": "vk",
2382        "type": "tuple",
2383        "internalType": "struct IPlonkVerifier.VerifyingKey",
2384        "components": [
2385          {
2386            "name": "domainSize",
2387            "type": "uint256",
2388            "internalType": "uint256"
2389          },
2390          {
2391            "name": "numInputs",
2392            "type": "uint256",
2393            "internalType": "uint256"
2394          },
2395          {
2396            "name": "sigma0",
2397            "type": "tuple",
2398            "internalType": "struct BN254.G1Point",
2399            "components": [
2400              {
2401                "name": "x",
2402                "type": "uint256",
2403                "internalType": "BN254.BaseField"
2404              },
2405              {
2406                "name": "y",
2407                "type": "uint256",
2408                "internalType": "BN254.BaseField"
2409              }
2410            ]
2411          },
2412          {
2413            "name": "sigma1",
2414            "type": "tuple",
2415            "internalType": "struct BN254.G1Point",
2416            "components": [
2417              {
2418                "name": "x",
2419                "type": "uint256",
2420                "internalType": "BN254.BaseField"
2421              },
2422              {
2423                "name": "y",
2424                "type": "uint256",
2425                "internalType": "BN254.BaseField"
2426              }
2427            ]
2428          },
2429          {
2430            "name": "sigma2",
2431            "type": "tuple",
2432            "internalType": "struct BN254.G1Point",
2433            "components": [
2434              {
2435                "name": "x",
2436                "type": "uint256",
2437                "internalType": "BN254.BaseField"
2438              },
2439              {
2440                "name": "y",
2441                "type": "uint256",
2442                "internalType": "BN254.BaseField"
2443              }
2444            ]
2445          },
2446          {
2447            "name": "sigma3",
2448            "type": "tuple",
2449            "internalType": "struct BN254.G1Point",
2450            "components": [
2451              {
2452                "name": "x",
2453                "type": "uint256",
2454                "internalType": "BN254.BaseField"
2455              },
2456              {
2457                "name": "y",
2458                "type": "uint256",
2459                "internalType": "BN254.BaseField"
2460              }
2461            ]
2462          },
2463          {
2464            "name": "sigma4",
2465            "type": "tuple",
2466            "internalType": "struct BN254.G1Point",
2467            "components": [
2468              {
2469                "name": "x",
2470                "type": "uint256",
2471                "internalType": "BN254.BaseField"
2472              },
2473              {
2474                "name": "y",
2475                "type": "uint256",
2476                "internalType": "BN254.BaseField"
2477              }
2478            ]
2479          },
2480          {
2481            "name": "q1",
2482            "type": "tuple",
2483            "internalType": "struct BN254.G1Point",
2484            "components": [
2485              {
2486                "name": "x",
2487                "type": "uint256",
2488                "internalType": "BN254.BaseField"
2489              },
2490              {
2491                "name": "y",
2492                "type": "uint256",
2493                "internalType": "BN254.BaseField"
2494              }
2495            ]
2496          },
2497          {
2498            "name": "q2",
2499            "type": "tuple",
2500            "internalType": "struct BN254.G1Point",
2501            "components": [
2502              {
2503                "name": "x",
2504                "type": "uint256",
2505                "internalType": "BN254.BaseField"
2506              },
2507              {
2508                "name": "y",
2509                "type": "uint256",
2510                "internalType": "BN254.BaseField"
2511              }
2512            ]
2513          },
2514          {
2515            "name": "q3",
2516            "type": "tuple",
2517            "internalType": "struct BN254.G1Point",
2518            "components": [
2519              {
2520                "name": "x",
2521                "type": "uint256",
2522                "internalType": "BN254.BaseField"
2523              },
2524              {
2525                "name": "y",
2526                "type": "uint256",
2527                "internalType": "BN254.BaseField"
2528              }
2529            ]
2530          },
2531          {
2532            "name": "q4",
2533            "type": "tuple",
2534            "internalType": "struct BN254.G1Point",
2535            "components": [
2536              {
2537                "name": "x",
2538                "type": "uint256",
2539                "internalType": "BN254.BaseField"
2540              },
2541              {
2542                "name": "y",
2543                "type": "uint256",
2544                "internalType": "BN254.BaseField"
2545              }
2546            ]
2547          },
2548          {
2549            "name": "qM12",
2550            "type": "tuple",
2551            "internalType": "struct BN254.G1Point",
2552            "components": [
2553              {
2554                "name": "x",
2555                "type": "uint256",
2556                "internalType": "BN254.BaseField"
2557              },
2558              {
2559                "name": "y",
2560                "type": "uint256",
2561                "internalType": "BN254.BaseField"
2562              }
2563            ]
2564          },
2565          {
2566            "name": "qM34",
2567            "type": "tuple",
2568            "internalType": "struct BN254.G1Point",
2569            "components": [
2570              {
2571                "name": "x",
2572                "type": "uint256",
2573                "internalType": "BN254.BaseField"
2574              },
2575              {
2576                "name": "y",
2577                "type": "uint256",
2578                "internalType": "BN254.BaseField"
2579              }
2580            ]
2581          },
2582          {
2583            "name": "qO",
2584            "type": "tuple",
2585            "internalType": "struct BN254.G1Point",
2586            "components": [
2587              {
2588                "name": "x",
2589                "type": "uint256",
2590                "internalType": "BN254.BaseField"
2591              },
2592              {
2593                "name": "y",
2594                "type": "uint256",
2595                "internalType": "BN254.BaseField"
2596              }
2597            ]
2598          },
2599          {
2600            "name": "qC",
2601            "type": "tuple",
2602            "internalType": "struct BN254.G1Point",
2603            "components": [
2604              {
2605                "name": "x",
2606                "type": "uint256",
2607                "internalType": "BN254.BaseField"
2608              },
2609              {
2610                "name": "y",
2611                "type": "uint256",
2612                "internalType": "BN254.BaseField"
2613              }
2614            ]
2615          },
2616          {
2617            "name": "qH1",
2618            "type": "tuple",
2619            "internalType": "struct BN254.G1Point",
2620            "components": [
2621              {
2622                "name": "x",
2623                "type": "uint256",
2624                "internalType": "BN254.BaseField"
2625              },
2626              {
2627                "name": "y",
2628                "type": "uint256",
2629                "internalType": "BN254.BaseField"
2630              }
2631            ]
2632          },
2633          {
2634            "name": "qH2",
2635            "type": "tuple",
2636            "internalType": "struct BN254.G1Point",
2637            "components": [
2638              {
2639                "name": "x",
2640                "type": "uint256",
2641                "internalType": "BN254.BaseField"
2642              },
2643              {
2644                "name": "y",
2645                "type": "uint256",
2646                "internalType": "BN254.BaseField"
2647              }
2648            ]
2649          },
2650          {
2651            "name": "qH3",
2652            "type": "tuple",
2653            "internalType": "struct BN254.G1Point",
2654            "components": [
2655              {
2656                "name": "x",
2657                "type": "uint256",
2658                "internalType": "BN254.BaseField"
2659              },
2660              {
2661                "name": "y",
2662                "type": "uint256",
2663                "internalType": "BN254.BaseField"
2664              }
2665            ]
2666          },
2667          {
2668            "name": "qH4",
2669            "type": "tuple",
2670            "internalType": "struct BN254.G1Point",
2671            "components": [
2672              {
2673                "name": "x",
2674                "type": "uint256",
2675                "internalType": "BN254.BaseField"
2676              },
2677              {
2678                "name": "y",
2679                "type": "uint256",
2680                "internalType": "BN254.BaseField"
2681              }
2682            ]
2683          },
2684          {
2685            "name": "qEcc",
2686            "type": "tuple",
2687            "internalType": "struct BN254.G1Point",
2688            "components": [
2689              {
2690                "name": "x",
2691                "type": "uint256",
2692                "internalType": "BN254.BaseField"
2693              },
2694              {
2695                "name": "y",
2696                "type": "uint256",
2697                "internalType": "BN254.BaseField"
2698              }
2699            ]
2700          },
2701          {
2702            "name": "g2LSB",
2703            "type": "bytes32",
2704            "internalType": "bytes32"
2705          },
2706          {
2707            "name": "g2MSB",
2708            "type": "bytes32",
2709            "internalType": "bytes32"
2710          }
2711        ]
2712      }
2713    ],
2714    "stateMutability": "pure"
2715  },
2716  {
2717    "type": "function",
2718    "name": "currentBlockNumber",
2719    "inputs": [],
2720    "outputs": [
2721      {
2722        "name": "",
2723        "type": "uint256",
2724        "internalType": "uint256"
2725      }
2726    ],
2727    "stateMutability": "view"
2728  },
2729  {
2730    "type": "function",
2731    "name": "disablePermissionedProverMode",
2732    "inputs": [],
2733    "outputs": [],
2734    "stateMutability": "nonpayable"
2735  },
2736  {
2737    "type": "function",
2738    "name": "finalizedState",
2739    "inputs": [],
2740    "outputs": [
2741      {
2742        "name": "viewNum",
2743        "type": "uint64",
2744        "internalType": "uint64"
2745      },
2746      {
2747        "name": "blockHeight",
2748        "type": "uint64",
2749        "internalType": "uint64"
2750      },
2751      {
2752        "name": "blockCommRoot",
2753        "type": "uint256",
2754        "internalType": "BN254.ScalarField"
2755      }
2756    ],
2757    "stateMutability": "view"
2758  },
2759  {
2760    "type": "function",
2761    "name": "genesisStakeTableState",
2762    "inputs": [],
2763    "outputs": [
2764      {
2765        "name": "threshold",
2766        "type": "uint256",
2767        "internalType": "uint256"
2768      },
2769      {
2770        "name": "blsKeyComm",
2771        "type": "uint256",
2772        "internalType": "BN254.ScalarField"
2773      },
2774      {
2775        "name": "schnorrKeyComm",
2776        "type": "uint256",
2777        "internalType": "BN254.ScalarField"
2778      },
2779      {
2780        "name": "amountComm",
2781        "type": "uint256",
2782        "internalType": "BN254.ScalarField"
2783      }
2784    ],
2785    "stateMutability": "view"
2786  },
2787  {
2788    "type": "function",
2789    "name": "genesisState",
2790    "inputs": [],
2791    "outputs": [
2792      {
2793        "name": "viewNum",
2794        "type": "uint64",
2795        "internalType": "uint64"
2796      },
2797      {
2798        "name": "blockHeight",
2799        "type": "uint64",
2800        "internalType": "uint64"
2801      },
2802      {
2803        "name": "blockCommRoot",
2804        "type": "uint256",
2805        "internalType": "BN254.ScalarField"
2806      }
2807    ],
2808    "stateMutability": "view"
2809  },
2810  {
2811    "type": "function",
2812    "name": "getHotShotCommitment",
2813    "inputs": [
2814      {
2815        "name": "hotShotBlockHeight",
2816        "type": "uint256",
2817        "internalType": "uint256"
2818      }
2819    ],
2820    "outputs": [
2821      {
2822        "name": "hotShotBlockCommRoot",
2823        "type": "uint256",
2824        "internalType": "BN254.ScalarField"
2825      },
2826      {
2827        "name": "hotshotBlockHeight",
2828        "type": "uint64",
2829        "internalType": "uint64"
2830      }
2831    ],
2832    "stateMutability": "view"
2833  },
2834  {
2835    "type": "function",
2836    "name": "getStateHistoryCount",
2837    "inputs": [],
2838    "outputs": [
2839      {
2840        "name": "",
2841        "type": "uint256",
2842        "internalType": "uint256"
2843      }
2844    ],
2845    "stateMutability": "view"
2846  },
2847  {
2848    "type": "function",
2849    "name": "getVersion",
2850    "inputs": [],
2851    "outputs": [
2852      {
2853        "name": "majorVersion",
2854        "type": "uint8",
2855        "internalType": "uint8"
2856      },
2857      {
2858        "name": "minorVersion",
2859        "type": "uint8",
2860        "internalType": "uint8"
2861      },
2862      {
2863        "name": "patchVersion",
2864        "type": "uint8",
2865        "internalType": "uint8"
2866      }
2867    ],
2868    "stateMutability": "pure"
2869  },
2870  {
2871    "type": "function",
2872    "name": "initialize",
2873    "inputs": [
2874      {
2875        "name": "_genesis",
2876        "type": "tuple",
2877        "internalType": "struct LightClient.LightClientState",
2878        "components": [
2879          {
2880            "name": "viewNum",
2881            "type": "uint64",
2882            "internalType": "uint64"
2883          },
2884          {
2885            "name": "blockHeight",
2886            "type": "uint64",
2887            "internalType": "uint64"
2888          },
2889          {
2890            "name": "blockCommRoot",
2891            "type": "uint256",
2892            "internalType": "BN254.ScalarField"
2893          }
2894        ]
2895      },
2896      {
2897        "name": "_genesisStakeTableState",
2898        "type": "tuple",
2899        "internalType": "struct LightClient.StakeTableState",
2900        "components": [
2901          {
2902            "name": "threshold",
2903            "type": "uint256",
2904            "internalType": "uint256"
2905          },
2906          {
2907            "name": "blsKeyComm",
2908            "type": "uint256",
2909            "internalType": "BN254.ScalarField"
2910          },
2911          {
2912            "name": "schnorrKeyComm",
2913            "type": "uint256",
2914            "internalType": "BN254.ScalarField"
2915          },
2916          {
2917            "name": "amountComm",
2918            "type": "uint256",
2919            "internalType": "BN254.ScalarField"
2920          }
2921        ]
2922      },
2923      {
2924        "name": "_stateHistoryRetentionPeriod",
2925        "type": "uint32",
2926        "internalType": "uint32"
2927      },
2928      {
2929        "name": "owner",
2930        "type": "address",
2931        "internalType": "address"
2932      }
2933    ],
2934    "outputs": [],
2935    "stateMutability": "nonpayable"
2936  },
2937  {
2938    "type": "function",
2939    "name": "isPermissionedProverEnabled",
2940    "inputs": [],
2941    "outputs": [
2942      {
2943        "name": "",
2944        "type": "bool",
2945        "internalType": "bool"
2946      }
2947    ],
2948    "stateMutability": "view"
2949  },
2950  {
2951    "type": "function",
2952    "name": "lagOverEscapeHatchThreshold",
2953    "inputs": [
2954      {
2955        "name": "blockNumber",
2956        "type": "uint256",
2957        "internalType": "uint256"
2958      },
2959      {
2960        "name": "blockThreshold",
2961        "type": "uint256",
2962        "internalType": "uint256"
2963      }
2964    ],
2965    "outputs": [
2966      {
2967        "name": "",
2968        "type": "bool",
2969        "internalType": "bool"
2970      }
2971    ],
2972    "stateMutability": "view"
2973  },
2974  {
2975    "type": "function",
2976    "name": "newFinalizedState",
2977    "inputs": [
2978      {
2979        "name": "newState",
2980        "type": "tuple",
2981        "internalType": "struct LightClient.LightClientState",
2982        "components": [
2983          {
2984            "name": "viewNum",
2985            "type": "uint64",
2986            "internalType": "uint64"
2987          },
2988          {
2989            "name": "blockHeight",
2990            "type": "uint64",
2991            "internalType": "uint64"
2992          },
2993          {
2994            "name": "blockCommRoot",
2995            "type": "uint256",
2996            "internalType": "BN254.ScalarField"
2997          }
2998        ]
2999      },
3000      {
3001        "name": "proof",
3002        "type": "tuple",
3003        "internalType": "struct IPlonkVerifier.PlonkProof",
3004        "components": [
3005          {
3006            "name": "wire0",
3007            "type": "tuple",
3008            "internalType": "struct BN254.G1Point",
3009            "components": [
3010              {
3011                "name": "x",
3012                "type": "uint256",
3013                "internalType": "BN254.BaseField"
3014              },
3015              {
3016                "name": "y",
3017                "type": "uint256",
3018                "internalType": "BN254.BaseField"
3019              }
3020            ]
3021          },
3022          {
3023            "name": "wire1",
3024            "type": "tuple",
3025            "internalType": "struct BN254.G1Point",
3026            "components": [
3027              {
3028                "name": "x",
3029                "type": "uint256",
3030                "internalType": "BN254.BaseField"
3031              },
3032              {
3033                "name": "y",
3034                "type": "uint256",
3035                "internalType": "BN254.BaseField"
3036              }
3037            ]
3038          },
3039          {
3040            "name": "wire2",
3041            "type": "tuple",
3042            "internalType": "struct BN254.G1Point",
3043            "components": [
3044              {
3045                "name": "x",
3046                "type": "uint256",
3047                "internalType": "BN254.BaseField"
3048              },
3049              {
3050                "name": "y",
3051                "type": "uint256",
3052                "internalType": "BN254.BaseField"
3053              }
3054            ]
3055          },
3056          {
3057            "name": "wire3",
3058            "type": "tuple",
3059            "internalType": "struct BN254.G1Point",
3060            "components": [
3061              {
3062                "name": "x",
3063                "type": "uint256",
3064                "internalType": "BN254.BaseField"
3065              },
3066              {
3067                "name": "y",
3068                "type": "uint256",
3069                "internalType": "BN254.BaseField"
3070              }
3071            ]
3072          },
3073          {
3074            "name": "wire4",
3075            "type": "tuple",
3076            "internalType": "struct BN254.G1Point",
3077            "components": [
3078              {
3079                "name": "x",
3080                "type": "uint256",
3081                "internalType": "BN254.BaseField"
3082              },
3083              {
3084                "name": "y",
3085                "type": "uint256",
3086                "internalType": "BN254.BaseField"
3087              }
3088            ]
3089          },
3090          {
3091            "name": "prodPerm",
3092            "type": "tuple",
3093            "internalType": "struct BN254.G1Point",
3094            "components": [
3095              {
3096                "name": "x",
3097                "type": "uint256",
3098                "internalType": "BN254.BaseField"
3099              },
3100              {
3101                "name": "y",
3102                "type": "uint256",
3103                "internalType": "BN254.BaseField"
3104              }
3105            ]
3106          },
3107          {
3108            "name": "split0",
3109            "type": "tuple",
3110            "internalType": "struct BN254.G1Point",
3111            "components": [
3112              {
3113                "name": "x",
3114                "type": "uint256",
3115                "internalType": "BN254.BaseField"
3116              },
3117              {
3118                "name": "y",
3119                "type": "uint256",
3120                "internalType": "BN254.BaseField"
3121              }
3122            ]
3123          },
3124          {
3125            "name": "split1",
3126            "type": "tuple",
3127            "internalType": "struct BN254.G1Point",
3128            "components": [
3129              {
3130                "name": "x",
3131                "type": "uint256",
3132                "internalType": "BN254.BaseField"
3133              },
3134              {
3135                "name": "y",
3136                "type": "uint256",
3137                "internalType": "BN254.BaseField"
3138              }
3139            ]
3140          },
3141          {
3142            "name": "split2",
3143            "type": "tuple",
3144            "internalType": "struct BN254.G1Point",
3145            "components": [
3146              {
3147                "name": "x",
3148                "type": "uint256",
3149                "internalType": "BN254.BaseField"
3150              },
3151              {
3152                "name": "y",
3153                "type": "uint256",
3154                "internalType": "BN254.BaseField"
3155              }
3156            ]
3157          },
3158          {
3159            "name": "split3",
3160            "type": "tuple",
3161            "internalType": "struct BN254.G1Point",
3162            "components": [
3163              {
3164                "name": "x",
3165                "type": "uint256",
3166                "internalType": "BN254.BaseField"
3167              },
3168              {
3169                "name": "y",
3170                "type": "uint256",
3171                "internalType": "BN254.BaseField"
3172              }
3173            ]
3174          },
3175          {
3176            "name": "split4",
3177            "type": "tuple",
3178            "internalType": "struct BN254.G1Point",
3179            "components": [
3180              {
3181                "name": "x",
3182                "type": "uint256",
3183                "internalType": "BN254.BaseField"
3184              },
3185              {
3186                "name": "y",
3187                "type": "uint256",
3188                "internalType": "BN254.BaseField"
3189              }
3190            ]
3191          },
3192          {
3193            "name": "zeta",
3194            "type": "tuple",
3195            "internalType": "struct BN254.G1Point",
3196            "components": [
3197              {
3198                "name": "x",
3199                "type": "uint256",
3200                "internalType": "BN254.BaseField"
3201              },
3202              {
3203                "name": "y",
3204                "type": "uint256",
3205                "internalType": "BN254.BaseField"
3206              }
3207            ]
3208          },
3209          {
3210            "name": "zetaOmega",
3211            "type": "tuple",
3212            "internalType": "struct BN254.G1Point",
3213            "components": [
3214              {
3215                "name": "x",
3216                "type": "uint256",
3217                "internalType": "BN254.BaseField"
3218              },
3219              {
3220                "name": "y",
3221                "type": "uint256",
3222                "internalType": "BN254.BaseField"
3223              }
3224            ]
3225          },
3226          {
3227            "name": "wireEval0",
3228            "type": "uint256",
3229            "internalType": "BN254.ScalarField"
3230          },
3231          {
3232            "name": "wireEval1",
3233            "type": "uint256",
3234            "internalType": "BN254.ScalarField"
3235          },
3236          {
3237            "name": "wireEval2",
3238            "type": "uint256",
3239            "internalType": "BN254.ScalarField"
3240          },
3241          {
3242            "name": "wireEval3",
3243            "type": "uint256",
3244            "internalType": "BN254.ScalarField"
3245          },
3246          {
3247            "name": "wireEval4",
3248            "type": "uint256",
3249            "internalType": "BN254.ScalarField"
3250          },
3251          {
3252            "name": "sigmaEval0",
3253            "type": "uint256",
3254            "internalType": "BN254.ScalarField"
3255          },
3256          {
3257            "name": "sigmaEval1",
3258            "type": "uint256",
3259            "internalType": "BN254.ScalarField"
3260          },
3261          {
3262            "name": "sigmaEval2",
3263            "type": "uint256",
3264            "internalType": "BN254.ScalarField"
3265          },
3266          {
3267            "name": "sigmaEval3",
3268            "type": "uint256",
3269            "internalType": "BN254.ScalarField"
3270          },
3271          {
3272            "name": "prodPermZetaOmegaEval",
3273            "type": "uint256",
3274            "internalType": "BN254.ScalarField"
3275          }
3276        ]
3277      }
3278    ],
3279    "outputs": [],
3280    "stateMutability": "nonpayable"
3281  },
3282  {
3283    "type": "function",
3284    "name": "owner",
3285    "inputs": [],
3286    "outputs": [
3287      {
3288        "name": "",
3289        "type": "address",
3290        "internalType": "address"
3291      }
3292    ],
3293    "stateMutability": "view"
3294  },
3295  {
3296    "type": "function",
3297    "name": "permissionedProver",
3298    "inputs": [],
3299    "outputs": [
3300      {
3301        "name": "",
3302        "type": "address",
3303        "internalType": "address"
3304      }
3305    ],
3306    "stateMutability": "view"
3307  },
3308  {
3309    "type": "function",
3310    "name": "proxiableUUID",
3311    "inputs": [],
3312    "outputs": [
3313      {
3314        "name": "",
3315        "type": "bytes32",
3316        "internalType": "bytes32"
3317      }
3318    ],
3319    "stateMutability": "view"
3320  },
3321  {
3322    "type": "function",
3323    "name": "renounceOwnership",
3324    "inputs": [],
3325    "outputs": [],
3326    "stateMutability": "nonpayable"
3327  },
3328  {
3329    "type": "function",
3330    "name": "setPermissionedProver",
3331    "inputs": [
3332      {
3333        "name": "prover",
3334        "type": "address",
3335        "internalType": "address"
3336      }
3337    ],
3338    "outputs": [],
3339    "stateMutability": "nonpayable"
3340  },
3341  {
3342    "type": "function",
3343    "name": "setstateHistoryRetentionPeriod",
3344    "inputs": [
3345      {
3346        "name": "historySeconds",
3347        "type": "uint32",
3348        "internalType": "uint32"
3349      }
3350    ],
3351    "outputs": [],
3352    "stateMutability": "nonpayable"
3353  },
3354  {
3355    "type": "function",
3356    "name": "stateHistoryCommitments",
3357    "inputs": [
3358      {
3359        "name": "",
3360        "type": "uint256",
3361        "internalType": "uint256"
3362      }
3363    ],
3364    "outputs": [
3365      {
3366        "name": "l1BlockHeight",
3367        "type": "uint64",
3368        "internalType": "uint64"
3369      },
3370      {
3371        "name": "l1BlockTimestamp",
3372        "type": "uint64",
3373        "internalType": "uint64"
3374      },
3375      {
3376        "name": "hotShotBlockHeight",
3377        "type": "uint64",
3378        "internalType": "uint64"
3379      },
3380      {
3381        "name": "hotShotBlockCommRoot",
3382        "type": "uint256",
3383        "internalType": "BN254.ScalarField"
3384      }
3385    ],
3386    "stateMutability": "view"
3387  },
3388  {
3389    "type": "function",
3390    "name": "stateHistoryFirstIndex",
3391    "inputs": [],
3392    "outputs": [
3393      {
3394        "name": "",
3395        "type": "uint64",
3396        "internalType": "uint64"
3397      }
3398    ],
3399    "stateMutability": "view"
3400  },
3401  {
3402    "type": "function",
3403    "name": "stateHistoryRetentionPeriod",
3404    "inputs": [],
3405    "outputs": [
3406      {
3407        "name": "",
3408        "type": "uint32",
3409        "internalType": "uint32"
3410      }
3411    ],
3412    "stateMutability": "view"
3413  },
3414  {
3415    "type": "function",
3416    "name": "transferOwnership",
3417    "inputs": [
3418      {
3419        "name": "newOwner",
3420        "type": "address",
3421        "internalType": "address"
3422      }
3423    ],
3424    "outputs": [],
3425    "stateMutability": "nonpayable"
3426  },
3427  {
3428    "type": "function",
3429    "name": "upgradeToAndCall",
3430    "inputs": [
3431      {
3432        "name": "newImplementation",
3433        "type": "address",
3434        "internalType": "address"
3435      },
3436      {
3437        "name": "data",
3438        "type": "bytes",
3439        "internalType": "bytes"
3440      }
3441    ],
3442    "outputs": [],
3443    "stateMutability": "payable"
3444  },
3445  {
3446    "type": "event",
3447    "name": "Initialized",
3448    "inputs": [
3449      {
3450        "name": "version",
3451        "type": "uint64",
3452        "indexed": false,
3453        "internalType": "uint64"
3454      }
3455    ],
3456    "anonymous": false
3457  },
3458  {
3459    "type": "event",
3460    "name": "NewState",
3461    "inputs": [
3462      {
3463        "name": "viewNum",
3464        "type": "uint64",
3465        "indexed": true,
3466        "internalType": "uint64"
3467      },
3468      {
3469        "name": "blockHeight",
3470        "type": "uint64",
3471        "indexed": true,
3472        "internalType": "uint64"
3473      },
3474      {
3475        "name": "blockCommRoot",
3476        "type": "uint256",
3477        "indexed": false,
3478        "internalType": "BN254.ScalarField"
3479      }
3480    ],
3481    "anonymous": false
3482  },
3483  {
3484    "type": "event",
3485    "name": "OwnershipTransferred",
3486    "inputs": [
3487      {
3488        "name": "previousOwner",
3489        "type": "address",
3490        "indexed": true,
3491        "internalType": "address"
3492      },
3493      {
3494        "name": "newOwner",
3495        "type": "address",
3496        "indexed": true,
3497        "internalType": "address"
3498      }
3499    ],
3500    "anonymous": false
3501  },
3502  {
3503    "type": "event",
3504    "name": "PermissionedProverNotRequired",
3505    "inputs": [],
3506    "anonymous": false
3507  },
3508  {
3509    "type": "event",
3510    "name": "PermissionedProverRequired",
3511    "inputs": [
3512      {
3513        "name": "permissionedProver",
3514        "type": "address",
3515        "indexed": false,
3516        "internalType": "address"
3517      }
3518    ],
3519    "anonymous": false
3520  },
3521  {
3522    "type": "event",
3523    "name": "Upgrade",
3524    "inputs": [
3525      {
3526        "name": "implementation",
3527        "type": "address",
3528        "indexed": false,
3529        "internalType": "address"
3530      }
3531    ],
3532    "anonymous": false
3533  },
3534  {
3535    "type": "event",
3536    "name": "Upgraded",
3537    "inputs": [
3538      {
3539        "name": "implementation",
3540        "type": "address",
3541        "indexed": true,
3542        "internalType": "address"
3543      }
3544    ],
3545    "anonymous": false
3546  },
3547  {
3548    "type": "error",
3549    "name": "AddressEmptyCode",
3550    "inputs": [
3551      {
3552        "name": "target",
3553        "type": "address",
3554        "internalType": "address"
3555      }
3556    ]
3557  },
3558  {
3559    "type": "error",
3560    "name": "ERC1967InvalidImplementation",
3561    "inputs": [
3562      {
3563        "name": "implementation",
3564        "type": "address",
3565        "internalType": "address"
3566      }
3567    ]
3568  },
3569  {
3570    "type": "error",
3571    "name": "ERC1967NonPayable",
3572    "inputs": []
3573  },
3574  {
3575    "type": "error",
3576    "name": "FailedInnerCall",
3577    "inputs": []
3578  },
3579  {
3580    "type": "error",
3581    "name": "InsufficientSnapshotHistory",
3582    "inputs": []
3583  },
3584  {
3585    "type": "error",
3586    "name": "InvalidAddress",
3587    "inputs": []
3588  },
3589  {
3590    "type": "error",
3591    "name": "InvalidArgs",
3592    "inputs": []
3593  },
3594  {
3595    "type": "error",
3596    "name": "InvalidHotShotBlockForCommitmentCheck",
3597    "inputs": []
3598  },
3599  {
3600    "type": "error",
3601    "name": "InvalidInitialization",
3602    "inputs": []
3603  },
3604  {
3605    "type": "error",
3606    "name": "InvalidMaxStateHistory",
3607    "inputs": []
3608  },
3609  {
3610    "type": "error",
3611    "name": "InvalidProof",
3612    "inputs": []
3613  },
3614  {
3615    "type": "error",
3616    "name": "NoChangeRequired",
3617    "inputs": []
3618  },
3619  {
3620    "type": "error",
3621    "name": "NotInitializing",
3622    "inputs": []
3623  },
3624  {
3625    "type": "error",
3626    "name": "OutdatedState",
3627    "inputs": []
3628  },
3629  {
3630    "type": "error",
3631    "name": "OwnableInvalidOwner",
3632    "inputs": [
3633      {
3634        "name": "owner",
3635        "type": "address",
3636        "internalType": "address"
3637      }
3638    ]
3639  },
3640  {
3641    "type": "error",
3642    "name": "OwnableUnauthorizedAccount",
3643    "inputs": [
3644      {
3645        "name": "account",
3646        "type": "address",
3647        "internalType": "address"
3648      }
3649    ]
3650  },
3651  {
3652    "type": "error",
3653    "name": "ProverNotPermissioned",
3654    "inputs": []
3655  },
3656  {
3657    "type": "error",
3658    "name": "UUPSUnauthorizedCallContext",
3659    "inputs": []
3660  },
3661  {
3662    "type": "error",
3663    "name": "UUPSUnsupportedProxiableUUID",
3664    "inputs": [
3665      {
3666        "name": "slot",
3667        "type": "bytes32",
3668        "internalType": "bytes32"
3669      }
3670    ]
3671  },
3672  {
3673    "type": "error",
3674    "name": "WrongStakeTableUsed",
3675    "inputs": []
3676  }
3677]
3678```*/
3679#[allow(
3680    non_camel_case_types,
3681    non_snake_case,
3682    clippy::pub_underscore_fields,
3683    clippy::style,
3684    clippy::empty_structs_with_brackets
3685)]
3686pub mod LightClient {
3687    use super::*;
3688    use alloy::sol_types as alloy_sol_types;
3689    /// The creation / init bytecode of the contract.
3690    ///
3691    /// ```text
3692    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612b5c6100f95f395f81816117130152818161173c01526118b90152612b5c5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f6c565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f85565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f9c565b34801561023a575f5ffd5b506101846102493660046122d1565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612481565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f85565b6108bf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612537565b6109ea565b34801561043c575f5ffd5b5061018461044b366004612550565b610a73565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125f9565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461262e565b610b95565b348015610573575f5ffd5b50610184610582366004611f6c565b610cef565b348015610592575f5ffd5b506009546102d1565b6105a3610d31565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611cce565b6106a7610d8c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113bb565b61075d828261142b565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b428461151f565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e611708565b610817826117ac565b61082182826117ed565b5050565b5f61082e6118ae565b505f516020612b305f395f51905f5290565b610848610d31565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d31565b6108ac5f6118f7565b600980545f918291906108d3600183612662565b815481106108e3576108e3612675565b5f918252602090912060029091020154600160801b90046001600160401b0316841061092257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109e357846009828154811061095257610952612675565b5f918252602090912060029091020154600160801b90046001600160401b031611156109db576009818154811061098b5761098b612675565b905f5260205f20906002020160010154600982815481106109ae576109ae612675565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610936565b5050915091565b6109f2610d31565b610e108163ffffffff161080610a1157506301e133808163ffffffff16115b80610a2f575060085463ffffffff600160a01b909104811690821611155b15610a4d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ab75750825b90505f826001600160401b03166001148015610ad25750303b155b905081158015610ae0575080155b15610afe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b2857845460ff60401b1916600160401b1785555b610b3186611967565b610b39611978565b610b44898989611980565b8315610b8a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610ba6575080155b80610bf05750600854600980549091600160c01b90046001600160401b0316908110610bd457610bd4612675565b5f9182526020909120600290910201546001600160401b031684105b15610c0e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c1c600185612662565b90505b81610cb857600854600160c01b90046001600160401b03168110610cb8578660098281548110610c5157610c51612675565b5f9182526020909120600290910201546001600160401b031611610ca6576001915060098181548110610c8657610c86612675565b5f9182526020909120600290910201546001600160401b03169250610cb8565b80610cb081612689565b915050610c1f565b81610cd65760405163b0b4387760e01b815260040160405180910390fd5b85610ce18489612662565b119450505050505b92915050565b610cf7610d31565b6001600160a01b038116610d2557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2e816118f7565b50565b33610d637f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d1c565b610d94611cce565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d1c565b5f611434610697565b905061143e611f33565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a77906114bd9085908590889060040161287a565b602060405180830381865af41580156114d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc9190612a9a565b611519576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611594575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061155f5761155f612675565b5f91825260209091206002909102015461158990600160401b90046001600160401b031684612ab9565b6001600160401b0316115b1561162757600854600980549091600160c01b90046001600160401b03169081106115c1576115c1612675565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861160183612ad8565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061178e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117825f516020612b305f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b6117b4610d31565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611847575060408051601f3d908101601f1916820190925261184491810190612b02565b60015b61186f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1c565b5f516020612b305f395f51905f52811461189f57604051632a87526960e21b815260048101829052602401610d1c565b6118a98383611aac565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61196f611b01565b610d2e81611b4a565b6108ac611b01565b82516001600160401b03161515806119a4575060208301516001600160401b031615155b806119b157506020820151155b806119be57506040820151155b806119cb57506060820151155b806119d557508151155b806119e75750610e108163ffffffff16105b806119fb57506301e133808163ffffffff16115b15611a19576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611ab582611b52565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611af9576118a98282611bb5565b610821611c27565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610cf7611b01565b806001600160a01b03163b5f03611b8757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1c565b5f516020612b305f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bd19190612b19565b5f60405180830381855af49150503d805f8114611c09576040519150601f19603f3d011682016040523d82523d5f602084013e611c0e565b606091505b5091509150611c1e858383611c46565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c5b57611c5682611ca5565b611c9e565b8151158015611c7257506001600160a01b0384163b155b15611c9b57604051639996b31560e01b81526001600160a01b0385166004820152602401610d1c565b50805b9392505050565b805115611cb55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d0160405180604001604052805f81526020015f81525090565b8152602001611d2160405180604001604052805f81526020015f81525090565b8152602001611d4160405180604001604052805f81526020015f81525090565b8152602001611d6160405180604001604052805f81526020015f81525090565b8152602001611d8160405180604001604052805f81526020015f81525090565b8152602001611da160405180604001604052805f81526020015f81525090565b8152602001611dc160405180604001604052805f81526020015f81525090565b8152602001611de160405180604001604052805f81526020015f81525090565b8152602001611e0160405180604001604052805f81526020015f81525090565b8152602001611e2160405180604001604052805f81526020015f81525090565b8152602001611e4160405180604001604052805f81526020015f81525090565b8152602001611e6160405180604001604052805f81526020015f81525090565b8152602001611e8160405180604001604052805f81526020015f81525090565b8152602001611ea160405180604001604052805f81526020015f81525090565b8152602001611ec160405180604001604052805f81526020015f81525090565b8152602001611ee160405180604001604052805f81526020015f81525090565b8152602001611f0160405180604001604052805f81526020015f81525090565b8152602001611f2160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f67575f5ffd5b919050565b5f60208284031215611f7c575f5ffd5b611c9e82611f51565b5f60208284031215611f95575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611fce604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121d4576121d461219d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156122025761220261219d565b604052919050565b80356001600160401b0381168114611f67575f5ffd5b5f60608284031215612230575f5ffd5b604051606081016001600160401b03811182821017156122525761225261219d565b6040529050806122618361220a565b815261226f6020840161220a565b6020820152604092830135920191909152919050565b5f60408284031215612295575f5ffd5b604080519081016001600160401b03811182821017156122b7576122b761219d565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122e4575f5ffd5b6122ee8585612220565b9250610480605f1982011215612302575f5ffd5b5061230b6121b1565b6123188560608601612285565b81526123278560a08601612285565b60208201526123398560e08601612285565b604082015261234c856101208601612285565b606082015261235f856101608601612285565b6080820152612372856101a08601612285565b60a0820152612385856101e08601612285565b60c0820152612398856102208601612285565b60e08201526123ab856102608601612285565b6101008201526123bf856102a08601612285565b6101208201526123d3856102e08601612285565b6101408201526123e7856103208601612285565b6101608201526123fb856103608601612285565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612492575f5ffd5b61249b83611f51565b915060208301356001600160401b038111156124b5575f5ffd5b8301601f810185136124c5575f5ffd5b80356001600160401b038111156124de576124de61219d565b6124f1601f8201601f19166020016121da565b818152866020838501011115612505575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f67575f5ffd5b5f60208284031215612547575f5ffd5b611c9e82612524565b5f5f5f5f848603610120811215612565575f5ffd5b61256f8787612220565b94506080605f1982011215612582575f5ffd5b50604051608081016001600160401b03811182821017156125a5576125a561219d565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125df60e08601612524565b91506125ee6101008601611f51565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f6040838503121561263f575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ce957610ce961264e565b634e487b7160e01b5f52603260045260245ffd5b5f816126975761269761264e565b505f190190565b805f5b60078110156115195781518452602093840193909101906001016126a1565b6126d582825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a6082019050845182526020850151602083015260408501516128ac604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a8461050083018561269e565b612a926105e08301846126c0565b949350505050565b5f60208284031215612aaa575f5ffd5b81518015158114611c9e575f5ffd5b6001600160401b038281168282160390811115610ce957610ce961264e565b5f6001600160401b0382166001600160401b038103612af957612af961264e565b60010192915050565b5f60208284031215612b12575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3693    /// ```
3694    #[rustfmt::skip]
3695    #[allow(clippy::all)]
3696    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3697        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa+\\a\0\xF9_9_\x81\x81a\x17\x13\x01R\x81\x81a\x17<\x01Ra\x18\xB9\x01Ra+\\_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FlV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\x85V[a\x06NV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F\x9CV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xD1V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$\x81V[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1F\x85V[a\x08\xBFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%7V[a\t\xEAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%PV[a\nsV[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xF9V[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&.V[a\x0B\x95V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FlV[a\x0C\xEFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xF9W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xCEV[a\x06\xA7a\r\x8CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xBBV[a\x07]\x82\x82a\x14+V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\x1FV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x17\x08V[a\x08\x17\x82a\x17\xACV[a\x08!\x82\x82a\x17\xEDV[PPV[_a\x08.a\x18\xAEV[P_Q` a+0_9_Q\x90_R\x90V[a\x08Ha\r1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x08\xB6a\r1V[a\x08\xAC_a\x18\xF7V[`\t\x80T_\x91\x82\x91\x90a\x08\xD3`\x01\x83a&bV[\x81T\x81\x10a\x08\xE3Wa\x08\xE3a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\"W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\t\xE3W\x84`\t\x82\x81T\x81\x10a\tRWa\tRa&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xDBW`\t\x81\x81T\x81\x10a\t\x8BWa\t\x8Ba&uV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xAEWa\t\xAEa&uV[\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\t6V[PP\x91P\x91V[a\t\xF2a\r1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x11WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n/WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\nMW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\n\xB7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xD2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xE0WP\x80\x15[\x15a\n\xFEW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0B(W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B1\x86a\x19gV[a\x0B9a\x19xV[a\x0BD\x89\x89\x89a\x19\x80V[\x83\x15a\x0B\x8AW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90C\x84\x11\x80a\x0B\xA6WP\x80\x15[\x80a\x0B\xF0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xD4Wa\x0B\xD4a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x0EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x1C`\x01\x85a&bV[\x90P[\x81a\x0C\xB8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xB8W\x86`\t\x82\x81T\x81\x10a\x0CQWa\x0CQa&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xA6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x86Wa\x0C\x86a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xB8V[\x80a\x0C\xB0\x81a&\x89V[\x91PPa\x0C\x1FV[\x81a\x0C\xD6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xE1\x84\x89a&bV[\x11\x94PPPPP[\x92\x91PPV[a\x0C\xF7a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r%W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r.\x81a\x18\xF7V[PV[3a\rc\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1CV[a\r\x94a\x1C\xCEV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08!W`@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\r\x1CV[_a\x144a\x06\x97V[\x90Pa\x14>a\x1F3V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x14\xBD\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(zV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xD8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xFC\x91\x90a*\x9AV[a\x15\x19W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\x94WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15_Wa\x15_a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\x89\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\xB9V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16'W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xC1Wa\x15\xC1a&uV[_\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\x16\x01\x83a*\xD8V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x17\x8EWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x17\x82_Q` a+0_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xB4a\r1V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x06CV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18GWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18D\x91\x81\x01\x90a+\x02V[`\x01[a\x18oW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+0_9_Q\x90_R\x81\x14a\x18\x9FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1CV[a\x18\xA9\x83\x83a\x1A\xACV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x19oa\x1B\x01V[a\r.\x81a\x1BJV[a\x08\xACa\x1B\x01V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xA4WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xB1WP` \x82\x01Q\x15[\x80a\x19\xBEWP`@\x82\x01Q\x15[\x80a\x19\xCBWP``\x82\x01Q\x15[\x80a\x19\xD5WP\x81Q\x15[\x80a\x19\xE7WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xFBWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x19W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x1A\xB5\x82a\x1BRV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1A\xF9Wa\x18\xA9\x82\x82a\x1B\xB5V[a\x08!a\x1C'V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF7a\x1B\x01V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\x87W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+0_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1B\xD1\x91\x90a+\x19V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1C\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C\x0EV[``\x91P[P\x91P\x91Pa\x1C\x1E\x85\x83\x83a\x1CFV[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C[Wa\x1CV\x82a\x1C\xA5V[a\x1C\x9EV[\x81Q\x15\x80\x15a\x1CrWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\x9BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\xB5W\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\x1D\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Da`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x81`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Ea`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x81`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1FgW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F|W__\xFD[a\x1C\x9E\x82a\x1FQV[_` \x82\x84\x03\x12\x15a\x1F\x95W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xCE`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xD4Wa!\xD4a!\x9DV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x02Wa\"\x02a!\x9DV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FgW__\xFD[_``\x82\x84\x03\x12\x15a\"0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"RWa\"Ra!\x9DV[`@R\x90P\x80a\"a\x83a\"\nV[\x81Ra\"o` \x84\x01a\"\nV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\x95W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xB7Wa\"\xB7a!\x9DV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xE4W__\xFD[a\"\xEE\x85\x85a\" V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#\x02W__\xFD[Pa#\x0Ba!\xB1V[a#\x18\x85``\x86\x01a\"\x85V[\x81Ra#'\x85`\xA0\x86\x01a\"\x85V[` \x82\x01Ra#9\x85`\xE0\x86\x01a\"\x85V[`@\x82\x01Ra#L\x85a\x01 \x86\x01a\"\x85V[``\x82\x01Ra#_\x85a\x01`\x86\x01a\"\x85V[`\x80\x82\x01Ra#r\x85a\x01\xA0\x86\x01a\"\x85V[`\xA0\x82\x01Ra#\x85\x85a\x01\xE0\x86\x01a\"\x85V[`\xC0\x82\x01Ra#\x98\x85a\x02 \x86\x01a\"\x85V[`\xE0\x82\x01Ra#\xAB\x85a\x02`\x86\x01a\"\x85V[a\x01\0\x82\x01Ra#\xBF\x85a\x02\xA0\x86\x01a\"\x85V[a\x01 \x82\x01Ra#\xD3\x85a\x02\xE0\x86\x01a\"\x85V[a\x01@\x82\x01Ra#\xE7\x85a\x03 \x86\x01a\"\x85V[a\x01`\x82\x01Ra#\xFB\x85a\x03`\x86\x01a\"\x85V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a$\x92W__\xFD[a$\x9B\x83a\x1FQV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xB5W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xC5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xDEWa$\xDEa!\x9DV[a$\xF1`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xDAV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%\x05W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FgW__\xFD[_` \x82\x84\x03\x12\x15a%GW__\xFD[a\x1C\x9E\x82a%$V[____\x84\x86\x03a\x01 \x81\x12\x15a%eW__\xFD[a%o\x87\x87a\" V[\x94P`\x80`_\x19\x82\x01\x12\x15a%\x82W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xA5Wa%\xA5a!\x9DV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xDF`\xE0\x86\x01a%$V[\x91Pa%\xEEa\x01\0\x86\x01a\x1FQV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&?W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&NV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\x97Wa&\x97a&NV[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15\x19W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\xA1V[a&\xD5\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa(\xAC`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra*\x84a\x05\0\x83\x01\x85a&\x9EV[a*\x92a\x05\xE0\x83\x01\x84a&\xC0V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\xAAW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x9EW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&NV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xF9Wa*\xF9a&NV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a+\x12W__\xFD[PQ\x91\x90PV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
3698    );
3699    /// The runtime bytecode of the contract, as deployed on the network.
3700    ///
3701    /// ```text
3702    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f6c565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f85565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f9c565b34801561023a575f5ffd5b506101846102493660046122d1565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612481565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f85565b6108bf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612537565b6109ea565b34801561043c575f5ffd5b5061018461044b366004612550565b610a73565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125f9565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461262e565b610b95565b348015610573575f5ffd5b50610184610582366004611f6c565b610cef565b348015610592575f5ffd5b506009546102d1565b6105a3610d31565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611cce565b6106a7610d8c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113bb565b61075d828261142b565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b428461151f565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e611708565b610817826117ac565b61082182826117ed565b5050565b5f61082e6118ae565b505f516020612b305f395f51905f5290565b610848610d31565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d31565b6108ac5f6118f7565b600980545f918291906108d3600183612662565b815481106108e3576108e3612675565b5f918252602090912060029091020154600160801b90046001600160401b0316841061092257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109e357846009828154811061095257610952612675565b5f918252602090912060029091020154600160801b90046001600160401b031611156109db576009818154811061098b5761098b612675565b905f5260205f20906002020160010154600982815481106109ae576109ae612675565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610936565b5050915091565b6109f2610d31565b610e108163ffffffff161080610a1157506301e133808163ffffffff16115b80610a2f575060085463ffffffff600160a01b909104811690821611155b15610a4d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ab75750825b90505f826001600160401b03166001148015610ad25750303b155b905081158015610ae0575080155b15610afe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b2857845460ff60401b1916600160401b1785555b610b3186611967565b610b39611978565b610b44898989611980565b8315610b8a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610ba6575080155b80610bf05750600854600980549091600160c01b90046001600160401b0316908110610bd457610bd4612675565b5f9182526020909120600290910201546001600160401b031684105b15610c0e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c1c600185612662565b90505b81610cb857600854600160c01b90046001600160401b03168110610cb8578660098281548110610c5157610c51612675565b5f9182526020909120600290910201546001600160401b031611610ca6576001915060098181548110610c8657610c86612675565b5f9182526020909120600290910201546001600160401b03169250610cb8565b80610cb081612689565b915050610c1f565b81610cd65760405163b0b4387760e01b815260040160405180910390fd5b85610ce18489612662565b119450505050505b92915050565b610cf7610d31565b6001600160a01b038116610d2557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2e816118f7565b50565b33610d637f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d1c565b610d94611cce565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d1c565b5f611434610697565b905061143e611f33565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a77906114bd9085908590889060040161287a565b602060405180830381865af41580156114d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc9190612a9a565b611519576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611594575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061155f5761155f612675565b5f91825260209091206002909102015461158990600160401b90046001600160401b031684612ab9565b6001600160401b0316115b1561162757600854600980549091600160c01b90046001600160401b03169081106115c1576115c1612675565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861160183612ad8565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061178e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117825f516020612b305f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b6117b4610d31565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611847575060408051601f3d908101601f1916820190925261184491810190612b02565b60015b61186f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1c565b5f516020612b305f395f51905f52811461189f57604051632a87526960e21b815260048101829052602401610d1c565b6118a98383611aac565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61196f611b01565b610d2e81611b4a565b6108ac611b01565b82516001600160401b03161515806119a4575060208301516001600160401b031615155b806119b157506020820151155b806119be57506040820151155b806119cb57506060820151155b806119d557508151155b806119e75750610e108163ffffffff16105b806119fb57506301e133808163ffffffff16115b15611a19576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611ab582611b52565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611af9576118a98282611bb5565b610821611c27565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610cf7611b01565b806001600160a01b03163b5f03611b8757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1c565b5f516020612b305f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bd19190612b19565b5f60405180830381855af49150503d805f8114611c09576040519150601f19603f3d011682016040523d82523d5f602084013e611c0e565b606091505b5091509150611c1e858383611c46565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c5b57611c5682611ca5565b611c9e565b8151158015611c7257506001600160a01b0384163b155b15611c9b57604051639996b31560e01b81526001600160a01b0385166004820152602401610d1c565b50805b9392505050565b805115611cb55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d0160405180604001604052805f81526020015f81525090565b8152602001611d2160405180604001604052805f81526020015f81525090565b8152602001611d4160405180604001604052805f81526020015f81525090565b8152602001611d6160405180604001604052805f81526020015f81525090565b8152602001611d8160405180604001604052805f81526020015f81525090565b8152602001611da160405180604001604052805f81526020015f81525090565b8152602001611dc160405180604001604052805f81526020015f81525090565b8152602001611de160405180604001604052805f81526020015f81525090565b8152602001611e0160405180604001604052805f81526020015f81525090565b8152602001611e2160405180604001604052805f81526020015f81525090565b8152602001611e4160405180604001604052805f81526020015f81525090565b8152602001611e6160405180604001604052805f81526020015f81525090565b8152602001611e8160405180604001604052805f81526020015f81525090565b8152602001611ea160405180604001604052805f81526020015f81525090565b8152602001611ec160405180604001604052805f81526020015f81525090565b8152602001611ee160405180604001604052805f81526020015f81525090565b8152602001611f0160405180604001604052805f81526020015f81525090565b8152602001611f2160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f67575f5ffd5b919050565b5f60208284031215611f7c575f5ffd5b611c9e82611f51565b5f60208284031215611f95575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611fce604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121d4576121d461219d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156122025761220261219d565b604052919050565b80356001600160401b0381168114611f67575f5ffd5b5f60608284031215612230575f5ffd5b604051606081016001600160401b03811182821017156122525761225261219d565b6040529050806122618361220a565b815261226f6020840161220a565b6020820152604092830135920191909152919050565b5f60408284031215612295575f5ffd5b604080519081016001600160401b03811182821017156122b7576122b761219d565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122e4575f5ffd5b6122ee8585612220565b9250610480605f1982011215612302575f5ffd5b5061230b6121b1565b6123188560608601612285565b81526123278560a08601612285565b60208201526123398560e08601612285565b604082015261234c856101208601612285565b606082015261235f856101608601612285565b6080820152612372856101a08601612285565b60a0820152612385856101e08601612285565b60c0820152612398856102208601612285565b60e08201526123ab856102608601612285565b6101008201526123bf856102a08601612285565b6101208201526123d3856102e08601612285565b6101408201526123e7856103208601612285565b6101608201526123fb856103608601612285565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612492575f5ffd5b61249b83611f51565b915060208301356001600160401b038111156124b5575f5ffd5b8301601f810185136124c5575f5ffd5b80356001600160401b038111156124de576124de61219d565b6124f1601f8201601f19166020016121da565b818152866020838501011115612505575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f67575f5ffd5b5f60208284031215612547575f5ffd5b611c9e82612524565b5f5f5f5f848603610120811215612565575f5ffd5b61256f8787612220565b94506080605f1982011215612582575f5ffd5b50604051608081016001600160401b03811182821017156125a5576125a561219d565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125df60e08601612524565b91506125ee6101008601611f51565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f6040838503121561263f575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ce957610ce961264e565b634e487b7160e01b5f52603260045260245ffd5b5f816126975761269761264e565b505f190190565b805f5b60078110156115195781518452602093840193909101906001016126a1565b6126d582825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a6082019050845182526020850151602083015260408501516128ac604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a8461050083018561269e565b612a926105e08301846126c0565b949350505050565b5f60208284031215612aaa575f5ffd5b81518015158114611c9e575f5ffd5b6001600160401b038281168282160390811115610ce957610ce961264e565b5f6001600160401b0382166001600160401b038103612af957612af961264e565b60010192915050565b5f60208284031215612b12575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3703    /// ```
3704    #[rustfmt::skip]
3705    #[allow(clippy::all)]
3706    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3707        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FlV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\x85V[a\x06NV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F\x9CV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xD1V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$\x81V[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1F\x85V[a\x08\xBFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%7V[a\t\xEAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%PV[a\nsV[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xF9V[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&.V[a\x0B\x95V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FlV[a\x0C\xEFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xF9W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xCEV[a\x06\xA7a\r\x8CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xBBV[a\x07]\x82\x82a\x14+V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\x1FV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x17\x08V[a\x08\x17\x82a\x17\xACV[a\x08!\x82\x82a\x17\xEDV[PPV[_a\x08.a\x18\xAEV[P_Q` a+0_9_Q\x90_R\x90V[a\x08Ha\r1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x08\xB6a\r1V[a\x08\xAC_a\x18\xF7V[`\t\x80T_\x91\x82\x91\x90a\x08\xD3`\x01\x83a&bV[\x81T\x81\x10a\x08\xE3Wa\x08\xE3a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\"W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\t\xE3W\x84`\t\x82\x81T\x81\x10a\tRWa\tRa&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xDBW`\t\x81\x81T\x81\x10a\t\x8BWa\t\x8Ba&uV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xAEWa\t\xAEa&uV[\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\t6V[PP\x91P\x91V[a\t\xF2a\r1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x11WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n/WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\nMW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\n\xB7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xD2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xE0WP\x80\x15[\x15a\n\xFEW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0B(W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B1\x86a\x19gV[a\x0B9a\x19xV[a\x0BD\x89\x89\x89a\x19\x80V[\x83\x15a\x0B\x8AW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90C\x84\x11\x80a\x0B\xA6WP\x80\x15[\x80a\x0B\xF0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xD4Wa\x0B\xD4a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x0EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x1C`\x01\x85a&bV[\x90P[\x81a\x0C\xB8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xB8W\x86`\t\x82\x81T\x81\x10a\x0CQWa\x0CQa&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xA6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x86Wa\x0C\x86a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xB8V[\x80a\x0C\xB0\x81a&\x89V[\x91PPa\x0C\x1FV[\x81a\x0C\xD6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xE1\x84\x89a&bV[\x11\x94PPPPP[\x92\x91PPV[a\x0C\xF7a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r%W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r.\x81a\x18\xF7V[PV[3a\rc\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1CV[a\r\x94a\x1C\xCEV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08!W`@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\r\x1CV[_a\x144a\x06\x97V[\x90Pa\x14>a\x1F3V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x14\xBD\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(zV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xD8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xFC\x91\x90a*\x9AV[a\x15\x19W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\x94WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15_Wa\x15_a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\x89\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\xB9V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16'W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xC1Wa\x15\xC1a&uV[_\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\x16\x01\x83a*\xD8V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x17\x8EWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x17\x82_Q` a+0_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xB4a\r1V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x06CV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18GWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18D\x91\x81\x01\x90a+\x02V[`\x01[a\x18oW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+0_9_Q\x90_R\x81\x14a\x18\x9FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1CV[a\x18\xA9\x83\x83a\x1A\xACV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x19oa\x1B\x01V[a\r.\x81a\x1BJV[a\x08\xACa\x1B\x01V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xA4WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xB1WP` \x82\x01Q\x15[\x80a\x19\xBEWP`@\x82\x01Q\x15[\x80a\x19\xCBWP``\x82\x01Q\x15[\x80a\x19\xD5WP\x81Q\x15[\x80a\x19\xE7WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xFBWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x19W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x1A\xB5\x82a\x1BRV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1A\xF9Wa\x18\xA9\x82\x82a\x1B\xB5V[a\x08!a\x1C'V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF7a\x1B\x01V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\x87W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+0_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1B\xD1\x91\x90a+\x19V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1C\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C\x0EV[``\x91P[P\x91P\x91Pa\x1C\x1E\x85\x83\x83a\x1CFV[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C[Wa\x1CV\x82a\x1C\xA5V[a\x1C\x9EV[\x81Q\x15\x80\x15a\x1CrWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\x9BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\xB5W\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\x1D\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Da`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x81`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Ea`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x81`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1FgW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F|W__\xFD[a\x1C\x9E\x82a\x1FQV[_` \x82\x84\x03\x12\x15a\x1F\x95W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xCE`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xD4Wa!\xD4a!\x9DV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x02Wa\"\x02a!\x9DV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FgW__\xFD[_``\x82\x84\x03\x12\x15a\"0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"RWa\"Ra!\x9DV[`@R\x90P\x80a\"a\x83a\"\nV[\x81Ra\"o` \x84\x01a\"\nV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\x95W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xB7Wa\"\xB7a!\x9DV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xE4W__\xFD[a\"\xEE\x85\x85a\" V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#\x02W__\xFD[Pa#\x0Ba!\xB1V[a#\x18\x85``\x86\x01a\"\x85V[\x81Ra#'\x85`\xA0\x86\x01a\"\x85V[` \x82\x01Ra#9\x85`\xE0\x86\x01a\"\x85V[`@\x82\x01Ra#L\x85a\x01 \x86\x01a\"\x85V[``\x82\x01Ra#_\x85a\x01`\x86\x01a\"\x85V[`\x80\x82\x01Ra#r\x85a\x01\xA0\x86\x01a\"\x85V[`\xA0\x82\x01Ra#\x85\x85a\x01\xE0\x86\x01a\"\x85V[`\xC0\x82\x01Ra#\x98\x85a\x02 \x86\x01a\"\x85V[`\xE0\x82\x01Ra#\xAB\x85a\x02`\x86\x01a\"\x85V[a\x01\0\x82\x01Ra#\xBF\x85a\x02\xA0\x86\x01a\"\x85V[a\x01 \x82\x01Ra#\xD3\x85a\x02\xE0\x86\x01a\"\x85V[a\x01@\x82\x01Ra#\xE7\x85a\x03 \x86\x01a\"\x85V[a\x01`\x82\x01Ra#\xFB\x85a\x03`\x86\x01a\"\x85V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a$\x92W__\xFD[a$\x9B\x83a\x1FQV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xB5W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xC5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xDEWa$\xDEa!\x9DV[a$\xF1`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xDAV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%\x05W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FgW__\xFD[_` \x82\x84\x03\x12\x15a%GW__\xFD[a\x1C\x9E\x82a%$V[____\x84\x86\x03a\x01 \x81\x12\x15a%eW__\xFD[a%o\x87\x87a\" V[\x94P`\x80`_\x19\x82\x01\x12\x15a%\x82W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xA5Wa%\xA5a!\x9DV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xDF`\xE0\x86\x01a%$V[\x91Pa%\xEEa\x01\0\x86\x01a\x1FQV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&?W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&NV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\x97Wa&\x97a&NV[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15\x19W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\xA1V[a&\xD5\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa(\xAC`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra*\x84a\x05\0\x83\x01\x85a&\x9EV[a*\x92a\x05\xE0\x83\x01\x84a&\xC0V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\xAAW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x9EW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&NV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xF9Wa*\xF9a&NV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a+\x12W__\xFD[PQ\x91\x90PV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
3708    );
3709    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3710    /**```solidity
3711struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
3712```*/
3713    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3714    #[derive(Clone)]
3715    pub struct LightClientState {
3716        #[allow(missing_docs)]
3717        pub viewNum: u64,
3718        #[allow(missing_docs)]
3719        pub blockHeight: u64,
3720        #[allow(missing_docs)]
3721        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3722    }
3723    #[allow(
3724        non_camel_case_types,
3725        non_snake_case,
3726        clippy::pub_underscore_fields,
3727        clippy::style
3728    )]
3729    const _: () = {
3730        use alloy::sol_types as alloy_sol_types;
3731        #[doc(hidden)]
3732        type UnderlyingSolTuple<'a> = (
3733            alloy::sol_types::sol_data::Uint<64>,
3734            alloy::sol_types::sol_data::Uint<64>,
3735            BN254::ScalarField,
3736        );
3737        #[doc(hidden)]
3738        type UnderlyingRustTuple<'a> = (
3739            u64,
3740            u64,
3741            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3742        );
3743        #[cfg(test)]
3744        #[allow(dead_code, unreachable_patterns)]
3745        fn _type_assertion(
3746            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3747        ) {
3748            match _t {
3749                alloy_sol_types::private::AssertTypeEq::<
3750                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3751                >(_) => {}
3752            }
3753        }
3754        #[automatically_derived]
3755        #[doc(hidden)]
3756        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
3757            fn from(value: LightClientState) -> Self {
3758                (value.viewNum, value.blockHeight, value.blockCommRoot)
3759            }
3760        }
3761        #[automatically_derived]
3762        #[doc(hidden)]
3763        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
3764            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3765                Self {
3766                    viewNum: tuple.0,
3767                    blockHeight: tuple.1,
3768                    blockCommRoot: tuple.2,
3769                }
3770            }
3771        }
3772        #[automatically_derived]
3773        impl alloy_sol_types::SolValue for LightClientState {
3774            type SolType = Self;
3775        }
3776        #[automatically_derived]
3777        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
3778            #[inline]
3779            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3780                (
3781                    <alloy::sol_types::sol_data::Uint<
3782                        64,
3783                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
3784                    <alloy::sol_types::sol_data::Uint<
3785                        64,
3786                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
3787                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
3788                        &self.blockCommRoot,
3789                    ),
3790                )
3791            }
3792            #[inline]
3793            fn stv_abi_encoded_size(&self) -> usize {
3794                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3795                    return size;
3796                }
3797                let tuple = <UnderlyingRustTuple<
3798                    '_,
3799                > as ::core::convert::From<Self>>::from(self.clone());
3800                <UnderlyingSolTuple<
3801                    '_,
3802                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3803            }
3804            #[inline]
3805            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3806                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3807            }
3808            #[inline]
3809            fn stv_abi_encode_packed_to(
3810                &self,
3811                out: &mut alloy_sol_types::private::Vec<u8>,
3812            ) {
3813                let tuple = <UnderlyingRustTuple<
3814                    '_,
3815                > as ::core::convert::From<Self>>::from(self.clone());
3816                <UnderlyingSolTuple<
3817                    '_,
3818                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3819            }
3820            #[inline]
3821            fn stv_abi_packed_encoded_size(&self) -> usize {
3822                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3823                    return size;
3824                }
3825                let tuple = <UnderlyingRustTuple<
3826                    '_,
3827                > as ::core::convert::From<Self>>::from(self.clone());
3828                <UnderlyingSolTuple<
3829                    '_,
3830                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3831            }
3832        }
3833        #[automatically_derived]
3834        impl alloy_sol_types::SolType for LightClientState {
3835            type RustType = Self;
3836            type Token<'a> = <UnderlyingSolTuple<
3837                'a,
3838            > as alloy_sol_types::SolType>::Token<'a>;
3839            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3840            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3841                '_,
3842            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3843            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3844                '_,
3845            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3846            #[inline]
3847            fn valid_token(token: &Self::Token<'_>) -> bool {
3848                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3849            }
3850            #[inline]
3851            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3852                let tuple = <UnderlyingSolTuple<
3853                    '_,
3854                > as alloy_sol_types::SolType>::detokenize(token);
3855                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3856            }
3857        }
3858        #[automatically_derived]
3859        impl alloy_sol_types::SolStruct for LightClientState {
3860            const NAME: &'static str = "LightClientState";
3861            #[inline]
3862            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3863                alloy_sol_types::private::Cow::Borrowed(
3864                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
3865                )
3866            }
3867            #[inline]
3868            fn eip712_components() -> alloy_sol_types::private::Vec<
3869                alloy_sol_types::private::Cow<'static, str>,
3870            > {
3871                alloy_sol_types::private::Vec::new()
3872            }
3873            #[inline]
3874            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3875                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3876            }
3877            #[inline]
3878            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3879                [
3880                    <alloy::sol_types::sol_data::Uint<
3881                        64,
3882                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
3883                        .0,
3884                    <alloy::sol_types::sol_data::Uint<
3885                        64,
3886                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
3887                        .0,
3888                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
3889                            &self.blockCommRoot,
3890                        )
3891                        .0,
3892                ]
3893                    .concat()
3894            }
3895        }
3896        #[automatically_derived]
3897        impl alloy_sol_types::EventTopic for LightClientState {
3898            #[inline]
3899            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3900                0usize
3901                    + <alloy::sol_types::sol_data::Uint<
3902                        64,
3903                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3904                        &rust.viewNum,
3905                    )
3906                    + <alloy::sol_types::sol_data::Uint<
3907                        64,
3908                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3909                        &rust.blockHeight,
3910                    )
3911                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3912                        &rust.blockCommRoot,
3913                    )
3914            }
3915            #[inline]
3916            fn encode_topic_preimage(
3917                rust: &Self::RustType,
3918                out: &mut alloy_sol_types::private::Vec<u8>,
3919            ) {
3920                out.reserve(
3921                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3922                );
3923                <alloy::sol_types::sol_data::Uint<
3924                    64,
3925                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3926                    &rust.viewNum,
3927                    out,
3928                );
3929                <alloy::sol_types::sol_data::Uint<
3930                    64,
3931                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3932                    &rust.blockHeight,
3933                    out,
3934                );
3935                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3936                    &rust.blockCommRoot,
3937                    out,
3938                );
3939            }
3940            #[inline]
3941            fn encode_topic(
3942                rust: &Self::RustType,
3943            ) -> alloy_sol_types::abi::token::WordToken {
3944                let mut out = alloy_sol_types::private::Vec::new();
3945                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3946                    rust,
3947                    &mut out,
3948                );
3949                alloy_sol_types::abi::token::WordToken(
3950                    alloy_sol_types::private::keccak256(out),
3951                )
3952            }
3953        }
3954    };
3955    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3956    /**```solidity
3957struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
3958```*/
3959    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3960    #[derive(Clone)]
3961    pub struct StakeTableState {
3962        #[allow(missing_docs)]
3963        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
3964        #[allow(missing_docs)]
3965        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3966        #[allow(missing_docs)]
3967        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3968        #[allow(missing_docs)]
3969        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3970    }
3971    #[allow(
3972        non_camel_case_types,
3973        non_snake_case,
3974        clippy::pub_underscore_fields,
3975        clippy::style
3976    )]
3977    const _: () = {
3978        use alloy::sol_types as alloy_sol_types;
3979        #[doc(hidden)]
3980        type UnderlyingSolTuple<'a> = (
3981            alloy::sol_types::sol_data::Uint<256>,
3982            BN254::ScalarField,
3983            BN254::ScalarField,
3984            BN254::ScalarField,
3985        );
3986        #[doc(hidden)]
3987        type UnderlyingRustTuple<'a> = (
3988            alloy::sol_types::private::primitives::aliases::U256,
3989            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3990            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3991            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3992        );
3993        #[cfg(test)]
3994        #[allow(dead_code, unreachable_patterns)]
3995        fn _type_assertion(
3996            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3997        ) {
3998            match _t {
3999                alloy_sol_types::private::AssertTypeEq::<
4000                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4001                >(_) => {}
4002            }
4003        }
4004        #[automatically_derived]
4005        #[doc(hidden)]
4006        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
4007            fn from(value: StakeTableState) -> Self {
4008                (
4009                    value.threshold,
4010                    value.blsKeyComm,
4011                    value.schnorrKeyComm,
4012                    value.amountComm,
4013                )
4014            }
4015        }
4016        #[automatically_derived]
4017        #[doc(hidden)]
4018        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
4019            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4020                Self {
4021                    threshold: tuple.0,
4022                    blsKeyComm: tuple.1,
4023                    schnorrKeyComm: tuple.2,
4024                    amountComm: tuple.3,
4025                }
4026            }
4027        }
4028        #[automatically_derived]
4029        impl alloy_sol_types::SolValue for StakeTableState {
4030            type SolType = Self;
4031        }
4032        #[automatically_derived]
4033        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
4034            #[inline]
4035            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
4036                (
4037                    <alloy::sol_types::sol_data::Uint<
4038                        256,
4039                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
4040                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4041                        &self.blsKeyComm,
4042                    ),
4043                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4044                        &self.schnorrKeyComm,
4045                    ),
4046                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4047                        &self.amountComm,
4048                    ),
4049                )
4050            }
4051            #[inline]
4052            fn stv_abi_encoded_size(&self) -> usize {
4053                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
4054                    return size;
4055                }
4056                let tuple = <UnderlyingRustTuple<
4057                    '_,
4058                > as ::core::convert::From<Self>>::from(self.clone());
4059                <UnderlyingSolTuple<
4060                    '_,
4061                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
4062            }
4063            #[inline]
4064            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
4065                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
4066            }
4067            #[inline]
4068            fn stv_abi_encode_packed_to(
4069                &self,
4070                out: &mut alloy_sol_types::private::Vec<u8>,
4071            ) {
4072                let tuple = <UnderlyingRustTuple<
4073                    '_,
4074                > as ::core::convert::From<Self>>::from(self.clone());
4075                <UnderlyingSolTuple<
4076                    '_,
4077                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
4078            }
4079            #[inline]
4080            fn stv_abi_packed_encoded_size(&self) -> usize {
4081                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
4082                    return size;
4083                }
4084                let tuple = <UnderlyingRustTuple<
4085                    '_,
4086                > as ::core::convert::From<Self>>::from(self.clone());
4087                <UnderlyingSolTuple<
4088                    '_,
4089                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
4090            }
4091        }
4092        #[automatically_derived]
4093        impl alloy_sol_types::SolType for StakeTableState {
4094            type RustType = Self;
4095            type Token<'a> = <UnderlyingSolTuple<
4096                'a,
4097            > as alloy_sol_types::SolType>::Token<'a>;
4098            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
4099            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4100                '_,
4101            > as alloy_sol_types::SolType>::ENCODED_SIZE;
4102            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4103                '_,
4104            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
4105            #[inline]
4106            fn valid_token(token: &Self::Token<'_>) -> bool {
4107                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
4108            }
4109            #[inline]
4110            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
4111                let tuple = <UnderlyingSolTuple<
4112                    '_,
4113                > as alloy_sol_types::SolType>::detokenize(token);
4114                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
4115            }
4116        }
4117        #[automatically_derived]
4118        impl alloy_sol_types::SolStruct for StakeTableState {
4119            const NAME: &'static str = "StakeTableState";
4120            #[inline]
4121            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
4122                alloy_sol_types::private::Cow::Borrowed(
4123                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
4124                )
4125            }
4126            #[inline]
4127            fn eip712_components() -> alloy_sol_types::private::Vec<
4128                alloy_sol_types::private::Cow<'static, str>,
4129            > {
4130                alloy_sol_types::private::Vec::new()
4131            }
4132            #[inline]
4133            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
4134                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
4135            }
4136            #[inline]
4137            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
4138                [
4139                    <alloy::sol_types::sol_data::Uint<
4140                        256,
4141                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
4142                        .0,
4143                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4144                            &self.blsKeyComm,
4145                        )
4146                        .0,
4147                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4148                            &self.schnorrKeyComm,
4149                        )
4150                        .0,
4151                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4152                            &self.amountComm,
4153                        )
4154                        .0,
4155                ]
4156                    .concat()
4157            }
4158        }
4159        #[automatically_derived]
4160        impl alloy_sol_types::EventTopic for StakeTableState {
4161            #[inline]
4162            fn topic_preimage_length(rust: &Self::RustType) -> usize {
4163                0usize
4164                    + <alloy::sol_types::sol_data::Uint<
4165                        256,
4166                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
4167                        &rust.threshold,
4168                    )
4169                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4170                        &rust.blsKeyComm,
4171                    )
4172                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4173                        &rust.schnorrKeyComm,
4174                    )
4175                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4176                        &rust.amountComm,
4177                    )
4178            }
4179            #[inline]
4180            fn encode_topic_preimage(
4181                rust: &Self::RustType,
4182                out: &mut alloy_sol_types::private::Vec<u8>,
4183            ) {
4184                out.reserve(
4185                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
4186                );
4187                <alloy::sol_types::sol_data::Uint<
4188                    256,
4189                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
4190                    &rust.threshold,
4191                    out,
4192                );
4193                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4194                    &rust.blsKeyComm,
4195                    out,
4196                );
4197                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4198                    &rust.schnorrKeyComm,
4199                    out,
4200                );
4201                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4202                    &rust.amountComm,
4203                    out,
4204                );
4205            }
4206            #[inline]
4207            fn encode_topic(
4208                rust: &Self::RustType,
4209            ) -> alloy_sol_types::abi::token::WordToken {
4210                let mut out = alloy_sol_types::private::Vec::new();
4211                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
4212                    rust,
4213                    &mut out,
4214                );
4215                alloy_sol_types::abi::token::WordToken(
4216                    alloy_sol_types::private::keccak256(out),
4217                )
4218            }
4219        }
4220    };
4221    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4222    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4223```solidity
4224error AddressEmptyCode(address target);
4225```*/
4226    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4227    #[derive(Clone)]
4228    pub struct AddressEmptyCode {
4229        #[allow(missing_docs)]
4230        pub target: alloy::sol_types::private::Address,
4231    }
4232    #[allow(
4233        non_camel_case_types,
4234        non_snake_case,
4235        clippy::pub_underscore_fields,
4236        clippy::style
4237    )]
4238    const _: () = {
4239        use alloy::sol_types as alloy_sol_types;
4240        #[doc(hidden)]
4241        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4242        #[doc(hidden)]
4243        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4244        #[cfg(test)]
4245        #[allow(dead_code, unreachable_patterns)]
4246        fn _type_assertion(
4247            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4248        ) {
4249            match _t {
4250                alloy_sol_types::private::AssertTypeEq::<
4251                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4252                >(_) => {}
4253            }
4254        }
4255        #[automatically_derived]
4256        #[doc(hidden)]
4257        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4258            fn from(value: AddressEmptyCode) -> Self {
4259                (value.target,)
4260            }
4261        }
4262        #[automatically_derived]
4263        #[doc(hidden)]
4264        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4265            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4266                Self { target: tuple.0 }
4267            }
4268        }
4269        #[automatically_derived]
4270        impl alloy_sol_types::SolError for AddressEmptyCode {
4271            type Parameters<'a> = UnderlyingSolTuple<'a>;
4272            type Token<'a> = <Self::Parameters<
4273                'a,
4274            > as alloy_sol_types::SolType>::Token<'a>;
4275            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4276            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4277            #[inline]
4278            fn new<'a>(
4279                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4280            ) -> Self {
4281                tuple.into()
4282            }
4283            #[inline]
4284            fn tokenize(&self) -> Self::Token<'_> {
4285                (
4286                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4287                        &self.target,
4288                    ),
4289                )
4290            }
4291        }
4292    };
4293    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4294    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4295```solidity
4296error ERC1967InvalidImplementation(address implementation);
4297```*/
4298    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4299    #[derive(Clone)]
4300    pub struct ERC1967InvalidImplementation {
4301        #[allow(missing_docs)]
4302        pub implementation: alloy::sol_types::private::Address,
4303    }
4304    #[allow(
4305        non_camel_case_types,
4306        non_snake_case,
4307        clippy::pub_underscore_fields,
4308        clippy::style
4309    )]
4310    const _: () = {
4311        use alloy::sol_types as alloy_sol_types;
4312        #[doc(hidden)]
4313        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4314        #[doc(hidden)]
4315        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4316        #[cfg(test)]
4317        #[allow(dead_code, unreachable_patterns)]
4318        fn _type_assertion(
4319            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4320        ) {
4321            match _t {
4322                alloy_sol_types::private::AssertTypeEq::<
4323                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4324                >(_) => {}
4325            }
4326        }
4327        #[automatically_derived]
4328        #[doc(hidden)]
4329        impl ::core::convert::From<ERC1967InvalidImplementation>
4330        for UnderlyingRustTuple<'_> {
4331            fn from(value: ERC1967InvalidImplementation) -> Self {
4332                (value.implementation,)
4333            }
4334        }
4335        #[automatically_derived]
4336        #[doc(hidden)]
4337        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4338        for ERC1967InvalidImplementation {
4339            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4340                Self { implementation: tuple.0 }
4341            }
4342        }
4343        #[automatically_derived]
4344        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4345            type Parameters<'a> = UnderlyingSolTuple<'a>;
4346            type Token<'a> = <Self::Parameters<
4347                'a,
4348            > as alloy_sol_types::SolType>::Token<'a>;
4349            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4350            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4351            #[inline]
4352            fn new<'a>(
4353                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4354            ) -> Self {
4355                tuple.into()
4356            }
4357            #[inline]
4358            fn tokenize(&self) -> Self::Token<'_> {
4359                (
4360                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4361                        &self.implementation,
4362                    ),
4363                )
4364            }
4365        }
4366    };
4367    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4368    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4369```solidity
4370error ERC1967NonPayable();
4371```*/
4372    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4373    #[derive(Clone)]
4374    pub struct ERC1967NonPayable {}
4375    #[allow(
4376        non_camel_case_types,
4377        non_snake_case,
4378        clippy::pub_underscore_fields,
4379        clippy::style
4380    )]
4381    const _: () = {
4382        use alloy::sol_types as alloy_sol_types;
4383        #[doc(hidden)]
4384        type UnderlyingSolTuple<'a> = ();
4385        #[doc(hidden)]
4386        type UnderlyingRustTuple<'a> = ();
4387        #[cfg(test)]
4388        #[allow(dead_code, unreachable_patterns)]
4389        fn _type_assertion(
4390            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4391        ) {
4392            match _t {
4393                alloy_sol_types::private::AssertTypeEq::<
4394                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4395                >(_) => {}
4396            }
4397        }
4398        #[automatically_derived]
4399        #[doc(hidden)]
4400        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4401            fn from(value: ERC1967NonPayable) -> Self {
4402                ()
4403            }
4404        }
4405        #[automatically_derived]
4406        #[doc(hidden)]
4407        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4408            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4409                Self {}
4410            }
4411        }
4412        #[automatically_derived]
4413        impl alloy_sol_types::SolError for ERC1967NonPayable {
4414            type Parameters<'a> = UnderlyingSolTuple<'a>;
4415            type Token<'a> = <Self::Parameters<
4416                'a,
4417            > as alloy_sol_types::SolType>::Token<'a>;
4418            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4419            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4420            #[inline]
4421            fn new<'a>(
4422                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4423            ) -> Self {
4424                tuple.into()
4425            }
4426            #[inline]
4427            fn tokenize(&self) -> Self::Token<'_> {
4428                ()
4429            }
4430        }
4431    };
4432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4433    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4434```solidity
4435error FailedInnerCall();
4436```*/
4437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4438    #[derive(Clone)]
4439    pub struct FailedInnerCall {}
4440    #[allow(
4441        non_camel_case_types,
4442        non_snake_case,
4443        clippy::pub_underscore_fields,
4444        clippy::style
4445    )]
4446    const _: () = {
4447        use alloy::sol_types as alloy_sol_types;
4448        #[doc(hidden)]
4449        type UnderlyingSolTuple<'a> = ();
4450        #[doc(hidden)]
4451        type UnderlyingRustTuple<'a> = ();
4452        #[cfg(test)]
4453        #[allow(dead_code, unreachable_patterns)]
4454        fn _type_assertion(
4455            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4456        ) {
4457            match _t {
4458                alloy_sol_types::private::AssertTypeEq::<
4459                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4460                >(_) => {}
4461            }
4462        }
4463        #[automatically_derived]
4464        #[doc(hidden)]
4465        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4466            fn from(value: FailedInnerCall) -> Self {
4467                ()
4468            }
4469        }
4470        #[automatically_derived]
4471        #[doc(hidden)]
4472        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4473            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4474                Self {}
4475            }
4476        }
4477        #[automatically_derived]
4478        impl alloy_sol_types::SolError for FailedInnerCall {
4479            type Parameters<'a> = UnderlyingSolTuple<'a>;
4480            type Token<'a> = <Self::Parameters<
4481                'a,
4482            > as alloy_sol_types::SolType>::Token<'a>;
4483            const SIGNATURE: &'static str = "FailedInnerCall()";
4484            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4485            #[inline]
4486            fn new<'a>(
4487                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4488            ) -> Self {
4489                tuple.into()
4490            }
4491            #[inline]
4492            fn tokenize(&self) -> Self::Token<'_> {
4493                ()
4494            }
4495        }
4496    };
4497    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4498    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4499```solidity
4500error InsufficientSnapshotHistory();
4501```*/
4502    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4503    #[derive(Clone)]
4504    pub struct InsufficientSnapshotHistory {}
4505    #[allow(
4506        non_camel_case_types,
4507        non_snake_case,
4508        clippy::pub_underscore_fields,
4509        clippy::style
4510    )]
4511    const _: () = {
4512        use alloy::sol_types as alloy_sol_types;
4513        #[doc(hidden)]
4514        type UnderlyingSolTuple<'a> = ();
4515        #[doc(hidden)]
4516        type UnderlyingRustTuple<'a> = ();
4517        #[cfg(test)]
4518        #[allow(dead_code, unreachable_patterns)]
4519        fn _type_assertion(
4520            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4521        ) {
4522            match _t {
4523                alloy_sol_types::private::AssertTypeEq::<
4524                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4525                >(_) => {}
4526            }
4527        }
4528        #[automatically_derived]
4529        #[doc(hidden)]
4530        impl ::core::convert::From<InsufficientSnapshotHistory>
4531        for UnderlyingRustTuple<'_> {
4532            fn from(value: InsufficientSnapshotHistory) -> Self {
4533                ()
4534            }
4535        }
4536        #[automatically_derived]
4537        #[doc(hidden)]
4538        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4539        for InsufficientSnapshotHistory {
4540            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4541                Self {}
4542            }
4543        }
4544        #[automatically_derived]
4545        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4546            type Parameters<'a> = UnderlyingSolTuple<'a>;
4547            type Token<'a> = <Self::Parameters<
4548                'a,
4549            > as alloy_sol_types::SolType>::Token<'a>;
4550            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4551            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4552            #[inline]
4553            fn new<'a>(
4554                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4555            ) -> Self {
4556                tuple.into()
4557            }
4558            #[inline]
4559            fn tokenize(&self) -> Self::Token<'_> {
4560                ()
4561            }
4562        }
4563    };
4564    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4565    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4566```solidity
4567error InvalidAddress();
4568```*/
4569    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4570    #[derive(Clone)]
4571    pub struct InvalidAddress {}
4572    #[allow(
4573        non_camel_case_types,
4574        non_snake_case,
4575        clippy::pub_underscore_fields,
4576        clippy::style
4577    )]
4578    const _: () = {
4579        use alloy::sol_types as alloy_sol_types;
4580        #[doc(hidden)]
4581        type UnderlyingSolTuple<'a> = ();
4582        #[doc(hidden)]
4583        type UnderlyingRustTuple<'a> = ();
4584        #[cfg(test)]
4585        #[allow(dead_code, unreachable_patterns)]
4586        fn _type_assertion(
4587            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4588        ) {
4589            match _t {
4590                alloy_sol_types::private::AssertTypeEq::<
4591                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4592                >(_) => {}
4593            }
4594        }
4595        #[automatically_derived]
4596        #[doc(hidden)]
4597        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4598            fn from(value: InvalidAddress) -> Self {
4599                ()
4600            }
4601        }
4602        #[automatically_derived]
4603        #[doc(hidden)]
4604        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4605            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4606                Self {}
4607            }
4608        }
4609        #[automatically_derived]
4610        impl alloy_sol_types::SolError for InvalidAddress {
4611            type Parameters<'a> = UnderlyingSolTuple<'a>;
4612            type Token<'a> = <Self::Parameters<
4613                'a,
4614            > as alloy_sol_types::SolType>::Token<'a>;
4615            const SIGNATURE: &'static str = "InvalidAddress()";
4616            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4617            #[inline]
4618            fn new<'a>(
4619                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4620            ) -> Self {
4621                tuple.into()
4622            }
4623            #[inline]
4624            fn tokenize(&self) -> Self::Token<'_> {
4625                ()
4626            }
4627        }
4628    };
4629    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4630    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4631```solidity
4632error InvalidArgs();
4633```*/
4634    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4635    #[derive(Clone)]
4636    pub struct InvalidArgs {}
4637    #[allow(
4638        non_camel_case_types,
4639        non_snake_case,
4640        clippy::pub_underscore_fields,
4641        clippy::style
4642    )]
4643    const _: () = {
4644        use alloy::sol_types as alloy_sol_types;
4645        #[doc(hidden)]
4646        type UnderlyingSolTuple<'a> = ();
4647        #[doc(hidden)]
4648        type UnderlyingRustTuple<'a> = ();
4649        #[cfg(test)]
4650        #[allow(dead_code, unreachable_patterns)]
4651        fn _type_assertion(
4652            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4653        ) {
4654            match _t {
4655                alloy_sol_types::private::AssertTypeEq::<
4656                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4657                >(_) => {}
4658            }
4659        }
4660        #[automatically_derived]
4661        #[doc(hidden)]
4662        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4663            fn from(value: InvalidArgs) -> Self {
4664                ()
4665            }
4666        }
4667        #[automatically_derived]
4668        #[doc(hidden)]
4669        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4670            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4671                Self {}
4672            }
4673        }
4674        #[automatically_derived]
4675        impl alloy_sol_types::SolError for InvalidArgs {
4676            type Parameters<'a> = UnderlyingSolTuple<'a>;
4677            type Token<'a> = <Self::Parameters<
4678                'a,
4679            > as alloy_sol_types::SolType>::Token<'a>;
4680            const SIGNATURE: &'static str = "InvalidArgs()";
4681            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4682            #[inline]
4683            fn new<'a>(
4684                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4685            ) -> Self {
4686                tuple.into()
4687            }
4688            #[inline]
4689            fn tokenize(&self) -> Self::Token<'_> {
4690                ()
4691            }
4692        }
4693    };
4694    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4695    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4696```solidity
4697error InvalidHotShotBlockForCommitmentCheck();
4698```*/
4699    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4700    #[derive(Clone)]
4701    pub struct InvalidHotShotBlockForCommitmentCheck {}
4702    #[allow(
4703        non_camel_case_types,
4704        non_snake_case,
4705        clippy::pub_underscore_fields,
4706        clippy::style
4707    )]
4708    const _: () = {
4709        use alloy::sol_types as alloy_sol_types;
4710        #[doc(hidden)]
4711        type UnderlyingSolTuple<'a> = ();
4712        #[doc(hidden)]
4713        type UnderlyingRustTuple<'a> = ();
4714        #[cfg(test)]
4715        #[allow(dead_code, unreachable_patterns)]
4716        fn _type_assertion(
4717            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4718        ) {
4719            match _t {
4720                alloy_sol_types::private::AssertTypeEq::<
4721                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4722                >(_) => {}
4723            }
4724        }
4725        #[automatically_derived]
4726        #[doc(hidden)]
4727        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
4728        for UnderlyingRustTuple<'_> {
4729            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4730                ()
4731            }
4732        }
4733        #[automatically_derived]
4734        #[doc(hidden)]
4735        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4736        for InvalidHotShotBlockForCommitmentCheck {
4737            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4738                Self {}
4739            }
4740        }
4741        #[automatically_derived]
4742        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4743            type Parameters<'a> = UnderlyingSolTuple<'a>;
4744            type Token<'a> = <Self::Parameters<
4745                'a,
4746            > as alloy_sol_types::SolType>::Token<'a>;
4747            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4748            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4749            #[inline]
4750            fn new<'a>(
4751                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4752            ) -> Self {
4753                tuple.into()
4754            }
4755            #[inline]
4756            fn tokenize(&self) -> Self::Token<'_> {
4757                ()
4758            }
4759        }
4760    };
4761    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4762    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4763```solidity
4764error InvalidInitialization();
4765```*/
4766    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4767    #[derive(Clone)]
4768    pub struct InvalidInitialization {}
4769    #[allow(
4770        non_camel_case_types,
4771        non_snake_case,
4772        clippy::pub_underscore_fields,
4773        clippy::style
4774    )]
4775    const _: () = {
4776        use alloy::sol_types as alloy_sol_types;
4777        #[doc(hidden)]
4778        type UnderlyingSolTuple<'a> = ();
4779        #[doc(hidden)]
4780        type UnderlyingRustTuple<'a> = ();
4781        #[cfg(test)]
4782        #[allow(dead_code, unreachable_patterns)]
4783        fn _type_assertion(
4784            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4785        ) {
4786            match _t {
4787                alloy_sol_types::private::AssertTypeEq::<
4788                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4789                >(_) => {}
4790            }
4791        }
4792        #[automatically_derived]
4793        #[doc(hidden)]
4794        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4795            fn from(value: InvalidInitialization) -> Self {
4796                ()
4797            }
4798        }
4799        #[automatically_derived]
4800        #[doc(hidden)]
4801        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4802            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4803                Self {}
4804            }
4805        }
4806        #[automatically_derived]
4807        impl alloy_sol_types::SolError for InvalidInitialization {
4808            type Parameters<'a> = UnderlyingSolTuple<'a>;
4809            type Token<'a> = <Self::Parameters<
4810                'a,
4811            > as alloy_sol_types::SolType>::Token<'a>;
4812            const SIGNATURE: &'static str = "InvalidInitialization()";
4813            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4814            #[inline]
4815            fn new<'a>(
4816                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4817            ) -> Self {
4818                tuple.into()
4819            }
4820            #[inline]
4821            fn tokenize(&self) -> Self::Token<'_> {
4822                ()
4823            }
4824        }
4825    };
4826    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4827    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
4828```solidity
4829error InvalidMaxStateHistory();
4830```*/
4831    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4832    #[derive(Clone)]
4833    pub struct InvalidMaxStateHistory {}
4834    #[allow(
4835        non_camel_case_types,
4836        non_snake_case,
4837        clippy::pub_underscore_fields,
4838        clippy::style
4839    )]
4840    const _: () = {
4841        use alloy::sol_types as alloy_sol_types;
4842        #[doc(hidden)]
4843        type UnderlyingSolTuple<'a> = ();
4844        #[doc(hidden)]
4845        type UnderlyingRustTuple<'a> = ();
4846        #[cfg(test)]
4847        #[allow(dead_code, unreachable_patterns)]
4848        fn _type_assertion(
4849            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4850        ) {
4851            match _t {
4852                alloy_sol_types::private::AssertTypeEq::<
4853                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4854                >(_) => {}
4855            }
4856        }
4857        #[automatically_derived]
4858        #[doc(hidden)]
4859        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
4860            fn from(value: InvalidMaxStateHistory) -> Self {
4861                ()
4862            }
4863        }
4864        #[automatically_derived]
4865        #[doc(hidden)]
4866        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
4867            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4868                Self {}
4869            }
4870        }
4871        #[automatically_derived]
4872        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
4873            type Parameters<'a> = UnderlyingSolTuple<'a>;
4874            type Token<'a> = <Self::Parameters<
4875                'a,
4876            > as alloy_sol_types::SolType>::Token<'a>;
4877            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
4878            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
4879            #[inline]
4880            fn new<'a>(
4881                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4882            ) -> Self {
4883                tuple.into()
4884            }
4885            #[inline]
4886            fn tokenize(&self) -> Self::Token<'_> {
4887                ()
4888            }
4889        }
4890    };
4891    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4892    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
4893```solidity
4894error InvalidProof();
4895```*/
4896    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4897    #[derive(Clone)]
4898    pub struct InvalidProof {}
4899    #[allow(
4900        non_camel_case_types,
4901        non_snake_case,
4902        clippy::pub_underscore_fields,
4903        clippy::style
4904    )]
4905    const _: () = {
4906        use alloy::sol_types as alloy_sol_types;
4907        #[doc(hidden)]
4908        type UnderlyingSolTuple<'a> = ();
4909        #[doc(hidden)]
4910        type UnderlyingRustTuple<'a> = ();
4911        #[cfg(test)]
4912        #[allow(dead_code, unreachable_patterns)]
4913        fn _type_assertion(
4914            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4915        ) {
4916            match _t {
4917                alloy_sol_types::private::AssertTypeEq::<
4918                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4919                >(_) => {}
4920            }
4921        }
4922        #[automatically_derived]
4923        #[doc(hidden)]
4924        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
4925            fn from(value: InvalidProof) -> Self {
4926                ()
4927            }
4928        }
4929        #[automatically_derived]
4930        #[doc(hidden)]
4931        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
4932            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4933                Self {}
4934            }
4935        }
4936        #[automatically_derived]
4937        impl alloy_sol_types::SolError for InvalidProof {
4938            type Parameters<'a> = UnderlyingSolTuple<'a>;
4939            type Token<'a> = <Self::Parameters<
4940                'a,
4941            > as alloy_sol_types::SolType>::Token<'a>;
4942            const SIGNATURE: &'static str = "InvalidProof()";
4943            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
4944            #[inline]
4945            fn new<'a>(
4946                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4947            ) -> Self {
4948                tuple.into()
4949            }
4950            #[inline]
4951            fn tokenize(&self) -> Self::Token<'_> {
4952                ()
4953            }
4954        }
4955    };
4956    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4957    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
4958```solidity
4959error NoChangeRequired();
4960```*/
4961    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4962    #[derive(Clone)]
4963    pub struct NoChangeRequired {}
4964    #[allow(
4965        non_camel_case_types,
4966        non_snake_case,
4967        clippy::pub_underscore_fields,
4968        clippy::style
4969    )]
4970    const _: () = {
4971        use alloy::sol_types as alloy_sol_types;
4972        #[doc(hidden)]
4973        type UnderlyingSolTuple<'a> = ();
4974        #[doc(hidden)]
4975        type UnderlyingRustTuple<'a> = ();
4976        #[cfg(test)]
4977        #[allow(dead_code, unreachable_patterns)]
4978        fn _type_assertion(
4979            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4980        ) {
4981            match _t {
4982                alloy_sol_types::private::AssertTypeEq::<
4983                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4984                >(_) => {}
4985            }
4986        }
4987        #[automatically_derived]
4988        #[doc(hidden)]
4989        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
4990            fn from(value: NoChangeRequired) -> Self {
4991                ()
4992            }
4993        }
4994        #[automatically_derived]
4995        #[doc(hidden)]
4996        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
4997            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4998                Self {}
4999            }
5000        }
5001        #[automatically_derived]
5002        impl alloy_sol_types::SolError for NoChangeRequired {
5003            type Parameters<'a> = UnderlyingSolTuple<'a>;
5004            type Token<'a> = <Self::Parameters<
5005                'a,
5006            > as alloy_sol_types::SolType>::Token<'a>;
5007            const SIGNATURE: &'static str = "NoChangeRequired()";
5008            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5009            #[inline]
5010            fn new<'a>(
5011                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5012            ) -> Self {
5013                tuple.into()
5014            }
5015            #[inline]
5016            fn tokenize(&self) -> Self::Token<'_> {
5017                ()
5018            }
5019        }
5020    };
5021    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5022    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5023```solidity
5024error NotInitializing();
5025```*/
5026    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5027    #[derive(Clone)]
5028    pub struct NotInitializing {}
5029    #[allow(
5030        non_camel_case_types,
5031        non_snake_case,
5032        clippy::pub_underscore_fields,
5033        clippy::style
5034    )]
5035    const _: () = {
5036        use alloy::sol_types as alloy_sol_types;
5037        #[doc(hidden)]
5038        type UnderlyingSolTuple<'a> = ();
5039        #[doc(hidden)]
5040        type UnderlyingRustTuple<'a> = ();
5041        #[cfg(test)]
5042        #[allow(dead_code, unreachable_patterns)]
5043        fn _type_assertion(
5044            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5045        ) {
5046            match _t {
5047                alloy_sol_types::private::AssertTypeEq::<
5048                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5049                >(_) => {}
5050            }
5051        }
5052        #[automatically_derived]
5053        #[doc(hidden)]
5054        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5055            fn from(value: NotInitializing) -> Self {
5056                ()
5057            }
5058        }
5059        #[automatically_derived]
5060        #[doc(hidden)]
5061        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5062            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5063                Self {}
5064            }
5065        }
5066        #[automatically_derived]
5067        impl alloy_sol_types::SolError for NotInitializing {
5068            type Parameters<'a> = UnderlyingSolTuple<'a>;
5069            type Token<'a> = <Self::Parameters<
5070                'a,
5071            > as alloy_sol_types::SolType>::Token<'a>;
5072            const SIGNATURE: &'static str = "NotInitializing()";
5073            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5074            #[inline]
5075            fn new<'a>(
5076                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5077            ) -> Self {
5078                tuple.into()
5079            }
5080            #[inline]
5081            fn tokenize(&self) -> Self::Token<'_> {
5082                ()
5083            }
5084        }
5085    };
5086    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5087    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5088```solidity
5089error OutdatedState();
5090```*/
5091    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5092    #[derive(Clone)]
5093    pub struct OutdatedState {}
5094    #[allow(
5095        non_camel_case_types,
5096        non_snake_case,
5097        clippy::pub_underscore_fields,
5098        clippy::style
5099    )]
5100    const _: () = {
5101        use alloy::sol_types as alloy_sol_types;
5102        #[doc(hidden)]
5103        type UnderlyingSolTuple<'a> = ();
5104        #[doc(hidden)]
5105        type UnderlyingRustTuple<'a> = ();
5106        #[cfg(test)]
5107        #[allow(dead_code, unreachable_patterns)]
5108        fn _type_assertion(
5109            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5110        ) {
5111            match _t {
5112                alloy_sol_types::private::AssertTypeEq::<
5113                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5114                >(_) => {}
5115            }
5116        }
5117        #[automatically_derived]
5118        #[doc(hidden)]
5119        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5120            fn from(value: OutdatedState) -> Self {
5121                ()
5122            }
5123        }
5124        #[automatically_derived]
5125        #[doc(hidden)]
5126        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5127            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5128                Self {}
5129            }
5130        }
5131        #[automatically_derived]
5132        impl alloy_sol_types::SolError for OutdatedState {
5133            type Parameters<'a> = UnderlyingSolTuple<'a>;
5134            type Token<'a> = <Self::Parameters<
5135                'a,
5136            > as alloy_sol_types::SolType>::Token<'a>;
5137            const SIGNATURE: &'static str = "OutdatedState()";
5138            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5139            #[inline]
5140            fn new<'a>(
5141                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5142            ) -> Self {
5143                tuple.into()
5144            }
5145            #[inline]
5146            fn tokenize(&self) -> Self::Token<'_> {
5147                ()
5148            }
5149        }
5150    };
5151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5152    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5153```solidity
5154error OwnableInvalidOwner(address owner);
5155```*/
5156    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5157    #[derive(Clone)]
5158    pub struct OwnableInvalidOwner {
5159        #[allow(missing_docs)]
5160        pub owner: alloy::sol_types::private::Address,
5161    }
5162    #[allow(
5163        non_camel_case_types,
5164        non_snake_case,
5165        clippy::pub_underscore_fields,
5166        clippy::style
5167    )]
5168    const _: () = {
5169        use alloy::sol_types as alloy_sol_types;
5170        #[doc(hidden)]
5171        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5172        #[doc(hidden)]
5173        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5174        #[cfg(test)]
5175        #[allow(dead_code, unreachable_patterns)]
5176        fn _type_assertion(
5177            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5178        ) {
5179            match _t {
5180                alloy_sol_types::private::AssertTypeEq::<
5181                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5182                >(_) => {}
5183            }
5184        }
5185        #[automatically_derived]
5186        #[doc(hidden)]
5187        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5188            fn from(value: OwnableInvalidOwner) -> Self {
5189                (value.owner,)
5190            }
5191        }
5192        #[automatically_derived]
5193        #[doc(hidden)]
5194        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5195            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5196                Self { owner: tuple.0 }
5197            }
5198        }
5199        #[automatically_derived]
5200        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5201            type Parameters<'a> = UnderlyingSolTuple<'a>;
5202            type Token<'a> = <Self::Parameters<
5203                'a,
5204            > as alloy_sol_types::SolType>::Token<'a>;
5205            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5206            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5207            #[inline]
5208            fn new<'a>(
5209                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5210            ) -> Self {
5211                tuple.into()
5212            }
5213            #[inline]
5214            fn tokenize(&self) -> Self::Token<'_> {
5215                (
5216                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5217                        &self.owner,
5218                    ),
5219                )
5220            }
5221        }
5222    };
5223    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5224    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5225```solidity
5226error OwnableUnauthorizedAccount(address account);
5227```*/
5228    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5229    #[derive(Clone)]
5230    pub struct OwnableUnauthorizedAccount {
5231        #[allow(missing_docs)]
5232        pub account: alloy::sol_types::private::Address,
5233    }
5234    #[allow(
5235        non_camel_case_types,
5236        non_snake_case,
5237        clippy::pub_underscore_fields,
5238        clippy::style
5239    )]
5240    const _: () = {
5241        use alloy::sol_types as alloy_sol_types;
5242        #[doc(hidden)]
5243        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5244        #[doc(hidden)]
5245        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5246        #[cfg(test)]
5247        #[allow(dead_code, unreachable_patterns)]
5248        fn _type_assertion(
5249            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5250        ) {
5251            match _t {
5252                alloy_sol_types::private::AssertTypeEq::<
5253                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5254                >(_) => {}
5255            }
5256        }
5257        #[automatically_derived]
5258        #[doc(hidden)]
5259        impl ::core::convert::From<OwnableUnauthorizedAccount>
5260        for UnderlyingRustTuple<'_> {
5261            fn from(value: OwnableUnauthorizedAccount) -> Self {
5262                (value.account,)
5263            }
5264        }
5265        #[automatically_derived]
5266        #[doc(hidden)]
5267        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5268        for OwnableUnauthorizedAccount {
5269            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5270                Self { account: tuple.0 }
5271            }
5272        }
5273        #[automatically_derived]
5274        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5275            type Parameters<'a> = UnderlyingSolTuple<'a>;
5276            type Token<'a> = <Self::Parameters<
5277                'a,
5278            > as alloy_sol_types::SolType>::Token<'a>;
5279            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5280            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5281            #[inline]
5282            fn new<'a>(
5283                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5284            ) -> Self {
5285                tuple.into()
5286            }
5287            #[inline]
5288            fn tokenize(&self) -> Self::Token<'_> {
5289                (
5290                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5291                        &self.account,
5292                    ),
5293                )
5294            }
5295        }
5296    };
5297    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5298    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5299```solidity
5300error ProverNotPermissioned();
5301```*/
5302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5303    #[derive(Clone)]
5304    pub struct ProverNotPermissioned {}
5305    #[allow(
5306        non_camel_case_types,
5307        non_snake_case,
5308        clippy::pub_underscore_fields,
5309        clippy::style
5310    )]
5311    const _: () = {
5312        use alloy::sol_types as alloy_sol_types;
5313        #[doc(hidden)]
5314        type UnderlyingSolTuple<'a> = ();
5315        #[doc(hidden)]
5316        type UnderlyingRustTuple<'a> = ();
5317        #[cfg(test)]
5318        #[allow(dead_code, unreachable_patterns)]
5319        fn _type_assertion(
5320            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5321        ) {
5322            match _t {
5323                alloy_sol_types::private::AssertTypeEq::<
5324                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5325                >(_) => {}
5326            }
5327        }
5328        #[automatically_derived]
5329        #[doc(hidden)]
5330        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5331            fn from(value: ProverNotPermissioned) -> Self {
5332                ()
5333            }
5334        }
5335        #[automatically_derived]
5336        #[doc(hidden)]
5337        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5338            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5339                Self {}
5340            }
5341        }
5342        #[automatically_derived]
5343        impl alloy_sol_types::SolError for ProverNotPermissioned {
5344            type Parameters<'a> = UnderlyingSolTuple<'a>;
5345            type Token<'a> = <Self::Parameters<
5346                'a,
5347            > as alloy_sol_types::SolType>::Token<'a>;
5348            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5349            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5350            #[inline]
5351            fn new<'a>(
5352                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5353            ) -> Self {
5354                tuple.into()
5355            }
5356            #[inline]
5357            fn tokenize(&self) -> Self::Token<'_> {
5358                ()
5359            }
5360        }
5361    };
5362    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5363    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5364```solidity
5365error UUPSUnauthorizedCallContext();
5366```*/
5367    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5368    #[derive(Clone)]
5369    pub struct UUPSUnauthorizedCallContext {}
5370    #[allow(
5371        non_camel_case_types,
5372        non_snake_case,
5373        clippy::pub_underscore_fields,
5374        clippy::style
5375    )]
5376    const _: () = {
5377        use alloy::sol_types as alloy_sol_types;
5378        #[doc(hidden)]
5379        type UnderlyingSolTuple<'a> = ();
5380        #[doc(hidden)]
5381        type UnderlyingRustTuple<'a> = ();
5382        #[cfg(test)]
5383        #[allow(dead_code, unreachable_patterns)]
5384        fn _type_assertion(
5385            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5386        ) {
5387            match _t {
5388                alloy_sol_types::private::AssertTypeEq::<
5389                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5390                >(_) => {}
5391            }
5392        }
5393        #[automatically_derived]
5394        #[doc(hidden)]
5395        impl ::core::convert::From<UUPSUnauthorizedCallContext>
5396        for UnderlyingRustTuple<'_> {
5397            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5398                ()
5399            }
5400        }
5401        #[automatically_derived]
5402        #[doc(hidden)]
5403        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5404        for UUPSUnauthorizedCallContext {
5405            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5406                Self {}
5407            }
5408        }
5409        #[automatically_derived]
5410        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5411            type Parameters<'a> = UnderlyingSolTuple<'a>;
5412            type Token<'a> = <Self::Parameters<
5413                'a,
5414            > as alloy_sol_types::SolType>::Token<'a>;
5415            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5416            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5417            #[inline]
5418            fn new<'a>(
5419                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5420            ) -> Self {
5421                tuple.into()
5422            }
5423            #[inline]
5424            fn tokenize(&self) -> Self::Token<'_> {
5425                ()
5426            }
5427        }
5428    };
5429    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5430    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5431```solidity
5432error UUPSUnsupportedProxiableUUID(bytes32 slot);
5433```*/
5434    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5435    #[derive(Clone)]
5436    pub struct UUPSUnsupportedProxiableUUID {
5437        #[allow(missing_docs)]
5438        pub slot: alloy::sol_types::private::FixedBytes<32>,
5439    }
5440    #[allow(
5441        non_camel_case_types,
5442        non_snake_case,
5443        clippy::pub_underscore_fields,
5444        clippy::style
5445    )]
5446    const _: () = {
5447        use alloy::sol_types as alloy_sol_types;
5448        #[doc(hidden)]
5449        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5450        #[doc(hidden)]
5451        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5452        #[cfg(test)]
5453        #[allow(dead_code, unreachable_patterns)]
5454        fn _type_assertion(
5455            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5456        ) {
5457            match _t {
5458                alloy_sol_types::private::AssertTypeEq::<
5459                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5460                >(_) => {}
5461            }
5462        }
5463        #[automatically_derived]
5464        #[doc(hidden)]
5465        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5466        for UnderlyingRustTuple<'_> {
5467            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5468                (value.slot,)
5469            }
5470        }
5471        #[automatically_derived]
5472        #[doc(hidden)]
5473        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5474        for UUPSUnsupportedProxiableUUID {
5475            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5476                Self { slot: tuple.0 }
5477            }
5478        }
5479        #[automatically_derived]
5480        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5481            type Parameters<'a> = UnderlyingSolTuple<'a>;
5482            type Token<'a> = <Self::Parameters<
5483                'a,
5484            > as alloy_sol_types::SolType>::Token<'a>;
5485            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5486            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5487            #[inline]
5488            fn new<'a>(
5489                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5490            ) -> Self {
5491                tuple.into()
5492            }
5493            #[inline]
5494            fn tokenize(&self) -> Self::Token<'_> {
5495                (
5496                    <alloy::sol_types::sol_data::FixedBytes<
5497                        32,
5498                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5499                )
5500            }
5501        }
5502    };
5503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5504    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5505```solidity
5506error WrongStakeTableUsed();
5507```*/
5508    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5509    #[derive(Clone)]
5510    pub struct WrongStakeTableUsed {}
5511    #[allow(
5512        non_camel_case_types,
5513        non_snake_case,
5514        clippy::pub_underscore_fields,
5515        clippy::style
5516    )]
5517    const _: () = {
5518        use alloy::sol_types as alloy_sol_types;
5519        #[doc(hidden)]
5520        type UnderlyingSolTuple<'a> = ();
5521        #[doc(hidden)]
5522        type UnderlyingRustTuple<'a> = ();
5523        #[cfg(test)]
5524        #[allow(dead_code, unreachable_patterns)]
5525        fn _type_assertion(
5526            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5527        ) {
5528            match _t {
5529                alloy_sol_types::private::AssertTypeEq::<
5530                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5531                >(_) => {}
5532            }
5533        }
5534        #[automatically_derived]
5535        #[doc(hidden)]
5536        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5537            fn from(value: WrongStakeTableUsed) -> Self {
5538                ()
5539            }
5540        }
5541        #[automatically_derived]
5542        #[doc(hidden)]
5543        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5544            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5545                Self {}
5546            }
5547        }
5548        #[automatically_derived]
5549        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5550            type Parameters<'a> = UnderlyingSolTuple<'a>;
5551            type Token<'a> = <Self::Parameters<
5552                'a,
5553            > as alloy_sol_types::SolType>::Token<'a>;
5554            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5555            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5556            #[inline]
5557            fn new<'a>(
5558                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5559            ) -> Self {
5560                tuple.into()
5561            }
5562            #[inline]
5563            fn tokenize(&self) -> Self::Token<'_> {
5564                ()
5565            }
5566        }
5567    };
5568    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5569    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5570```solidity
5571event Initialized(uint64 version);
5572```*/
5573    #[allow(
5574        non_camel_case_types,
5575        non_snake_case,
5576        clippy::pub_underscore_fields,
5577        clippy::style
5578    )]
5579    #[derive(Clone)]
5580    pub struct Initialized {
5581        #[allow(missing_docs)]
5582        pub version: u64,
5583    }
5584    #[allow(
5585        non_camel_case_types,
5586        non_snake_case,
5587        clippy::pub_underscore_fields,
5588        clippy::style
5589    )]
5590    const _: () = {
5591        use alloy::sol_types as alloy_sol_types;
5592        #[automatically_derived]
5593        impl alloy_sol_types::SolEvent for Initialized {
5594            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5595            type DataToken<'a> = <Self::DataTuple<
5596                'a,
5597            > as alloy_sol_types::SolType>::Token<'a>;
5598            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5599            const SIGNATURE: &'static str = "Initialized(uint64)";
5600            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5601                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
5602                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
5603                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5604            ]);
5605            const ANONYMOUS: bool = false;
5606            #[allow(unused_variables)]
5607            #[inline]
5608            fn new(
5609                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5610                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5611            ) -> Self {
5612                Self { version: data.0 }
5613            }
5614            #[inline]
5615            fn check_signature(
5616                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5617            ) -> alloy_sol_types::Result<()> {
5618                if topics.0 != Self::SIGNATURE_HASH {
5619                    return Err(
5620                        alloy_sol_types::Error::invalid_event_signature_hash(
5621                            Self::SIGNATURE,
5622                            topics.0,
5623                            Self::SIGNATURE_HASH,
5624                        ),
5625                    );
5626                }
5627                Ok(())
5628            }
5629            #[inline]
5630            fn tokenize_body(&self) -> Self::DataToken<'_> {
5631                (
5632                    <alloy::sol_types::sol_data::Uint<
5633                        64,
5634                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5635                )
5636            }
5637            #[inline]
5638            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5639                (Self::SIGNATURE_HASH.into(),)
5640            }
5641            #[inline]
5642            fn encode_topics_raw(
5643                &self,
5644                out: &mut [alloy_sol_types::abi::token::WordToken],
5645            ) -> alloy_sol_types::Result<()> {
5646                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5647                    return Err(alloy_sol_types::Error::Overrun);
5648                }
5649                out[0usize] = alloy_sol_types::abi::token::WordToken(
5650                    Self::SIGNATURE_HASH,
5651                );
5652                Ok(())
5653            }
5654        }
5655        #[automatically_derived]
5656        impl alloy_sol_types::private::IntoLogData for Initialized {
5657            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5658                From::from(self)
5659            }
5660            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5661                From::from(&self)
5662            }
5663        }
5664        #[automatically_derived]
5665        impl From<&Initialized> for alloy_sol_types::private::LogData {
5666            #[inline]
5667            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5668                alloy_sol_types::SolEvent::encode_log_data(this)
5669            }
5670        }
5671    };
5672    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5673    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
5674```solidity
5675event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
5676```*/
5677    #[allow(
5678        non_camel_case_types,
5679        non_snake_case,
5680        clippy::pub_underscore_fields,
5681        clippy::style
5682    )]
5683    #[derive(Clone)]
5684    pub struct NewState {
5685        #[allow(missing_docs)]
5686        pub viewNum: u64,
5687        #[allow(missing_docs)]
5688        pub blockHeight: u64,
5689        #[allow(missing_docs)]
5690        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
5691    }
5692    #[allow(
5693        non_camel_case_types,
5694        non_snake_case,
5695        clippy::pub_underscore_fields,
5696        clippy::style
5697    )]
5698    const _: () = {
5699        use alloy::sol_types as alloy_sol_types;
5700        #[automatically_derived]
5701        impl alloy_sol_types::SolEvent for NewState {
5702            type DataTuple<'a> = (BN254::ScalarField,);
5703            type DataToken<'a> = <Self::DataTuple<
5704                'a,
5705            > as alloy_sol_types::SolType>::Token<'a>;
5706            type TopicList = (
5707                alloy_sol_types::sol_data::FixedBytes<32>,
5708                alloy::sol_types::sol_data::Uint<64>,
5709                alloy::sol_types::sol_data::Uint<64>,
5710            );
5711            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
5712            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5713                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
5714                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
5715                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
5716            ]);
5717            const ANONYMOUS: bool = false;
5718            #[allow(unused_variables)]
5719            #[inline]
5720            fn new(
5721                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5722                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5723            ) -> Self {
5724                Self {
5725                    viewNum: topics.1,
5726                    blockHeight: topics.2,
5727                    blockCommRoot: data.0,
5728                }
5729            }
5730            #[inline]
5731            fn check_signature(
5732                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5733            ) -> alloy_sol_types::Result<()> {
5734                if topics.0 != Self::SIGNATURE_HASH {
5735                    return Err(
5736                        alloy_sol_types::Error::invalid_event_signature_hash(
5737                            Self::SIGNATURE,
5738                            topics.0,
5739                            Self::SIGNATURE_HASH,
5740                        ),
5741                    );
5742                }
5743                Ok(())
5744            }
5745            #[inline]
5746            fn tokenize_body(&self) -> Self::DataToken<'_> {
5747                (
5748                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
5749                        &self.blockCommRoot,
5750                    ),
5751                )
5752            }
5753            #[inline]
5754            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5755                (
5756                    Self::SIGNATURE_HASH.into(),
5757                    self.viewNum.clone(),
5758                    self.blockHeight.clone(),
5759                )
5760            }
5761            #[inline]
5762            fn encode_topics_raw(
5763                &self,
5764                out: &mut [alloy_sol_types::abi::token::WordToken],
5765            ) -> alloy_sol_types::Result<()> {
5766                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5767                    return Err(alloy_sol_types::Error::Overrun);
5768                }
5769                out[0usize] = alloy_sol_types::abi::token::WordToken(
5770                    Self::SIGNATURE_HASH,
5771                );
5772                out[1usize] = <alloy::sol_types::sol_data::Uint<
5773                    64,
5774                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
5775                out[2usize] = <alloy::sol_types::sol_data::Uint<
5776                    64,
5777                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
5778                Ok(())
5779            }
5780        }
5781        #[automatically_derived]
5782        impl alloy_sol_types::private::IntoLogData for NewState {
5783            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5784                From::from(self)
5785            }
5786            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5787                From::from(&self)
5788            }
5789        }
5790        #[automatically_derived]
5791        impl From<&NewState> for alloy_sol_types::private::LogData {
5792            #[inline]
5793            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
5794                alloy_sol_types::SolEvent::encode_log_data(this)
5795            }
5796        }
5797    };
5798    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5799    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5800```solidity
5801event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5802```*/
5803    #[allow(
5804        non_camel_case_types,
5805        non_snake_case,
5806        clippy::pub_underscore_fields,
5807        clippy::style
5808    )]
5809    #[derive(Clone)]
5810    pub struct OwnershipTransferred {
5811        #[allow(missing_docs)]
5812        pub previousOwner: alloy::sol_types::private::Address,
5813        #[allow(missing_docs)]
5814        pub newOwner: alloy::sol_types::private::Address,
5815    }
5816    #[allow(
5817        non_camel_case_types,
5818        non_snake_case,
5819        clippy::pub_underscore_fields,
5820        clippy::style
5821    )]
5822    const _: () = {
5823        use alloy::sol_types as alloy_sol_types;
5824        #[automatically_derived]
5825        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5826            type DataTuple<'a> = ();
5827            type DataToken<'a> = <Self::DataTuple<
5828                'a,
5829            > as alloy_sol_types::SolType>::Token<'a>;
5830            type TopicList = (
5831                alloy_sol_types::sol_data::FixedBytes<32>,
5832                alloy::sol_types::sol_data::Address,
5833                alloy::sol_types::sol_data::Address,
5834            );
5835            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5836            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5837                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
5838                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
5839                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5840            ]);
5841            const ANONYMOUS: bool = false;
5842            #[allow(unused_variables)]
5843            #[inline]
5844            fn new(
5845                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5846                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5847            ) -> Self {
5848                Self {
5849                    previousOwner: topics.1,
5850                    newOwner: topics.2,
5851                }
5852            }
5853            #[inline]
5854            fn check_signature(
5855                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5856            ) -> alloy_sol_types::Result<()> {
5857                if topics.0 != Self::SIGNATURE_HASH {
5858                    return Err(
5859                        alloy_sol_types::Error::invalid_event_signature_hash(
5860                            Self::SIGNATURE,
5861                            topics.0,
5862                            Self::SIGNATURE_HASH,
5863                        ),
5864                    );
5865                }
5866                Ok(())
5867            }
5868            #[inline]
5869            fn tokenize_body(&self) -> Self::DataToken<'_> {
5870                ()
5871            }
5872            #[inline]
5873            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5874                (
5875                    Self::SIGNATURE_HASH.into(),
5876                    self.previousOwner.clone(),
5877                    self.newOwner.clone(),
5878                )
5879            }
5880            #[inline]
5881            fn encode_topics_raw(
5882                &self,
5883                out: &mut [alloy_sol_types::abi::token::WordToken],
5884            ) -> alloy_sol_types::Result<()> {
5885                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5886                    return Err(alloy_sol_types::Error::Overrun);
5887                }
5888                out[0usize] = alloy_sol_types::abi::token::WordToken(
5889                    Self::SIGNATURE_HASH,
5890                );
5891                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5892                    &self.previousOwner,
5893                );
5894                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5895                    &self.newOwner,
5896                );
5897                Ok(())
5898            }
5899        }
5900        #[automatically_derived]
5901        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5902            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5903                From::from(self)
5904            }
5905            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5906                From::from(&self)
5907            }
5908        }
5909        #[automatically_derived]
5910        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5911            #[inline]
5912            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5913                alloy_sol_types::SolEvent::encode_log_data(this)
5914            }
5915        }
5916    };
5917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5918    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
5919```solidity
5920event PermissionedProverNotRequired();
5921```*/
5922    #[allow(
5923        non_camel_case_types,
5924        non_snake_case,
5925        clippy::pub_underscore_fields,
5926        clippy::style
5927    )]
5928    #[derive(Clone)]
5929    pub struct PermissionedProverNotRequired {}
5930    #[allow(
5931        non_camel_case_types,
5932        non_snake_case,
5933        clippy::pub_underscore_fields,
5934        clippy::style
5935    )]
5936    const _: () = {
5937        use alloy::sol_types as alloy_sol_types;
5938        #[automatically_derived]
5939        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
5940            type DataTuple<'a> = ();
5941            type DataToken<'a> = <Self::DataTuple<
5942                'a,
5943            > as alloy_sol_types::SolType>::Token<'a>;
5944            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5945            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
5946            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5947                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
5948                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
5949                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
5950            ]);
5951            const ANONYMOUS: bool = false;
5952            #[allow(unused_variables)]
5953            #[inline]
5954            fn new(
5955                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5956                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5957            ) -> Self {
5958                Self {}
5959            }
5960            #[inline]
5961            fn check_signature(
5962                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5963            ) -> alloy_sol_types::Result<()> {
5964                if topics.0 != Self::SIGNATURE_HASH {
5965                    return Err(
5966                        alloy_sol_types::Error::invalid_event_signature_hash(
5967                            Self::SIGNATURE,
5968                            topics.0,
5969                            Self::SIGNATURE_HASH,
5970                        ),
5971                    );
5972                }
5973                Ok(())
5974            }
5975            #[inline]
5976            fn tokenize_body(&self) -> Self::DataToken<'_> {
5977                ()
5978            }
5979            #[inline]
5980            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5981                (Self::SIGNATURE_HASH.into(),)
5982            }
5983            #[inline]
5984            fn encode_topics_raw(
5985                &self,
5986                out: &mut [alloy_sol_types::abi::token::WordToken],
5987            ) -> alloy_sol_types::Result<()> {
5988                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5989                    return Err(alloy_sol_types::Error::Overrun);
5990                }
5991                out[0usize] = alloy_sol_types::abi::token::WordToken(
5992                    Self::SIGNATURE_HASH,
5993                );
5994                Ok(())
5995            }
5996        }
5997        #[automatically_derived]
5998        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
5999            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6000                From::from(self)
6001            }
6002            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6003                From::from(&self)
6004            }
6005        }
6006        #[automatically_derived]
6007        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6008            #[inline]
6009            fn from(
6010                this: &PermissionedProverNotRequired,
6011            ) -> alloy_sol_types::private::LogData {
6012                alloy_sol_types::SolEvent::encode_log_data(this)
6013            }
6014        }
6015    };
6016    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6017    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6018```solidity
6019event PermissionedProverRequired(address permissionedProver);
6020```*/
6021    #[allow(
6022        non_camel_case_types,
6023        non_snake_case,
6024        clippy::pub_underscore_fields,
6025        clippy::style
6026    )]
6027    #[derive(Clone)]
6028    pub struct PermissionedProverRequired {
6029        #[allow(missing_docs)]
6030        pub permissionedProver: alloy::sol_types::private::Address,
6031    }
6032    #[allow(
6033        non_camel_case_types,
6034        non_snake_case,
6035        clippy::pub_underscore_fields,
6036        clippy::style
6037    )]
6038    const _: () = {
6039        use alloy::sol_types as alloy_sol_types;
6040        #[automatically_derived]
6041        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6042            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6043            type DataToken<'a> = <Self::DataTuple<
6044                'a,
6045            > as alloy_sol_types::SolType>::Token<'a>;
6046            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6047            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6048            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6049                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6050                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6051                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6052            ]);
6053            const ANONYMOUS: bool = false;
6054            #[allow(unused_variables)]
6055            #[inline]
6056            fn new(
6057                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6058                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6059            ) -> Self {
6060                Self { permissionedProver: data.0 }
6061            }
6062            #[inline]
6063            fn check_signature(
6064                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6065            ) -> alloy_sol_types::Result<()> {
6066                if topics.0 != Self::SIGNATURE_HASH {
6067                    return Err(
6068                        alloy_sol_types::Error::invalid_event_signature_hash(
6069                            Self::SIGNATURE,
6070                            topics.0,
6071                            Self::SIGNATURE_HASH,
6072                        ),
6073                    );
6074                }
6075                Ok(())
6076            }
6077            #[inline]
6078            fn tokenize_body(&self) -> Self::DataToken<'_> {
6079                (
6080                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6081                        &self.permissionedProver,
6082                    ),
6083                )
6084            }
6085            #[inline]
6086            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6087                (Self::SIGNATURE_HASH.into(),)
6088            }
6089            #[inline]
6090            fn encode_topics_raw(
6091                &self,
6092                out: &mut [alloy_sol_types::abi::token::WordToken],
6093            ) -> alloy_sol_types::Result<()> {
6094                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6095                    return Err(alloy_sol_types::Error::Overrun);
6096                }
6097                out[0usize] = alloy_sol_types::abi::token::WordToken(
6098                    Self::SIGNATURE_HASH,
6099                );
6100                Ok(())
6101            }
6102        }
6103        #[automatically_derived]
6104        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6105            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6106                From::from(self)
6107            }
6108            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6109                From::from(&self)
6110            }
6111        }
6112        #[automatically_derived]
6113        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6114            #[inline]
6115            fn from(
6116                this: &PermissionedProverRequired,
6117            ) -> alloy_sol_types::private::LogData {
6118                alloy_sol_types::SolEvent::encode_log_data(this)
6119            }
6120        }
6121    };
6122    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6123    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6124```solidity
6125event Upgrade(address implementation);
6126```*/
6127    #[allow(
6128        non_camel_case_types,
6129        non_snake_case,
6130        clippy::pub_underscore_fields,
6131        clippy::style
6132    )]
6133    #[derive(Clone)]
6134    pub struct Upgrade {
6135        #[allow(missing_docs)]
6136        pub implementation: alloy::sol_types::private::Address,
6137    }
6138    #[allow(
6139        non_camel_case_types,
6140        non_snake_case,
6141        clippy::pub_underscore_fields,
6142        clippy::style
6143    )]
6144    const _: () = {
6145        use alloy::sol_types as alloy_sol_types;
6146        #[automatically_derived]
6147        impl alloy_sol_types::SolEvent for Upgrade {
6148            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6149            type DataToken<'a> = <Self::DataTuple<
6150                'a,
6151            > as alloy_sol_types::SolType>::Token<'a>;
6152            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6153            const SIGNATURE: &'static str = "Upgrade(address)";
6154            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6155                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6156                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6157                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6158            ]);
6159            const ANONYMOUS: bool = false;
6160            #[allow(unused_variables)]
6161            #[inline]
6162            fn new(
6163                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6164                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6165            ) -> Self {
6166                Self { implementation: data.0 }
6167            }
6168            #[inline]
6169            fn check_signature(
6170                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6171            ) -> alloy_sol_types::Result<()> {
6172                if topics.0 != Self::SIGNATURE_HASH {
6173                    return Err(
6174                        alloy_sol_types::Error::invalid_event_signature_hash(
6175                            Self::SIGNATURE,
6176                            topics.0,
6177                            Self::SIGNATURE_HASH,
6178                        ),
6179                    );
6180                }
6181                Ok(())
6182            }
6183            #[inline]
6184            fn tokenize_body(&self) -> Self::DataToken<'_> {
6185                (
6186                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6187                        &self.implementation,
6188                    ),
6189                )
6190            }
6191            #[inline]
6192            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6193                (Self::SIGNATURE_HASH.into(),)
6194            }
6195            #[inline]
6196            fn encode_topics_raw(
6197                &self,
6198                out: &mut [alloy_sol_types::abi::token::WordToken],
6199            ) -> alloy_sol_types::Result<()> {
6200                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6201                    return Err(alloy_sol_types::Error::Overrun);
6202                }
6203                out[0usize] = alloy_sol_types::abi::token::WordToken(
6204                    Self::SIGNATURE_HASH,
6205                );
6206                Ok(())
6207            }
6208        }
6209        #[automatically_derived]
6210        impl alloy_sol_types::private::IntoLogData for Upgrade {
6211            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6212                From::from(self)
6213            }
6214            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6215                From::from(&self)
6216            }
6217        }
6218        #[automatically_derived]
6219        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6220            #[inline]
6221            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6222                alloy_sol_types::SolEvent::encode_log_data(this)
6223            }
6224        }
6225    };
6226    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6227    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6228```solidity
6229event Upgraded(address indexed implementation);
6230```*/
6231    #[allow(
6232        non_camel_case_types,
6233        non_snake_case,
6234        clippy::pub_underscore_fields,
6235        clippy::style
6236    )]
6237    #[derive(Clone)]
6238    pub struct Upgraded {
6239        #[allow(missing_docs)]
6240        pub implementation: alloy::sol_types::private::Address,
6241    }
6242    #[allow(
6243        non_camel_case_types,
6244        non_snake_case,
6245        clippy::pub_underscore_fields,
6246        clippy::style
6247    )]
6248    const _: () = {
6249        use alloy::sol_types as alloy_sol_types;
6250        #[automatically_derived]
6251        impl alloy_sol_types::SolEvent for Upgraded {
6252            type DataTuple<'a> = ();
6253            type DataToken<'a> = <Self::DataTuple<
6254                'a,
6255            > as alloy_sol_types::SolType>::Token<'a>;
6256            type TopicList = (
6257                alloy_sol_types::sol_data::FixedBytes<32>,
6258                alloy::sol_types::sol_data::Address,
6259            );
6260            const SIGNATURE: &'static str = "Upgraded(address)";
6261            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6262                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6263                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6264                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6265            ]);
6266            const ANONYMOUS: bool = false;
6267            #[allow(unused_variables)]
6268            #[inline]
6269            fn new(
6270                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6271                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6272            ) -> Self {
6273                Self { implementation: topics.1 }
6274            }
6275            #[inline]
6276            fn check_signature(
6277                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6278            ) -> alloy_sol_types::Result<()> {
6279                if topics.0 != Self::SIGNATURE_HASH {
6280                    return Err(
6281                        alloy_sol_types::Error::invalid_event_signature_hash(
6282                            Self::SIGNATURE,
6283                            topics.0,
6284                            Self::SIGNATURE_HASH,
6285                        ),
6286                    );
6287                }
6288                Ok(())
6289            }
6290            #[inline]
6291            fn tokenize_body(&self) -> Self::DataToken<'_> {
6292                ()
6293            }
6294            #[inline]
6295            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6296                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6297            }
6298            #[inline]
6299            fn encode_topics_raw(
6300                &self,
6301                out: &mut [alloy_sol_types::abi::token::WordToken],
6302            ) -> alloy_sol_types::Result<()> {
6303                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6304                    return Err(alloy_sol_types::Error::Overrun);
6305                }
6306                out[0usize] = alloy_sol_types::abi::token::WordToken(
6307                    Self::SIGNATURE_HASH,
6308                );
6309                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6310                    &self.implementation,
6311                );
6312                Ok(())
6313            }
6314        }
6315        #[automatically_derived]
6316        impl alloy_sol_types::private::IntoLogData for Upgraded {
6317            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6318                From::from(self)
6319            }
6320            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6321                From::from(&self)
6322            }
6323        }
6324        #[automatically_derived]
6325        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6326            #[inline]
6327            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6328                alloy_sol_types::SolEvent::encode_log_data(this)
6329            }
6330        }
6331    };
6332    /**Constructor`.
6333```solidity
6334constructor();
6335```*/
6336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6337    #[derive(Clone)]
6338    pub struct constructorCall {}
6339    const _: () = {
6340        use alloy::sol_types as alloy_sol_types;
6341        {
6342            #[doc(hidden)]
6343            type UnderlyingSolTuple<'a> = ();
6344            #[doc(hidden)]
6345            type UnderlyingRustTuple<'a> = ();
6346            #[cfg(test)]
6347            #[allow(dead_code, unreachable_patterns)]
6348            fn _type_assertion(
6349                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6350            ) {
6351                match _t {
6352                    alloy_sol_types::private::AssertTypeEq::<
6353                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6354                    >(_) => {}
6355                }
6356            }
6357            #[automatically_derived]
6358            #[doc(hidden)]
6359            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
6360                fn from(value: constructorCall) -> Self {
6361                    ()
6362                }
6363            }
6364            #[automatically_derived]
6365            #[doc(hidden)]
6366            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
6367                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6368                    Self {}
6369                }
6370            }
6371        }
6372        #[automatically_derived]
6373        impl alloy_sol_types::SolConstructor for constructorCall {
6374            type Parameters<'a> = ();
6375            type Token<'a> = <Self::Parameters<
6376                'a,
6377            > as alloy_sol_types::SolType>::Token<'a>;
6378            #[inline]
6379            fn new<'a>(
6380                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6381            ) -> Self {
6382                tuple.into()
6383            }
6384            #[inline]
6385            fn tokenize(&self) -> Self::Token<'_> {
6386                ()
6387            }
6388        }
6389    };
6390    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6391    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6392```solidity
6393function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6394```*/
6395    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6396    #[derive(Clone)]
6397    pub struct UPGRADE_INTERFACE_VERSIONCall {}
6398    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6399    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6400    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6401    #[derive(Clone)]
6402    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6403        #[allow(missing_docs)]
6404        pub _0: alloy::sol_types::private::String,
6405    }
6406    #[allow(
6407        non_camel_case_types,
6408        non_snake_case,
6409        clippy::pub_underscore_fields,
6410        clippy::style
6411    )]
6412    const _: () = {
6413        use alloy::sol_types as alloy_sol_types;
6414        {
6415            #[doc(hidden)]
6416            type UnderlyingSolTuple<'a> = ();
6417            #[doc(hidden)]
6418            type UnderlyingRustTuple<'a> = ();
6419            #[cfg(test)]
6420            #[allow(dead_code, unreachable_patterns)]
6421            fn _type_assertion(
6422                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6423            ) {
6424                match _t {
6425                    alloy_sol_types::private::AssertTypeEq::<
6426                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6427                    >(_) => {}
6428                }
6429            }
6430            #[automatically_derived]
6431            #[doc(hidden)]
6432            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6433            for UnderlyingRustTuple<'_> {
6434                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6435                    ()
6436                }
6437            }
6438            #[automatically_derived]
6439            #[doc(hidden)]
6440            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6441            for UPGRADE_INTERFACE_VERSIONCall {
6442                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6443                    Self {}
6444                }
6445            }
6446        }
6447        {
6448            #[doc(hidden)]
6449            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6450            #[doc(hidden)]
6451            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6452            #[cfg(test)]
6453            #[allow(dead_code, unreachable_patterns)]
6454            fn _type_assertion(
6455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6456            ) {
6457                match _t {
6458                    alloy_sol_types::private::AssertTypeEq::<
6459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6460                    >(_) => {}
6461                }
6462            }
6463            #[automatically_derived]
6464            #[doc(hidden)]
6465            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6466            for UnderlyingRustTuple<'_> {
6467                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6468                    (value._0,)
6469                }
6470            }
6471            #[automatically_derived]
6472            #[doc(hidden)]
6473            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6474            for UPGRADE_INTERFACE_VERSIONReturn {
6475                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6476                    Self { _0: tuple.0 }
6477                }
6478            }
6479        }
6480        #[automatically_derived]
6481        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6482            type Parameters<'a> = ();
6483            type Token<'a> = <Self::Parameters<
6484                'a,
6485            > as alloy_sol_types::SolType>::Token<'a>;
6486            type Return = UPGRADE_INTERFACE_VERSIONReturn;
6487            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6488            type ReturnToken<'a> = <Self::ReturnTuple<
6489                'a,
6490            > as alloy_sol_types::SolType>::Token<'a>;
6491            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6492            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6493            #[inline]
6494            fn new<'a>(
6495                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6496            ) -> Self {
6497                tuple.into()
6498            }
6499            #[inline]
6500            fn tokenize(&self) -> Self::Token<'_> {
6501                ()
6502            }
6503            #[inline]
6504            fn abi_decode_returns(
6505                data: &[u8],
6506                validate: bool,
6507            ) -> alloy_sol_types::Result<Self::Return> {
6508                <Self::ReturnTuple<
6509                    '_,
6510                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6511                    .map(Into::into)
6512            }
6513        }
6514    };
6515    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6516    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6517```solidity
6518function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6519```*/
6520    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6521    #[derive(Clone)]
6522    pub struct _getVkCall {}
6523    #[derive()]
6524    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6526    #[derive(Clone)]
6527    pub struct _getVkReturn {
6528        #[allow(missing_docs)]
6529        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6530    }
6531    #[allow(
6532        non_camel_case_types,
6533        non_snake_case,
6534        clippy::pub_underscore_fields,
6535        clippy::style
6536    )]
6537    const _: () = {
6538        use alloy::sol_types as alloy_sol_types;
6539        {
6540            #[doc(hidden)]
6541            type UnderlyingSolTuple<'a> = ();
6542            #[doc(hidden)]
6543            type UnderlyingRustTuple<'a> = ();
6544            #[cfg(test)]
6545            #[allow(dead_code, unreachable_patterns)]
6546            fn _type_assertion(
6547                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6548            ) {
6549                match _t {
6550                    alloy_sol_types::private::AssertTypeEq::<
6551                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6552                    >(_) => {}
6553                }
6554            }
6555            #[automatically_derived]
6556            #[doc(hidden)]
6557            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6558                fn from(value: _getVkCall) -> Self {
6559                    ()
6560                }
6561            }
6562            #[automatically_derived]
6563            #[doc(hidden)]
6564            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6565                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6566                    Self {}
6567                }
6568            }
6569        }
6570        {
6571            #[doc(hidden)]
6572            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6573            #[doc(hidden)]
6574            type UnderlyingRustTuple<'a> = (
6575                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6576            );
6577            #[cfg(test)]
6578            #[allow(dead_code, unreachable_patterns)]
6579            fn _type_assertion(
6580                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6581            ) {
6582                match _t {
6583                    alloy_sol_types::private::AssertTypeEq::<
6584                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6585                    >(_) => {}
6586                }
6587            }
6588            #[automatically_derived]
6589            #[doc(hidden)]
6590            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6591                fn from(value: _getVkReturn) -> Self {
6592                    (value.vk,)
6593                }
6594            }
6595            #[automatically_derived]
6596            #[doc(hidden)]
6597            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
6598                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6599                    Self { vk: tuple.0 }
6600                }
6601            }
6602        }
6603        #[automatically_derived]
6604        impl alloy_sol_types::SolCall for _getVkCall {
6605            type Parameters<'a> = ();
6606            type Token<'a> = <Self::Parameters<
6607                'a,
6608            > as alloy_sol_types::SolType>::Token<'a>;
6609            type Return = _getVkReturn;
6610            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6611            type ReturnToken<'a> = <Self::ReturnTuple<
6612                'a,
6613            > as alloy_sol_types::SolType>::Token<'a>;
6614            const SIGNATURE: &'static str = "_getVk()";
6615            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
6616            #[inline]
6617            fn new<'a>(
6618                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6619            ) -> Self {
6620                tuple.into()
6621            }
6622            #[inline]
6623            fn tokenize(&self) -> Self::Token<'_> {
6624                ()
6625            }
6626            #[inline]
6627            fn abi_decode_returns(
6628                data: &[u8],
6629                validate: bool,
6630            ) -> alloy_sol_types::Result<Self::Return> {
6631                <Self::ReturnTuple<
6632                    '_,
6633                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6634                    .map(Into::into)
6635            }
6636        }
6637    };
6638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6639    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
6640```solidity
6641function currentBlockNumber() external view returns (uint256);
6642```*/
6643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6644    #[derive(Clone)]
6645    pub struct currentBlockNumberCall {}
6646    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6647    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
6648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6649    #[derive(Clone)]
6650    pub struct currentBlockNumberReturn {
6651        #[allow(missing_docs)]
6652        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6653    }
6654    #[allow(
6655        non_camel_case_types,
6656        non_snake_case,
6657        clippy::pub_underscore_fields,
6658        clippy::style
6659    )]
6660    const _: () = {
6661        use alloy::sol_types as alloy_sol_types;
6662        {
6663            #[doc(hidden)]
6664            type UnderlyingSolTuple<'a> = ();
6665            #[doc(hidden)]
6666            type UnderlyingRustTuple<'a> = ();
6667            #[cfg(test)]
6668            #[allow(dead_code, unreachable_patterns)]
6669            fn _type_assertion(
6670                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6671            ) {
6672                match _t {
6673                    alloy_sol_types::private::AssertTypeEq::<
6674                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6675                    >(_) => {}
6676                }
6677            }
6678            #[automatically_derived]
6679            #[doc(hidden)]
6680            impl ::core::convert::From<currentBlockNumberCall>
6681            for UnderlyingRustTuple<'_> {
6682                fn from(value: currentBlockNumberCall) -> Self {
6683                    ()
6684                }
6685            }
6686            #[automatically_derived]
6687            #[doc(hidden)]
6688            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6689            for currentBlockNumberCall {
6690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6691                    Self {}
6692                }
6693            }
6694        }
6695        {
6696            #[doc(hidden)]
6697            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6698            #[doc(hidden)]
6699            type UnderlyingRustTuple<'a> = (
6700                alloy::sol_types::private::primitives::aliases::U256,
6701            );
6702            #[cfg(test)]
6703            #[allow(dead_code, unreachable_patterns)]
6704            fn _type_assertion(
6705                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6706            ) {
6707                match _t {
6708                    alloy_sol_types::private::AssertTypeEq::<
6709                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6710                    >(_) => {}
6711                }
6712            }
6713            #[automatically_derived]
6714            #[doc(hidden)]
6715            impl ::core::convert::From<currentBlockNumberReturn>
6716            for UnderlyingRustTuple<'_> {
6717                fn from(value: currentBlockNumberReturn) -> Self {
6718                    (value._0,)
6719                }
6720            }
6721            #[automatically_derived]
6722            #[doc(hidden)]
6723            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6724            for currentBlockNumberReturn {
6725                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6726                    Self { _0: tuple.0 }
6727                }
6728            }
6729        }
6730        #[automatically_derived]
6731        impl alloy_sol_types::SolCall for currentBlockNumberCall {
6732            type Parameters<'a> = ();
6733            type Token<'a> = <Self::Parameters<
6734                'a,
6735            > as alloy_sol_types::SolType>::Token<'a>;
6736            type Return = currentBlockNumberReturn;
6737            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6738            type ReturnToken<'a> = <Self::ReturnTuple<
6739                'a,
6740            > as alloy_sol_types::SolType>::Token<'a>;
6741            const SIGNATURE: &'static str = "currentBlockNumber()";
6742            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
6743            #[inline]
6744            fn new<'a>(
6745                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6746            ) -> Self {
6747                tuple.into()
6748            }
6749            #[inline]
6750            fn tokenize(&self) -> Self::Token<'_> {
6751                ()
6752            }
6753            #[inline]
6754            fn abi_decode_returns(
6755                data: &[u8],
6756                validate: bool,
6757            ) -> alloy_sol_types::Result<Self::Return> {
6758                <Self::ReturnTuple<
6759                    '_,
6760                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6761                    .map(Into::into)
6762            }
6763        }
6764    };
6765    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6766    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
6767```solidity
6768function disablePermissionedProverMode() external;
6769```*/
6770    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6771    #[derive(Clone)]
6772    pub struct disablePermissionedProverModeCall {}
6773    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
6774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6775    #[derive(Clone)]
6776    pub struct disablePermissionedProverModeReturn {}
6777    #[allow(
6778        non_camel_case_types,
6779        non_snake_case,
6780        clippy::pub_underscore_fields,
6781        clippy::style
6782    )]
6783    const _: () = {
6784        use alloy::sol_types as alloy_sol_types;
6785        {
6786            #[doc(hidden)]
6787            type UnderlyingSolTuple<'a> = ();
6788            #[doc(hidden)]
6789            type UnderlyingRustTuple<'a> = ();
6790            #[cfg(test)]
6791            #[allow(dead_code, unreachable_patterns)]
6792            fn _type_assertion(
6793                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6794            ) {
6795                match _t {
6796                    alloy_sol_types::private::AssertTypeEq::<
6797                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6798                    >(_) => {}
6799                }
6800            }
6801            #[automatically_derived]
6802            #[doc(hidden)]
6803            impl ::core::convert::From<disablePermissionedProverModeCall>
6804            for UnderlyingRustTuple<'_> {
6805                fn from(value: disablePermissionedProverModeCall) -> Self {
6806                    ()
6807                }
6808            }
6809            #[automatically_derived]
6810            #[doc(hidden)]
6811            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6812            for disablePermissionedProverModeCall {
6813                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6814                    Self {}
6815                }
6816            }
6817        }
6818        {
6819            #[doc(hidden)]
6820            type UnderlyingSolTuple<'a> = ();
6821            #[doc(hidden)]
6822            type UnderlyingRustTuple<'a> = ();
6823            #[cfg(test)]
6824            #[allow(dead_code, unreachable_patterns)]
6825            fn _type_assertion(
6826                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6827            ) {
6828                match _t {
6829                    alloy_sol_types::private::AssertTypeEq::<
6830                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6831                    >(_) => {}
6832                }
6833            }
6834            #[automatically_derived]
6835            #[doc(hidden)]
6836            impl ::core::convert::From<disablePermissionedProverModeReturn>
6837            for UnderlyingRustTuple<'_> {
6838                fn from(value: disablePermissionedProverModeReturn) -> Self {
6839                    ()
6840                }
6841            }
6842            #[automatically_derived]
6843            #[doc(hidden)]
6844            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6845            for disablePermissionedProverModeReturn {
6846                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6847                    Self {}
6848                }
6849            }
6850        }
6851        #[automatically_derived]
6852        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
6853            type Parameters<'a> = ();
6854            type Token<'a> = <Self::Parameters<
6855                'a,
6856            > as alloy_sol_types::SolType>::Token<'a>;
6857            type Return = disablePermissionedProverModeReturn;
6858            type ReturnTuple<'a> = ();
6859            type ReturnToken<'a> = <Self::ReturnTuple<
6860                'a,
6861            > as alloy_sol_types::SolType>::Token<'a>;
6862            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
6863            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
6864            #[inline]
6865            fn new<'a>(
6866                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6867            ) -> Self {
6868                tuple.into()
6869            }
6870            #[inline]
6871            fn tokenize(&self) -> Self::Token<'_> {
6872                ()
6873            }
6874            #[inline]
6875            fn abi_decode_returns(
6876                data: &[u8],
6877                validate: bool,
6878            ) -> alloy_sol_types::Result<Self::Return> {
6879                <Self::ReturnTuple<
6880                    '_,
6881                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6882                    .map(Into::into)
6883            }
6884        }
6885    };
6886    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6887    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
6888```solidity
6889function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
6890```*/
6891    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6892    #[derive(Clone)]
6893    pub struct finalizedStateCall {}
6894    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6895    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
6896    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6897    #[derive(Clone)]
6898    pub struct finalizedStateReturn {
6899        #[allow(missing_docs)]
6900        pub viewNum: u64,
6901        #[allow(missing_docs)]
6902        pub blockHeight: u64,
6903        #[allow(missing_docs)]
6904        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6905    }
6906    #[allow(
6907        non_camel_case_types,
6908        non_snake_case,
6909        clippy::pub_underscore_fields,
6910        clippy::style
6911    )]
6912    const _: () = {
6913        use alloy::sol_types as alloy_sol_types;
6914        {
6915            #[doc(hidden)]
6916            type UnderlyingSolTuple<'a> = ();
6917            #[doc(hidden)]
6918            type UnderlyingRustTuple<'a> = ();
6919            #[cfg(test)]
6920            #[allow(dead_code, unreachable_patterns)]
6921            fn _type_assertion(
6922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6923            ) {
6924                match _t {
6925                    alloy_sol_types::private::AssertTypeEq::<
6926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6927                    >(_) => {}
6928                }
6929            }
6930            #[automatically_derived]
6931            #[doc(hidden)]
6932            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
6933                fn from(value: finalizedStateCall) -> Self {
6934                    ()
6935                }
6936            }
6937            #[automatically_derived]
6938            #[doc(hidden)]
6939            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
6940                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6941                    Self {}
6942                }
6943            }
6944        }
6945        {
6946            #[doc(hidden)]
6947            type UnderlyingSolTuple<'a> = (
6948                alloy::sol_types::sol_data::Uint<64>,
6949                alloy::sol_types::sol_data::Uint<64>,
6950                BN254::ScalarField,
6951            );
6952            #[doc(hidden)]
6953            type UnderlyingRustTuple<'a> = (
6954                u64,
6955                u64,
6956                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6957            );
6958            #[cfg(test)]
6959            #[allow(dead_code, unreachable_patterns)]
6960            fn _type_assertion(
6961                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6962            ) {
6963                match _t {
6964                    alloy_sol_types::private::AssertTypeEq::<
6965                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6966                    >(_) => {}
6967                }
6968            }
6969            #[automatically_derived]
6970            #[doc(hidden)]
6971            impl ::core::convert::From<finalizedStateReturn>
6972            for UnderlyingRustTuple<'_> {
6973                fn from(value: finalizedStateReturn) -> Self {
6974                    (value.viewNum, value.blockHeight, value.blockCommRoot)
6975                }
6976            }
6977            #[automatically_derived]
6978            #[doc(hidden)]
6979            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6980            for finalizedStateReturn {
6981                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6982                    Self {
6983                        viewNum: tuple.0,
6984                        blockHeight: tuple.1,
6985                        blockCommRoot: tuple.2,
6986                    }
6987                }
6988            }
6989        }
6990        #[automatically_derived]
6991        impl alloy_sol_types::SolCall for finalizedStateCall {
6992            type Parameters<'a> = ();
6993            type Token<'a> = <Self::Parameters<
6994                'a,
6995            > as alloy_sol_types::SolType>::Token<'a>;
6996            type Return = finalizedStateReturn;
6997            type ReturnTuple<'a> = (
6998                alloy::sol_types::sol_data::Uint<64>,
6999                alloy::sol_types::sol_data::Uint<64>,
7000                BN254::ScalarField,
7001            );
7002            type ReturnToken<'a> = <Self::ReturnTuple<
7003                'a,
7004            > as alloy_sol_types::SolType>::Token<'a>;
7005            const SIGNATURE: &'static str = "finalizedState()";
7006            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7007            #[inline]
7008            fn new<'a>(
7009                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7010            ) -> Self {
7011                tuple.into()
7012            }
7013            #[inline]
7014            fn tokenize(&self) -> Self::Token<'_> {
7015                ()
7016            }
7017            #[inline]
7018            fn abi_decode_returns(
7019                data: &[u8],
7020                validate: bool,
7021            ) -> alloy_sol_types::Result<Self::Return> {
7022                <Self::ReturnTuple<
7023                    '_,
7024                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7025                    .map(Into::into)
7026            }
7027        }
7028    };
7029    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7030    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7031```solidity
7032function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7033```*/
7034    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7035    #[derive(Clone)]
7036    pub struct genesisStakeTableStateCall {}
7037    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7038    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7040    #[derive(Clone)]
7041    pub struct genesisStakeTableStateReturn {
7042        #[allow(missing_docs)]
7043        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7044        #[allow(missing_docs)]
7045        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7046        #[allow(missing_docs)]
7047        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7048        #[allow(missing_docs)]
7049        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7050    }
7051    #[allow(
7052        non_camel_case_types,
7053        non_snake_case,
7054        clippy::pub_underscore_fields,
7055        clippy::style
7056    )]
7057    const _: () = {
7058        use alloy::sol_types as alloy_sol_types;
7059        {
7060            #[doc(hidden)]
7061            type UnderlyingSolTuple<'a> = ();
7062            #[doc(hidden)]
7063            type UnderlyingRustTuple<'a> = ();
7064            #[cfg(test)]
7065            #[allow(dead_code, unreachable_patterns)]
7066            fn _type_assertion(
7067                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7068            ) {
7069                match _t {
7070                    alloy_sol_types::private::AssertTypeEq::<
7071                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7072                    >(_) => {}
7073                }
7074            }
7075            #[automatically_derived]
7076            #[doc(hidden)]
7077            impl ::core::convert::From<genesisStakeTableStateCall>
7078            for UnderlyingRustTuple<'_> {
7079                fn from(value: genesisStakeTableStateCall) -> Self {
7080                    ()
7081                }
7082            }
7083            #[automatically_derived]
7084            #[doc(hidden)]
7085            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7086            for genesisStakeTableStateCall {
7087                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7088                    Self {}
7089                }
7090            }
7091        }
7092        {
7093            #[doc(hidden)]
7094            type UnderlyingSolTuple<'a> = (
7095                alloy::sol_types::sol_data::Uint<256>,
7096                BN254::ScalarField,
7097                BN254::ScalarField,
7098                BN254::ScalarField,
7099            );
7100            #[doc(hidden)]
7101            type UnderlyingRustTuple<'a> = (
7102                alloy::sol_types::private::primitives::aliases::U256,
7103                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7104                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7105                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7106            );
7107            #[cfg(test)]
7108            #[allow(dead_code, unreachable_patterns)]
7109            fn _type_assertion(
7110                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7111            ) {
7112                match _t {
7113                    alloy_sol_types::private::AssertTypeEq::<
7114                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7115                    >(_) => {}
7116                }
7117            }
7118            #[automatically_derived]
7119            #[doc(hidden)]
7120            impl ::core::convert::From<genesisStakeTableStateReturn>
7121            for UnderlyingRustTuple<'_> {
7122                fn from(value: genesisStakeTableStateReturn) -> Self {
7123                    (
7124                        value.threshold,
7125                        value.blsKeyComm,
7126                        value.schnorrKeyComm,
7127                        value.amountComm,
7128                    )
7129                }
7130            }
7131            #[automatically_derived]
7132            #[doc(hidden)]
7133            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7134            for genesisStakeTableStateReturn {
7135                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7136                    Self {
7137                        threshold: tuple.0,
7138                        blsKeyComm: tuple.1,
7139                        schnorrKeyComm: tuple.2,
7140                        amountComm: tuple.3,
7141                    }
7142                }
7143            }
7144        }
7145        #[automatically_derived]
7146        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7147            type Parameters<'a> = ();
7148            type Token<'a> = <Self::Parameters<
7149                'a,
7150            > as alloy_sol_types::SolType>::Token<'a>;
7151            type Return = genesisStakeTableStateReturn;
7152            type ReturnTuple<'a> = (
7153                alloy::sol_types::sol_data::Uint<256>,
7154                BN254::ScalarField,
7155                BN254::ScalarField,
7156                BN254::ScalarField,
7157            );
7158            type ReturnToken<'a> = <Self::ReturnTuple<
7159                'a,
7160            > as alloy_sol_types::SolType>::Token<'a>;
7161            const SIGNATURE: &'static str = "genesisStakeTableState()";
7162            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7163            #[inline]
7164            fn new<'a>(
7165                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7166            ) -> Self {
7167                tuple.into()
7168            }
7169            #[inline]
7170            fn tokenize(&self) -> Self::Token<'_> {
7171                ()
7172            }
7173            #[inline]
7174            fn abi_decode_returns(
7175                data: &[u8],
7176                validate: bool,
7177            ) -> alloy_sol_types::Result<Self::Return> {
7178                <Self::ReturnTuple<
7179                    '_,
7180                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7181                    .map(Into::into)
7182            }
7183        }
7184    };
7185    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7186    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7187```solidity
7188function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7189```*/
7190    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7191    #[derive(Clone)]
7192    pub struct genesisStateCall {}
7193    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7194    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7195    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7196    #[derive(Clone)]
7197    pub struct genesisStateReturn {
7198        #[allow(missing_docs)]
7199        pub viewNum: u64,
7200        #[allow(missing_docs)]
7201        pub blockHeight: u64,
7202        #[allow(missing_docs)]
7203        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7204    }
7205    #[allow(
7206        non_camel_case_types,
7207        non_snake_case,
7208        clippy::pub_underscore_fields,
7209        clippy::style
7210    )]
7211    const _: () = {
7212        use alloy::sol_types as alloy_sol_types;
7213        {
7214            #[doc(hidden)]
7215            type UnderlyingSolTuple<'a> = ();
7216            #[doc(hidden)]
7217            type UnderlyingRustTuple<'a> = ();
7218            #[cfg(test)]
7219            #[allow(dead_code, unreachable_patterns)]
7220            fn _type_assertion(
7221                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7222            ) {
7223                match _t {
7224                    alloy_sol_types::private::AssertTypeEq::<
7225                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7226                    >(_) => {}
7227                }
7228            }
7229            #[automatically_derived]
7230            #[doc(hidden)]
7231            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7232                fn from(value: genesisStateCall) -> Self {
7233                    ()
7234                }
7235            }
7236            #[automatically_derived]
7237            #[doc(hidden)]
7238            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7239                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7240                    Self {}
7241                }
7242            }
7243        }
7244        {
7245            #[doc(hidden)]
7246            type UnderlyingSolTuple<'a> = (
7247                alloy::sol_types::sol_data::Uint<64>,
7248                alloy::sol_types::sol_data::Uint<64>,
7249                BN254::ScalarField,
7250            );
7251            #[doc(hidden)]
7252            type UnderlyingRustTuple<'a> = (
7253                u64,
7254                u64,
7255                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7256            );
7257            #[cfg(test)]
7258            #[allow(dead_code, unreachable_patterns)]
7259            fn _type_assertion(
7260                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7261            ) {
7262                match _t {
7263                    alloy_sol_types::private::AssertTypeEq::<
7264                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7265                    >(_) => {}
7266                }
7267            }
7268            #[automatically_derived]
7269            #[doc(hidden)]
7270            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7271                fn from(value: genesisStateReturn) -> Self {
7272                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7273                }
7274            }
7275            #[automatically_derived]
7276            #[doc(hidden)]
7277            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7278                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7279                    Self {
7280                        viewNum: tuple.0,
7281                        blockHeight: tuple.1,
7282                        blockCommRoot: tuple.2,
7283                    }
7284                }
7285            }
7286        }
7287        #[automatically_derived]
7288        impl alloy_sol_types::SolCall for genesisStateCall {
7289            type Parameters<'a> = ();
7290            type Token<'a> = <Self::Parameters<
7291                'a,
7292            > as alloy_sol_types::SolType>::Token<'a>;
7293            type Return = genesisStateReturn;
7294            type ReturnTuple<'a> = (
7295                alloy::sol_types::sol_data::Uint<64>,
7296                alloy::sol_types::sol_data::Uint<64>,
7297                BN254::ScalarField,
7298            );
7299            type ReturnToken<'a> = <Self::ReturnTuple<
7300                'a,
7301            > as alloy_sol_types::SolType>::Token<'a>;
7302            const SIGNATURE: &'static str = "genesisState()";
7303            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7304            #[inline]
7305            fn new<'a>(
7306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7307            ) -> Self {
7308                tuple.into()
7309            }
7310            #[inline]
7311            fn tokenize(&self) -> Self::Token<'_> {
7312                ()
7313            }
7314            #[inline]
7315            fn abi_decode_returns(
7316                data: &[u8],
7317                validate: bool,
7318            ) -> alloy_sol_types::Result<Self::Return> {
7319                <Self::ReturnTuple<
7320                    '_,
7321                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7322                    .map(Into::into)
7323            }
7324        }
7325    };
7326    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7327    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7328```solidity
7329function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7330```*/
7331    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7332    #[derive(Clone)]
7333    pub struct getHotShotCommitmentCall {
7334        #[allow(missing_docs)]
7335        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7336    }
7337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7338    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7339    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7340    #[derive(Clone)]
7341    pub struct getHotShotCommitmentReturn {
7342        #[allow(missing_docs)]
7343        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7344        #[allow(missing_docs)]
7345        pub hotshotBlockHeight: u64,
7346    }
7347    #[allow(
7348        non_camel_case_types,
7349        non_snake_case,
7350        clippy::pub_underscore_fields,
7351        clippy::style
7352    )]
7353    const _: () = {
7354        use alloy::sol_types as alloy_sol_types;
7355        {
7356            #[doc(hidden)]
7357            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7358            #[doc(hidden)]
7359            type UnderlyingRustTuple<'a> = (
7360                alloy::sol_types::private::primitives::aliases::U256,
7361            );
7362            #[cfg(test)]
7363            #[allow(dead_code, unreachable_patterns)]
7364            fn _type_assertion(
7365                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7366            ) {
7367                match _t {
7368                    alloy_sol_types::private::AssertTypeEq::<
7369                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7370                    >(_) => {}
7371                }
7372            }
7373            #[automatically_derived]
7374            #[doc(hidden)]
7375            impl ::core::convert::From<getHotShotCommitmentCall>
7376            for UnderlyingRustTuple<'_> {
7377                fn from(value: getHotShotCommitmentCall) -> Self {
7378                    (value.hotShotBlockHeight,)
7379                }
7380            }
7381            #[automatically_derived]
7382            #[doc(hidden)]
7383            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7384            for getHotShotCommitmentCall {
7385                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7386                    Self {
7387                        hotShotBlockHeight: tuple.0,
7388                    }
7389                }
7390            }
7391        }
7392        {
7393            #[doc(hidden)]
7394            type UnderlyingSolTuple<'a> = (
7395                BN254::ScalarField,
7396                alloy::sol_types::sol_data::Uint<64>,
7397            );
7398            #[doc(hidden)]
7399            type UnderlyingRustTuple<'a> = (
7400                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7401                u64,
7402            );
7403            #[cfg(test)]
7404            #[allow(dead_code, unreachable_patterns)]
7405            fn _type_assertion(
7406                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7407            ) {
7408                match _t {
7409                    alloy_sol_types::private::AssertTypeEq::<
7410                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7411                    >(_) => {}
7412                }
7413            }
7414            #[automatically_derived]
7415            #[doc(hidden)]
7416            impl ::core::convert::From<getHotShotCommitmentReturn>
7417            for UnderlyingRustTuple<'_> {
7418                fn from(value: getHotShotCommitmentReturn) -> Self {
7419                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
7420                }
7421            }
7422            #[automatically_derived]
7423            #[doc(hidden)]
7424            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7425            for getHotShotCommitmentReturn {
7426                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7427                    Self {
7428                        hotShotBlockCommRoot: tuple.0,
7429                        hotshotBlockHeight: tuple.1,
7430                    }
7431                }
7432            }
7433        }
7434        #[automatically_derived]
7435        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
7436            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7437            type Token<'a> = <Self::Parameters<
7438                'a,
7439            > as alloy_sol_types::SolType>::Token<'a>;
7440            type Return = getHotShotCommitmentReturn;
7441            type ReturnTuple<'a> = (
7442                BN254::ScalarField,
7443                alloy::sol_types::sol_data::Uint<64>,
7444            );
7445            type ReturnToken<'a> = <Self::ReturnTuple<
7446                'a,
7447            > as alloy_sol_types::SolType>::Token<'a>;
7448            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
7449            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
7450            #[inline]
7451            fn new<'a>(
7452                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7453            ) -> Self {
7454                tuple.into()
7455            }
7456            #[inline]
7457            fn tokenize(&self) -> Self::Token<'_> {
7458                (
7459                    <alloy::sol_types::sol_data::Uint<
7460                        256,
7461                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
7462                )
7463            }
7464            #[inline]
7465            fn abi_decode_returns(
7466                data: &[u8],
7467                validate: bool,
7468            ) -> alloy_sol_types::Result<Self::Return> {
7469                <Self::ReturnTuple<
7470                    '_,
7471                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7472                    .map(Into::into)
7473            }
7474        }
7475    };
7476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7477    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
7478```solidity
7479function getStateHistoryCount() external view returns (uint256);
7480```*/
7481    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7482    #[derive(Clone)]
7483    pub struct getStateHistoryCountCall {}
7484    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7485    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
7486    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7487    #[derive(Clone)]
7488    pub struct getStateHistoryCountReturn {
7489        #[allow(missing_docs)]
7490        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7491    }
7492    #[allow(
7493        non_camel_case_types,
7494        non_snake_case,
7495        clippy::pub_underscore_fields,
7496        clippy::style
7497    )]
7498    const _: () = {
7499        use alloy::sol_types as alloy_sol_types;
7500        {
7501            #[doc(hidden)]
7502            type UnderlyingSolTuple<'a> = ();
7503            #[doc(hidden)]
7504            type UnderlyingRustTuple<'a> = ();
7505            #[cfg(test)]
7506            #[allow(dead_code, unreachable_patterns)]
7507            fn _type_assertion(
7508                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7509            ) {
7510                match _t {
7511                    alloy_sol_types::private::AssertTypeEq::<
7512                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7513                    >(_) => {}
7514                }
7515            }
7516            #[automatically_derived]
7517            #[doc(hidden)]
7518            impl ::core::convert::From<getStateHistoryCountCall>
7519            for UnderlyingRustTuple<'_> {
7520                fn from(value: getStateHistoryCountCall) -> Self {
7521                    ()
7522                }
7523            }
7524            #[automatically_derived]
7525            #[doc(hidden)]
7526            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7527            for getStateHistoryCountCall {
7528                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7529                    Self {}
7530                }
7531            }
7532        }
7533        {
7534            #[doc(hidden)]
7535            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7536            #[doc(hidden)]
7537            type UnderlyingRustTuple<'a> = (
7538                alloy::sol_types::private::primitives::aliases::U256,
7539            );
7540            #[cfg(test)]
7541            #[allow(dead_code, unreachable_patterns)]
7542            fn _type_assertion(
7543                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7544            ) {
7545                match _t {
7546                    alloy_sol_types::private::AssertTypeEq::<
7547                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7548                    >(_) => {}
7549                }
7550            }
7551            #[automatically_derived]
7552            #[doc(hidden)]
7553            impl ::core::convert::From<getStateHistoryCountReturn>
7554            for UnderlyingRustTuple<'_> {
7555                fn from(value: getStateHistoryCountReturn) -> Self {
7556                    (value._0,)
7557                }
7558            }
7559            #[automatically_derived]
7560            #[doc(hidden)]
7561            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7562            for getStateHistoryCountReturn {
7563                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7564                    Self { _0: tuple.0 }
7565                }
7566            }
7567        }
7568        #[automatically_derived]
7569        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
7570            type Parameters<'a> = ();
7571            type Token<'a> = <Self::Parameters<
7572                'a,
7573            > as alloy_sol_types::SolType>::Token<'a>;
7574            type Return = getStateHistoryCountReturn;
7575            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7576            type ReturnToken<'a> = <Self::ReturnTuple<
7577                'a,
7578            > as alloy_sol_types::SolType>::Token<'a>;
7579            const SIGNATURE: &'static str = "getStateHistoryCount()";
7580            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
7581            #[inline]
7582            fn new<'a>(
7583                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7584            ) -> Self {
7585                tuple.into()
7586            }
7587            #[inline]
7588            fn tokenize(&self) -> Self::Token<'_> {
7589                ()
7590            }
7591            #[inline]
7592            fn abi_decode_returns(
7593                data: &[u8],
7594                validate: bool,
7595            ) -> alloy_sol_types::Result<Self::Return> {
7596                <Self::ReturnTuple<
7597                    '_,
7598                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7599                    .map(Into::into)
7600            }
7601        }
7602    };
7603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7604    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
7605```solidity
7606function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
7607```*/
7608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7609    #[derive(Clone)]
7610    pub struct getVersionCall {}
7611    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7612    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
7613    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7614    #[derive(Clone)]
7615    pub struct getVersionReturn {
7616        #[allow(missing_docs)]
7617        pub majorVersion: u8,
7618        #[allow(missing_docs)]
7619        pub minorVersion: u8,
7620        #[allow(missing_docs)]
7621        pub patchVersion: u8,
7622    }
7623    #[allow(
7624        non_camel_case_types,
7625        non_snake_case,
7626        clippy::pub_underscore_fields,
7627        clippy::style
7628    )]
7629    const _: () = {
7630        use alloy::sol_types as alloy_sol_types;
7631        {
7632            #[doc(hidden)]
7633            type UnderlyingSolTuple<'a> = ();
7634            #[doc(hidden)]
7635            type UnderlyingRustTuple<'a> = ();
7636            #[cfg(test)]
7637            #[allow(dead_code, unreachable_patterns)]
7638            fn _type_assertion(
7639                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7640            ) {
7641                match _t {
7642                    alloy_sol_types::private::AssertTypeEq::<
7643                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7644                    >(_) => {}
7645                }
7646            }
7647            #[automatically_derived]
7648            #[doc(hidden)]
7649            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
7650                fn from(value: getVersionCall) -> Self {
7651                    ()
7652                }
7653            }
7654            #[automatically_derived]
7655            #[doc(hidden)]
7656            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
7657                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7658                    Self {}
7659                }
7660            }
7661        }
7662        {
7663            #[doc(hidden)]
7664            type UnderlyingSolTuple<'a> = (
7665                alloy::sol_types::sol_data::Uint<8>,
7666                alloy::sol_types::sol_data::Uint<8>,
7667                alloy::sol_types::sol_data::Uint<8>,
7668            );
7669            #[doc(hidden)]
7670            type UnderlyingRustTuple<'a> = (u8, u8, u8);
7671            #[cfg(test)]
7672            #[allow(dead_code, unreachable_patterns)]
7673            fn _type_assertion(
7674                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7675            ) {
7676                match _t {
7677                    alloy_sol_types::private::AssertTypeEq::<
7678                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7679                    >(_) => {}
7680                }
7681            }
7682            #[automatically_derived]
7683            #[doc(hidden)]
7684            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
7685                fn from(value: getVersionReturn) -> Self {
7686                    (value.majorVersion, value.minorVersion, value.patchVersion)
7687                }
7688            }
7689            #[automatically_derived]
7690            #[doc(hidden)]
7691            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
7692                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7693                    Self {
7694                        majorVersion: tuple.0,
7695                        minorVersion: tuple.1,
7696                        patchVersion: tuple.2,
7697                    }
7698                }
7699            }
7700        }
7701        #[automatically_derived]
7702        impl alloy_sol_types::SolCall for getVersionCall {
7703            type Parameters<'a> = ();
7704            type Token<'a> = <Self::Parameters<
7705                'a,
7706            > as alloy_sol_types::SolType>::Token<'a>;
7707            type Return = getVersionReturn;
7708            type ReturnTuple<'a> = (
7709                alloy::sol_types::sol_data::Uint<8>,
7710                alloy::sol_types::sol_data::Uint<8>,
7711                alloy::sol_types::sol_data::Uint<8>,
7712            );
7713            type ReturnToken<'a> = <Self::ReturnTuple<
7714                'a,
7715            > as alloy_sol_types::SolType>::Token<'a>;
7716            const SIGNATURE: &'static str = "getVersion()";
7717            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
7718            #[inline]
7719            fn new<'a>(
7720                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7721            ) -> Self {
7722                tuple.into()
7723            }
7724            #[inline]
7725            fn tokenize(&self) -> Self::Token<'_> {
7726                ()
7727            }
7728            #[inline]
7729            fn abi_decode_returns(
7730                data: &[u8],
7731                validate: bool,
7732            ) -> alloy_sol_types::Result<Self::Return> {
7733                <Self::ReturnTuple<
7734                    '_,
7735                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7736                    .map(Into::into)
7737            }
7738        }
7739    };
7740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7741    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
7742```solidity
7743function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
7744```*/
7745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7746    #[derive(Clone)]
7747    pub struct initializeCall {
7748        #[allow(missing_docs)]
7749        pub _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
7750        #[allow(missing_docs)]
7751        pub _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
7752        #[allow(missing_docs)]
7753        pub _stateHistoryRetentionPeriod: u32,
7754        #[allow(missing_docs)]
7755        pub owner: alloy::sol_types::private::Address,
7756    }
7757    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
7758    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7759    #[derive(Clone)]
7760    pub struct initializeReturn {}
7761    #[allow(
7762        non_camel_case_types,
7763        non_snake_case,
7764        clippy::pub_underscore_fields,
7765        clippy::style
7766    )]
7767    const _: () = {
7768        use alloy::sol_types as alloy_sol_types;
7769        {
7770            #[doc(hidden)]
7771            type UnderlyingSolTuple<'a> = (
7772                LightClientState,
7773                StakeTableState,
7774                alloy::sol_types::sol_data::Uint<32>,
7775                alloy::sol_types::sol_data::Address,
7776            );
7777            #[doc(hidden)]
7778            type UnderlyingRustTuple<'a> = (
7779                <LightClientState as alloy::sol_types::SolType>::RustType,
7780                <StakeTableState as alloy::sol_types::SolType>::RustType,
7781                u32,
7782                alloy::sol_types::private::Address,
7783            );
7784            #[cfg(test)]
7785            #[allow(dead_code, unreachable_patterns)]
7786            fn _type_assertion(
7787                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7788            ) {
7789                match _t {
7790                    alloy_sol_types::private::AssertTypeEq::<
7791                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7792                    >(_) => {}
7793                }
7794            }
7795            #[automatically_derived]
7796            #[doc(hidden)]
7797            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7798                fn from(value: initializeCall) -> Self {
7799                    (
7800                        value._genesis,
7801                        value._genesisStakeTableState,
7802                        value._stateHistoryRetentionPeriod,
7803                        value.owner,
7804                    )
7805                }
7806            }
7807            #[automatically_derived]
7808            #[doc(hidden)]
7809            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7810                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7811                    Self {
7812                        _genesis: tuple.0,
7813                        _genesisStakeTableState: tuple.1,
7814                        _stateHistoryRetentionPeriod: tuple.2,
7815                        owner: tuple.3,
7816                    }
7817                }
7818            }
7819        }
7820        {
7821            #[doc(hidden)]
7822            type UnderlyingSolTuple<'a> = ();
7823            #[doc(hidden)]
7824            type UnderlyingRustTuple<'a> = ();
7825            #[cfg(test)]
7826            #[allow(dead_code, unreachable_patterns)]
7827            fn _type_assertion(
7828                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7829            ) {
7830                match _t {
7831                    alloy_sol_types::private::AssertTypeEq::<
7832                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7833                    >(_) => {}
7834                }
7835            }
7836            #[automatically_derived]
7837            #[doc(hidden)]
7838            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7839                fn from(value: initializeReturn) -> Self {
7840                    ()
7841                }
7842            }
7843            #[automatically_derived]
7844            #[doc(hidden)]
7845            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7846                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7847                    Self {}
7848                }
7849            }
7850        }
7851        #[automatically_derived]
7852        impl alloy_sol_types::SolCall for initializeCall {
7853            type Parameters<'a> = (
7854                LightClientState,
7855                StakeTableState,
7856                alloy::sol_types::sol_data::Uint<32>,
7857                alloy::sol_types::sol_data::Address,
7858            );
7859            type Token<'a> = <Self::Parameters<
7860                'a,
7861            > as alloy_sol_types::SolType>::Token<'a>;
7862            type Return = initializeReturn;
7863            type ReturnTuple<'a> = ();
7864            type ReturnToken<'a> = <Self::ReturnTuple<
7865                'a,
7866            > as alloy_sol_types::SolType>::Token<'a>;
7867            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
7868            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
7869            #[inline]
7870            fn new<'a>(
7871                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7872            ) -> Self {
7873                tuple.into()
7874            }
7875            #[inline]
7876            fn tokenize(&self) -> Self::Token<'_> {
7877                (
7878                    <LightClientState as alloy_sol_types::SolType>::tokenize(
7879                        &self._genesis,
7880                    ),
7881                    <StakeTableState as alloy_sol_types::SolType>::tokenize(
7882                        &self._genesisStakeTableState,
7883                    ),
7884                    <alloy::sol_types::sol_data::Uint<
7885                        32,
7886                    > as alloy_sol_types::SolType>::tokenize(
7887                        &self._stateHistoryRetentionPeriod,
7888                    ),
7889                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7890                        &self.owner,
7891                    ),
7892                )
7893            }
7894            #[inline]
7895            fn abi_decode_returns(
7896                data: &[u8],
7897                validate: bool,
7898            ) -> alloy_sol_types::Result<Self::Return> {
7899                <Self::ReturnTuple<
7900                    '_,
7901                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7902                    .map(Into::into)
7903            }
7904        }
7905    };
7906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7907    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
7908```solidity
7909function isPermissionedProverEnabled() external view returns (bool);
7910```*/
7911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7912    #[derive(Clone)]
7913    pub struct isPermissionedProverEnabledCall {}
7914    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7915    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
7916    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7917    #[derive(Clone)]
7918    pub struct isPermissionedProverEnabledReturn {
7919        #[allow(missing_docs)]
7920        pub _0: bool,
7921    }
7922    #[allow(
7923        non_camel_case_types,
7924        non_snake_case,
7925        clippy::pub_underscore_fields,
7926        clippy::style
7927    )]
7928    const _: () = {
7929        use alloy::sol_types as alloy_sol_types;
7930        {
7931            #[doc(hidden)]
7932            type UnderlyingSolTuple<'a> = ();
7933            #[doc(hidden)]
7934            type UnderlyingRustTuple<'a> = ();
7935            #[cfg(test)]
7936            #[allow(dead_code, unreachable_patterns)]
7937            fn _type_assertion(
7938                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7939            ) {
7940                match _t {
7941                    alloy_sol_types::private::AssertTypeEq::<
7942                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7943                    >(_) => {}
7944                }
7945            }
7946            #[automatically_derived]
7947            #[doc(hidden)]
7948            impl ::core::convert::From<isPermissionedProverEnabledCall>
7949            for UnderlyingRustTuple<'_> {
7950                fn from(value: isPermissionedProverEnabledCall) -> Self {
7951                    ()
7952                }
7953            }
7954            #[automatically_derived]
7955            #[doc(hidden)]
7956            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7957            for isPermissionedProverEnabledCall {
7958                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7959                    Self {}
7960                }
7961            }
7962        }
7963        {
7964            #[doc(hidden)]
7965            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7966            #[doc(hidden)]
7967            type UnderlyingRustTuple<'a> = (bool,);
7968            #[cfg(test)]
7969            #[allow(dead_code, unreachable_patterns)]
7970            fn _type_assertion(
7971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7972            ) {
7973                match _t {
7974                    alloy_sol_types::private::AssertTypeEq::<
7975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7976                    >(_) => {}
7977                }
7978            }
7979            #[automatically_derived]
7980            #[doc(hidden)]
7981            impl ::core::convert::From<isPermissionedProverEnabledReturn>
7982            for UnderlyingRustTuple<'_> {
7983                fn from(value: isPermissionedProverEnabledReturn) -> Self {
7984                    (value._0,)
7985                }
7986            }
7987            #[automatically_derived]
7988            #[doc(hidden)]
7989            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7990            for isPermissionedProverEnabledReturn {
7991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7992                    Self { _0: tuple.0 }
7993                }
7994            }
7995        }
7996        #[automatically_derived]
7997        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
7998            type Parameters<'a> = ();
7999            type Token<'a> = <Self::Parameters<
8000                'a,
8001            > as alloy_sol_types::SolType>::Token<'a>;
8002            type Return = isPermissionedProverEnabledReturn;
8003            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8004            type ReturnToken<'a> = <Self::ReturnTuple<
8005                'a,
8006            > as alloy_sol_types::SolType>::Token<'a>;
8007            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8008            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8009            #[inline]
8010            fn new<'a>(
8011                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8012            ) -> Self {
8013                tuple.into()
8014            }
8015            #[inline]
8016            fn tokenize(&self) -> Self::Token<'_> {
8017                ()
8018            }
8019            #[inline]
8020            fn abi_decode_returns(
8021                data: &[u8],
8022                validate: bool,
8023            ) -> alloy_sol_types::Result<Self::Return> {
8024                <Self::ReturnTuple<
8025                    '_,
8026                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8027                    .map(Into::into)
8028            }
8029        }
8030    };
8031    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8032    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8033```solidity
8034function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
8035```*/
8036    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8037    #[derive(Clone)]
8038    pub struct lagOverEscapeHatchThresholdCall {
8039        #[allow(missing_docs)]
8040        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8041        #[allow(missing_docs)]
8042        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
8043    }
8044    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8045    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8046    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8047    #[derive(Clone)]
8048    pub struct lagOverEscapeHatchThresholdReturn {
8049        #[allow(missing_docs)]
8050        pub _0: bool,
8051    }
8052    #[allow(
8053        non_camel_case_types,
8054        non_snake_case,
8055        clippy::pub_underscore_fields,
8056        clippy::style
8057    )]
8058    const _: () = {
8059        use alloy::sol_types as alloy_sol_types;
8060        {
8061            #[doc(hidden)]
8062            type UnderlyingSolTuple<'a> = (
8063                alloy::sol_types::sol_data::Uint<256>,
8064                alloy::sol_types::sol_data::Uint<256>,
8065            );
8066            #[doc(hidden)]
8067            type UnderlyingRustTuple<'a> = (
8068                alloy::sol_types::private::primitives::aliases::U256,
8069                alloy::sol_types::private::primitives::aliases::U256,
8070            );
8071            #[cfg(test)]
8072            #[allow(dead_code, unreachable_patterns)]
8073            fn _type_assertion(
8074                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8075            ) {
8076                match _t {
8077                    alloy_sol_types::private::AssertTypeEq::<
8078                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8079                    >(_) => {}
8080                }
8081            }
8082            #[automatically_derived]
8083            #[doc(hidden)]
8084            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8085            for UnderlyingRustTuple<'_> {
8086                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8087                    (value.blockNumber, value.blockThreshold)
8088                }
8089            }
8090            #[automatically_derived]
8091            #[doc(hidden)]
8092            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8093            for lagOverEscapeHatchThresholdCall {
8094                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8095                    Self {
8096                        blockNumber: tuple.0,
8097                        blockThreshold: tuple.1,
8098                    }
8099                }
8100            }
8101        }
8102        {
8103            #[doc(hidden)]
8104            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8105            #[doc(hidden)]
8106            type UnderlyingRustTuple<'a> = (bool,);
8107            #[cfg(test)]
8108            #[allow(dead_code, unreachable_patterns)]
8109            fn _type_assertion(
8110                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8111            ) {
8112                match _t {
8113                    alloy_sol_types::private::AssertTypeEq::<
8114                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8115                    >(_) => {}
8116                }
8117            }
8118            #[automatically_derived]
8119            #[doc(hidden)]
8120            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8121            for UnderlyingRustTuple<'_> {
8122                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8123                    (value._0,)
8124                }
8125            }
8126            #[automatically_derived]
8127            #[doc(hidden)]
8128            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8129            for lagOverEscapeHatchThresholdReturn {
8130                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8131                    Self { _0: tuple.0 }
8132                }
8133            }
8134        }
8135        #[automatically_derived]
8136        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8137            type Parameters<'a> = (
8138                alloy::sol_types::sol_data::Uint<256>,
8139                alloy::sol_types::sol_data::Uint<256>,
8140            );
8141            type Token<'a> = <Self::Parameters<
8142                'a,
8143            > as alloy_sol_types::SolType>::Token<'a>;
8144            type Return = lagOverEscapeHatchThresholdReturn;
8145            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8146            type ReturnToken<'a> = <Self::ReturnTuple<
8147                'a,
8148            > as alloy_sol_types::SolType>::Token<'a>;
8149            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
8150            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
8151            #[inline]
8152            fn new<'a>(
8153                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8154            ) -> Self {
8155                tuple.into()
8156            }
8157            #[inline]
8158            fn tokenize(&self) -> Self::Token<'_> {
8159                (
8160                    <alloy::sol_types::sol_data::Uint<
8161                        256,
8162                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
8163                    <alloy::sol_types::sol_data::Uint<
8164                        256,
8165                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
8166                )
8167            }
8168            #[inline]
8169            fn abi_decode_returns(
8170                data: &[u8],
8171                validate: bool,
8172            ) -> alloy_sol_types::Result<Self::Return> {
8173                <Self::ReturnTuple<
8174                    '_,
8175                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8176                    .map(Into::into)
8177            }
8178        }
8179    };
8180    #[derive()]
8181    /**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`.
8182```solidity
8183function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
8184```*/
8185    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8186    #[derive(Clone)]
8187    pub struct newFinalizedStateCall {
8188        #[allow(missing_docs)]
8189        pub newState: <LightClientState as alloy::sol_types::SolType>::RustType,
8190        #[allow(missing_docs)]
8191        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8192    }
8193    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedStateCall) function.
8194    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8195    #[derive(Clone)]
8196    pub struct newFinalizedStateReturn {}
8197    #[allow(
8198        non_camel_case_types,
8199        non_snake_case,
8200        clippy::pub_underscore_fields,
8201        clippy::style
8202    )]
8203    const _: () = {
8204        use alloy::sol_types as alloy_sol_types;
8205        {
8206            #[doc(hidden)]
8207            type UnderlyingSolTuple<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
8208            #[doc(hidden)]
8209            type UnderlyingRustTuple<'a> = (
8210                <LightClientState as alloy::sol_types::SolType>::RustType,
8211                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8212            );
8213            #[cfg(test)]
8214            #[allow(dead_code, unreachable_patterns)]
8215            fn _type_assertion(
8216                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8217            ) {
8218                match _t {
8219                    alloy_sol_types::private::AssertTypeEq::<
8220                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8221                    >(_) => {}
8222                }
8223            }
8224            #[automatically_derived]
8225            #[doc(hidden)]
8226            impl ::core::convert::From<newFinalizedStateCall>
8227            for UnderlyingRustTuple<'_> {
8228                fn from(value: newFinalizedStateCall) -> Self {
8229                    (value.newState, value.proof)
8230                }
8231            }
8232            #[automatically_derived]
8233            #[doc(hidden)]
8234            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8235            for newFinalizedStateCall {
8236                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8237                    Self {
8238                        newState: tuple.0,
8239                        proof: tuple.1,
8240                    }
8241                }
8242            }
8243        }
8244        {
8245            #[doc(hidden)]
8246            type UnderlyingSolTuple<'a> = ();
8247            #[doc(hidden)]
8248            type UnderlyingRustTuple<'a> = ();
8249            #[cfg(test)]
8250            #[allow(dead_code, unreachable_patterns)]
8251            fn _type_assertion(
8252                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8253            ) {
8254                match _t {
8255                    alloy_sol_types::private::AssertTypeEq::<
8256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8257                    >(_) => {}
8258                }
8259            }
8260            #[automatically_derived]
8261            #[doc(hidden)]
8262            impl ::core::convert::From<newFinalizedStateReturn>
8263            for UnderlyingRustTuple<'_> {
8264                fn from(value: newFinalizedStateReturn) -> Self {
8265                    ()
8266                }
8267            }
8268            #[automatically_derived]
8269            #[doc(hidden)]
8270            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8271            for newFinalizedStateReturn {
8272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8273                    Self {}
8274                }
8275            }
8276        }
8277        #[automatically_derived]
8278        impl alloy_sol_types::SolCall for newFinalizedStateCall {
8279            type Parameters<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
8280            type Token<'a> = <Self::Parameters<
8281                'a,
8282            > as alloy_sol_types::SolType>::Token<'a>;
8283            type Return = newFinalizedStateReturn;
8284            type ReturnTuple<'a> = ();
8285            type ReturnToken<'a> = <Self::ReturnTuple<
8286                'a,
8287            > as alloy_sol_types::SolType>::Token<'a>;
8288            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))";
8289            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
8290            #[inline]
8291            fn new<'a>(
8292                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8293            ) -> Self {
8294                tuple.into()
8295            }
8296            #[inline]
8297            fn tokenize(&self) -> Self::Token<'_> {
8298                (
8299                    <LightClientState as alloy_sol_types::SolType>::tokenize(
8300                        &self.newState,
8301                    ),
8302                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
8303                        &self.proof,
8304                    ),
8305                )
8306            }
8307            #[inline]
8308            fn abi_decode_returns(
8309                data: &[u8],
8310                validate: bool,
8311            ) -> alloy_sol_types::Result<Self::Return> {
8312                <Self::ReturnTuple<
8313                    '_,
8314                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8315                    .map(Into::into)
8316            }
8317        }
8318    };
8319    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8320    /**Function with signature `owner()` and selector `0x8da5cb5b`.
8321```solidity
8322function owner() external view returns (address);
8323```*/
8324    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8325    #[derive(Clone)]
8326    pub struct ownerCall {}
8327    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8328    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
8329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8330    #[derive(Clone)]
8331    pub struct ownerReturn {
8332        #[allow(missing_docs)]
8333        pub _0: alloy::sol_types::private::Address,
8334    }
8335    #[allow(
8336        non_camel_case_types,
8337        non_snake_case,
8338        clippy::pub_underscore_fields,
8339        clippy::style
8340    )]
8341    const _: () = {
8342        use alloy::sol_types as alloy_sol_types;
8343        {
8344            #[doc(hidden)]
8345            type UnderlyingSolTuple<'a> = ();
8346            #[doc(hidden)]
8347            type UnderlyingRustTuple<'a> = ();
8348            #[cfg(test)]
8349            #[allow(dead_code, unreachable_patterns)]
8350            fn _type_assertion(
8351                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8352            ) {
8353                match _t {
8354                    alloy_sol_types::private::AssertTypeEq::<
8355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8356                    >(_) => {}
8357                }
8358            }
8359            #[automatically_derived]
8360            #[doc(hidden)]
8361            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
8362                fn from(value: ownerCall) -> Self {
8363                    ()
8364                }
8365            }
8366            #[automatically_derived]
8367            #[doc(hidden)]
8368            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
8369                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8370                    Self {}
8371                }
8372            }
8373        }
8374        {
8375            #[doc(hidden)]
8376            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8377            #[doc(hidden)]
8378            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8379            #[cfg(test)]
8380            #[allow(dead_code, unreachable_patterns)]
8381            fn _type_assertion(
8382                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8383            ) {
8384                match _t {
8385                    alloy_sol_types::private::AssertTypeEq::<
8386                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8387                    >(_) => {}
8388                }
8389            }
8390            #[automatically_derived]
8391            #[doc(hidden)]
8392            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
8393                fn from(value: ownerReturn) -> Self {
8394                    (value._0,)
8395                }
8396            }
8397            #[automatically_derived]
8398            #[doc(hidden)]
8399            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
8400                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8401                    Self { _0: tuple.0 }
8402                }
8403            }
8404        }
8405        #[automatically_derived]
8406        impl alloy_sol_types::SolCall for ownerCall {
8407            type Parameters<'a> = ();
8408            type Token<'a> = <Self::Parameters<
8409                'a,
8410            > as alloy_sol_types::SolType>::Token<'a>;
8411            type Return = ownerReturn;
8412            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8413            type ReturnToken<'a> = <Self::ReturnTuple<
8414                'a,
8415            > as alloy_sol_types::SolType>::Token<'a>;
8416            const SIGNATURE: &'static str = "owner()";
8417            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
8418            #[inline]
8419            fn new<'a>(
8420                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8421            ) -> Self {
8422                tuple.into()
8423            }
8424            #[inline]
8425            fn tokenize(&self) -> Self::Token<'_> {
8426                ()
8427            }
8428            #[inline]
8429            fn abi_decode_returns(
8430                data: &[u8],
8431                validate: bool,
8432            ) -> alloy_sol_types::Result<Self::Return> {
8433                <Self::ReturnTuple<
8434                    '_,
8435                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8436                    .map(Into::into)
8437            }
8438        }
8439    };
8440    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8441    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
8442```solidity
8443function permissionedProver() external view returns (address);
8444```*/
8445    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8446    #[derive(Clone)]
8447    pub struct permissionedProverCall {}
8448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8449    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
8450    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8451    #[derive(Clone)]
8452    pub struct permissionedProverReturn {
8453        #[allow(missing_docs)]
8454        pub _0: alloy::sol_types::private::Address,
8455    }
8456    #[allow(
8457        non_camel_case_types,
8458        non_snake_case,
8459        clippy::pub_underscore_fields,
8460        clippy::style
8461    )]
8462    const _: () = {
8463        use alloy::sol_types as alloy_sol_types;
8464        {
8465            #[doc(hidden)]
8466            type UnderlyingSolTuple<'a> = ();
8467            #[doc(hidden)]
8468            type UnderlyingRustTuple<'a> = ();
8469            #[cfg(test)]
8470            #[allow(dead_code, unreachable_patterns)]
8471            fn _type_assertion(
8472                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8473            ) {
8474                match _t {
8475                    alloy_sol_types::private::AssertTypeEq::<
8476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8477                    >(_) => {}
8478                }
8479            }
8480            #[automatically_derived]
8481            #[doc(hidden)]
8482            impl ::core::convert::From<permissionedProverCall>
8483            for UnderlyingRustTuple<'_> {
8484                fn from(value: permissionedProverCall) -> Self {
8485                    ()
8486                }
8487            }
8488            #[automatically_derived]
8489            #[doc(hidden)]
8490            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8491            for permissionedProverCall {
8492                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8493                    Self {}
8494                }
8495            }
8496        }
8497        {
8498            #[doc(hidden)]
8499            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8500            #[doc(hidden)]
8501            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8502            #[cfg(test)]
8503            #[allow(dead_code, unreachable_patterns)]
8504            fn _type_assertion(
8505                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8506            ) {
8507                match _t {
8508                    alloy_sol_types::private::AssertTypeEq::<
8509                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8510                    >(_) => {}
8511                }
8512            }
8513            #[automatically_derived]
8514            #[doc(hidden)]
8515            impl ::core::convert::From<permissionedProverReturn>
8516            for UnderlyingRustTuple<'_> {
8517                fn from(value: permissionedProverReturn) -> Self {
8518                    (value._0,)
8519                }
8520            }
8521            #[automatically_derived]
8522            #[doc(hidden)]
8523            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8524            for permissionedProverReturn {
8525                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8526                    Self { _0: tuple.0 }
8527                }
8528            }
8529        }
8530        #[automatically_derived]
8531        impl alloy_sol_types::SolCall for permissionedProverCall {
8532            type Parameters<'a> = ();
8533            type Token<'a> = <Self::Parameters<
8534                'a,
8535            > as alloy_sol_types::SolType>::Token<'a>;
8536            type Return = permissionedProverReturn;
8537            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8538            type ReturnToken<'a> = <Self::ReturnTuple<
8539                'a,
8540            > as alloy_sol_types::SolType>::Token<'a>;
8541            const SIGNATURE: &'static str = "permissionedProver()";
8542            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
8543            #[inline]
8544            fn new<'a>(
8545                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8546            ) -> Self {
8547                tuple.into()
8548            }
8549            #[inline]
8550            fn tokenize(&self) -> Self::Token<'_> {
8551                ()
8552            }
8553            #[inline]
8554            fn abi_decode_returns(
8555                data: &[u8],
8556                validate: bool,
8557            ) -> alloy_sol_types::Result<Self::Return> {
8558                <Self::ReturnTuple<
8559                    '_,
8560                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8561                    .map(Into::into)
8562            }
8563        }
8564    };
8565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8566    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
8567```solidity
8568function proxiableUUID() external view returns (bytes32);
8569```*/
8570    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8571    #[derive(Clone)]
8572    pub struct proxiableUUIDCall {}
8573    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8574    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
8575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8576    #[derive(Clone)]
8577    pub struct proxiableUUIDReturn {
8578        #[allow(missing_docs)]
8579        pub _0: alloy::sol_types::private::FixedBytes<32>,
8580    }
8581    #[allow(
8582        non_camel_case_types,
8583        non_snake_case,
8584        clippy::pub_underscore_fields,
8585        clippy::style
8586    )]
8587    const _: () = {
8588        use alloy::sol_types as alloy_sol_types;
8589        {
8590            #[doc(hidden)]
8591            type UnderlyingSolTuple<'a> = ();
8592            #[doc(hidden)]
8593            type UnderlyingRustTuple<'a> = ();
8594            #[cfg(test)]
8595            #[allow(dead_code, unreachable_patterns)]
8596            fn _type_assertion(
8597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8598            ) {
8599                match _t {
8600                    alloy_sol_types::private::AssertTypeEq::<
8601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8602                    >(_) => {}
8603                }
8604            }
8605            #[automatically_derived]
8606            #[doc(hidden)]
8607            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
8608                fn from(value: proxiableUUIDCall) -> Self {
8609                    ()
8610                }
8611            }
8612            #[automatically_derived]
8613            #[doc(hidden)]
8614            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
8615                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8616                    Self {}
8617                }
8618            }
8619        }
8620        {
8621            #[doc(hidden)]
8622            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8623            #[doc(hidden)]
8624            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8625            #[cfg(test)]
8626            #[allow(dead_code, unreachable_patterns)]
8627            fn _type_assertion(
8628                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8629            ) {
8630                match _t {
8631                    alloy_sol_types::private::AssertTypeEq::<
8632                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8633                    >(_) => {}
8634                }
8635            }
8636            #[automatically_derived]
8637            #[doc(hidden)]
8638            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
8639                fn from(value: proxiableUUIDReturn) -> Self {
8640                    (value._0,)
8641                }
8642            }
8643            #[automatically_derived]
8644            #[doc(hidden)]
8645            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
8646                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8647                    Self { _0: tuple.0 }
8648                }
8649            }
8650        }
8651        #[automatically_derived]
8652        impl alloy_sol_types::SolCall for proxiableUUIDCall {
8653            type Parameters<'a> = ();
8654            type Token<'a> = <Self::Parameters<
8655                'a,
8656            > as alloy_sol_types::SolType>::Token<'a>;
8657            type Return = proxiableUUIDReturn;
8658            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8659            type ReturnToken<'a> = <Self::ReturnTuple<
8660                'a,
8661            > as alloy_sol_types::SolType>::Token<'a>;
8662            const SIGNATURE: &'static str = "proxiableUUID()";
8663            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
8664            #[inline]
8665            fn new<'a>(
8666                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8667            ) -> Self {
8668                tuple.into()
8669            }
8670            #[inline]
8671            fn tokenize(&self) -> Self::Token<'_> {
8672                ()
8673            }
8674            #[inline]
8675            fn abi_decode_returns(
8676                data: &[u8],
8677                validate: bool,
8678            ) -> alloy_sol_types::Result<Self::Return> {
8679                <Self::ReturnTuple<
8680                    '_,
8681                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8682                    .map(Into::into)
8683            }
8684        }
8685    };
8686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8687    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
8688```solidity
8689function renounceOwnership() external;
8690```*/
8691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8692    #[derive(Clone)]
8693    pub struct renounceOwnershipCall {}
8694    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
8695    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8696    #[derive(Clone)]
8697    pub struct renounceOwnershipReturn {}
8698    #[allow(
8699        non_camel_case_types,
8700        non_snake_case,
8701        clippy::pub_underscore_fields,
8702        clippy::style
8703    )]
8704    const _: () = {
8705        use alloy::sol_types as alloy_sol_types;
8706        {
8707            #[doc(hidden)]
8708            type UnderlyingSolTuple<'a> = ();
8709            #[doc(hidden)]
8710            type UnderlyingRustTuple<'a> = ();
8711            #[cfg(test)]
8712            #[allow(dead_code, unreachable_patterns)]
8713            fn _type_assertion(
8714                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8715            ) {
8716                match _t {
8717                    alloy_sol_types::private::AssertTypeEq::<
8718                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8719                    >(_) => {}
8720                }
8721            }
8722            #[automatically_derived]
8723            #[doc(hidden)]
8724            impl ::core::convert::From<renounceOwnershipCall>
8725            for UnderlyingRustTuple<'_> {
8726                fn from(value: renounceOwnershipCall) -> Self {
8727                    ()
8728                }
8729            }
8730            #[automatically_derived]
8731            #[doc(hidden)]
8732            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8733            for renounceOwnershipCall {
8734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8735                    Self {}
8736                }
8737            }
8738        }
8739        {
8740            #[doc(hidden)]
8741            type UnderlyingSolTuple<'a> = ();
8742            #[doc(hidden)]
8743            type UnderlyingRustTuple<'a> = ();
8744            #[cfg(test)]
8745            #[allow(dead_code, unreachable_patterns)]
8746            fn _type_assertion(
8747                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8748            ) {
8749                match _t {
8750                    alloy_sol_types::private::AssertTypeEq::<
8751                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8752                    >(_) => {}
8753                }
8754            }
8755            #[automatically_derived]
8756            #[doc(hidden)]
8757            impl ::core::convert::From<renounceOwnershipReturn>
8758            for UnderlyingRustTuple<'_> {
8759                fn from(value: renounceOwnershipReturn) -> Self {
8760                    ()
8761                }
8762            }
8763            #[automatically_derived]
8764            #[doc(hidden)]
8765            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8766            for renounceOwnershipReturn {
8767                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8768                    Self {}
8769                }
8770            }
8771        }
8772        #[automatically_derived]
8773        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8774            type Parameters<'a> = ();
8775            type Token<'a> = <Self::Parameters<
8776                'a,
8777            > as alloy_sol_types::SolType>::Token<'a>;
8778            type Return = renounceOwnershipReturn;
8779            type ReturnTuple<'a> = ();
8780            type ReturnToken<'a> = <Self::ReturnTuple<
8781                'a,
8782            > as alloy_sol_types::SolType>::Token<'a>;
8783            const SIGNATURE: &'static str = "renounceOwnership()";
8784            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8785            #[inline]
8786            fn new<'a>(
8787                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8788            ) -> Self {
8789                tuple.into()
8790            }
8791            #[inline]
8792            fn tokenize(&self) -> Self::Token<'_> {
8793                ()
8794            }
8795            #[inline]
8796            fn abi_decode_returns(
8797                data: &[u8],
8798                validate: bool,
8799            ) -> alloy_sol_types::Result<Self::Return> {
8800                <Self::ReturnTuple<
8801                    '_,
8802                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8803                    .map(Into::into)
8804            }
8805        }
8806    };
8807    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8808    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
8809```solidity
8810function setPermissionedProver(address prover) external;
8811```*/
8812    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8813    #[derive(Clone)]
8814    pub struct setPermissionedProverCall {
8815        #[allow(missing_docs)]
8816        pub prover: alloy::sol_types::private::Address,
8817    }
8818    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
8819    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8820    #[derive(Clone)]
8821    pub struct setPermissionedProverReturn {}
8822    #[allow(
8823        non_camel_case_types,
8824        non_snake_case,
8825        clippy::pub_underscore_fields,
8826        clippy::style
8827    )]
8828    const _: () = {
8829        use alloy::sol_types as alloy_sol_types;
8830        {
8831            #[doc(hidden)]
8832            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8833            #[doc(hidden)]
8834            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8835            #[cfg(test)]
8836            #[allow(dead_code, unreachable_patterns)]
8837            fn _type_assertion(
8838                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8839            ) {
8840                match _t {
8841                    alloy_sol_types::private::AssertTypeEq::<
8842                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8843                    >(_) => {}
8844                }
8845            }
8846            #[automatically_derived]
8847            #[doc(hidden)]
8848            impl ::core::convert::From<setPermissionedProverCall>
8849            for UnderlyingRustTuple<'_> {
8850                fn from(value: setPermissionedProverCall) -> Self {
8851                    (value.prover,)
8852                }
8853            }
8854            #[automatically_derived]
8855            #[doc(hidden)]
8856            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8857            for setPermissionedProverCall {
8858                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8859                    Self { prover: tuple.0 }
8860                }
8861            }
8862        }
8863        {
8864            #[doc(hidden)]
8865            type UnderlyingSolTuple<'a> = ();
8866            #[doc(hidden)]
8867            type UnderlyingRustTuple<'a> = ();
8868            #[cfg(test)]
8869            #[allow(dead_code, unreachable_patterns)]
8870            fn _type_assertion(
8871                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8872            ) {
8873                match _t {
8874                    alloy_sol_types::private::AssertTypeEq::<
8875                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8876                    >(_) => {}
8877                }
8878            }
8879            #[automatically_derived]
8880            #[doc(hidden)]
8881            impl ::core::convert::From<setPermissionedProverReturn>
8882            for UnderlyingRustTuple<'_> {
8883                fn from(value: setPermissionedProverReturn) -> Self {
8884                    ()
8885                }
8886            }
8887            #[automatically_derived]
8888            #[doc(hidden)]
8889            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8890            for setPermissionedProverReturn {
8891                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8892                    Self {}
8893                }
8894            }
8895        }
8896        #[automatically_derived]
8897        impl alloy_sol_types::SolCall for setPermissionedProverCall {
8898            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8899            type Token<'a> = <Self::Parameters<
8900                'a,
8901            > as alloy_sol_types::SolType>::Token<'a>;
8902            type Return = setPermissionedProverReturn;
8903            type ReturnTuple<'a> = ();
8904            type ReturnToken<'a> = <Self::ReturnTuple<
8905                'a,
8906            > as alloy_sol_types::SolType>::Token<'a>;
8907            const SIGNATURE: &'static str = "setPermissionedProver(address)";
8908            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
8909            #[inline]
8910            fn new<'a>(
8911                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8912            ) -> Self {
8913                tuple.into()
8914            }
8915            #[inline]
8916            fn tokenize(&self) -> Self::Token<'_> {
8917                (
8918                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8919                        &self.prover,
8920                    ),
8921                )
8922            }
8923            #[inline]
8924            fn abi_decode_returns(
8925                data: &[u8],
8926                validate: bool,
8927            ) -> alloy_sol_types::Result<Self::Return> {
8928                <Self::ReturnTuple<
8929                    '_,
8930                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8931                    .map(Into::into)
8932            }
8933        }
8934    };
8935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8936    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
8937```solidity
8938function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
8939```*/
8940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8941    #[derive(Clone)]
8942    pub struct setstateHistoryRetentionPeriodCall {
8943        #[allow(missing_docs)]
8944        pub historySeconds: u32,
8945    }
8946    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
8947    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8948    #[derive(Clone)]
8949    pub struct setstateHistoryRetentionPeriodReturn {}
8950    #[allow(
8951        non_camel_case_types,
8952        non_snake_case,
8953        clippy::pub_underscore_fields,
8954        clippy::style
8955    )]
8956    const _: () = {
8957        use alloy::sol_types as alloy_sol_types;
8958        {
8959            #[doc(hidden)]
8960            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8961            #[doc(hidden)]
8962            type UnderlyingRustTuple<'a> = (u32,);
8963            #[cfg(test)]
8964            #[allow(dead_code, unreachable_patterns)]
8965            fn _type_assertion(
8966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8967            ) {
8968                match _t {
8969                    alloy_sol_types::private::AssertTypeEq::<
8970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8971                    >(_) => {}
8972                }
8973            }
8974            #[automatically_derived]
8975            #[doc(hidden)]
8976            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
8977            for UnderlyingRustTuple<'_> {
8978                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
8979                    (value.historySeconds,)
8980                }
8981            }
8982            #[automatically_derived]
8983            #[doc(hidden)]
8984            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8985            for setstateHistoryRetentionPeriodCall {
8986                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8987                    Self { historySeconds: tuple.0 }
8988                }
8989            }
8990        }
8991        {
8992            #[doc(hidden)]
8993            type UnderlyingSolTuple<'a> = ();
8994            #[doc(hidden)]
8995            type UnderlyingRustTuple<'a> = ();
8996            #[cfg(test)]
8997            #[allow(dead_code, unreachable_patterns)]
8998            fn _type_assertion(
8999                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9000            ) {
9001                match _t {
9002                    alloy_sol_types::private::AssertTypeEq::<
9003                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9004                    >(_) => {}
9005                }
9006            }
9007            #[automatically_derived]
9008            #[doc(hidden)]
9009            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
9010            for UnderlyingRustTuple<'_> {
9011                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9012                    ()
9013                }
9014            }
9015            #[automatically_derived]
9016            #[doc(hidden)]
9017            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9018            for setstateHistoryRetentionPeriodReturn {
9019                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9020                    Self {}
9021                }
9022            }
9023        }
9024        #[automatically_derived]
9025        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
9026            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9027            type Token<'a> = <Self::Parameters<
9028                'a,
9029            > as alloy_sol_types::SolType>::Token<'a>;
9030            type Return = setstateHistoryRetentionPeriodReturn;
9031            type ReturnTuple<'a> = ();
9032            type ReturnToken<'a> = <Self::ReturnTuple<
9033                'a,
9034            > as alloy_sol_types::SolType>::Token<'a>;
9035            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
9036            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
9037            #[inline]
9038            fn new<'a>(
9039                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9040            ) -> Self {
9041                tuple.into()
9042            }
9043            #[inline]
9044            fn tokenize(&self) -> Self::Token<'_> {
9045                (
9046                    <alloy::sol_types::sol_data::Uint<
9047                        32,
9048                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
9049                )
9050            }
9051            #[inline]
9052            fn abi_decode_returns(
9053                data: &[u8],
9054                validate: bool,
9055            ) -> alloy_sol_types::Result<Self::Return> {
9056                <Self::ReturnTuple<
9057                    '_,
9058                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9059                    .map(Into::into)
9060            }
9061        }
9062    };
9063    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9064    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
9065```solidity
9066function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
9067```*/
9068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9069    #[derive(Clone)]
9070    pub struct stateHistoryCommitmentsCall {
9071        #[allow(missing_docs)]
9072        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9073    }
9074    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9075    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
9076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9077    #[derive(Clone)]
9078    pub struct stateHistoryCommitmentsReturn {
9079        #[allow(missing_docs)]
9080        pub l1BlockHeight: u64,
9081        #[allow(missing_docs)]
9082        pub l1BlockTimestamp: u64,
9083        #[allow(missing_docs)]
9084        pub hotShotBlockHeight: u64,
9085        #[allow(missing_docs)]
9086        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9087    }
9088    #[allow(
9089        non_camel_case_types,
9090        non_snake_case,
9091        clippy::pub_underscore_fields,
9092        clippy::style
9093    )]
9094    const _: () = {
9095        use alloy::sol_types as alloy_sol_types;
9096        {
9097            #[doc(hidden)]
9098            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9099            #[doc(hidden)]
9100            type UnderlyingRustTuple<'a> = (
9101                alloy::sol_types::private::primitives::aliases::U256,
9102            );
9103            #[cfg(test)]
9104            #[allow(dead_code, unreachable_patterns)]
9105            fn _type_assertion(
9106                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9107            ) {
9108                match _t {
9109                    alloy_sol_types::private::AssertTypeEq::<
9110                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9111                    >(_) => {}
9112                }
9113            }
9114            #[automatically_derived]
9115            #[doc(hidden)]
9116            impl ::core::convert::From<stateHistoryCommitmentsCall>
9117            for UnderlyingRustTuple<'_> {
9118                fn from(value: stateHistoryCommitmentsCall) -> Self {
9119                    (value._0,)
9120                }
9121            }
9122            #[automatically_derived]
9123            #[doc(hidden)]
9124            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9125            for stateHistoryCommitmentsCall {
9126                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9127                    Self { _0: tuple.0 }
9128                }
9129            }
9130        }
9131        {
9132            #[doc(hidden)]
9133            type UnderlyingSolTuple<'a> = (
9134                alloy::sol_types::sol_data::Uint<64>,
9135                alloy::sol_types::sol_data::Uint<64>,
9136                alloy::sol_types::sol_data::Uint<64>,
9137                BN254::ScalarField,
9138            );
9139            #[doc(hidden)]
9140            type UnderlyingRustTuple<'a> = (
9141                u64,
9142                u64,
9143                u64,
9144                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9145            );
9146            #[cfg(test)]
9147            #[allow(dead_code, unreachable_patterns)]
9148            fn _type_assertion(
9149                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9150            ) {
9151                match _t {
9152                    alloy_sol_types::private::AssertTypeEq::<
9153                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9154                    >(_) => {}
9155                }
9156            }
9157            #[automatically_derived]
9158            #[doc(hidden)]
9159            impl ::core::convert::From<stateHistoryCommitmentsReturn>
9160            for UnderlyingRustTuple<'_> {
9161                fn from(value: stateHistoryCommitmentsReturn) -> Self {
9162                    (
9163                        value.l1BlockHeight,
9164                        value.l1BlockTimestamp,
9165                        value.hotShotBlockHeight,
9166                        value.hotShotBlockCommRoot,
9167                    )
9168                }
9169            }
9170            #[automatically_derived]
9171            #[doc(hidden)]
9172            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9173            for stateHistoryCommitmentsReturn {
9174                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9175                    Self {
9176                        l1BlockHeight: tuple.0,
9177                        l1BlockTimestamp: tuple.1,
9178                        hotShotBlockHeight: tuple.2,
9179                        hotShotBlockCommRoot: tuple.3,
9180                    }
9181                }
9182            }
9183        }
9184        #[automatically_derived]
9185        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
9186            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9187            type Token<'a> = <Self::Parameters<
9188                'a,
9189            > as alloy_sol_types::SolType>::Token<'a>;
9190            type Return = stateHistoryCommitmentsReturn;
9191            type ReturnTuple<'a> = (
9192                alloy::sol_types::sol_data::Uint<64>,
9193                alloy::sol_types::sol_data::Uint<64>,
9194                alloy::sol_types::sol_data::Uint<64>,
9195                BN254::ScalarField,
9196            );
9197            type ReturnToken<'a> = <Self::ReturnTuple<
9198                'a,
9199            > as alloy_sol_types::SolType>::Token<'a>;
9200            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
9201            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
9202            #[inline]
9203            fn new<'a>(
9204                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9205            ) -> Self {
9206                tuple.into()
9207            }
9208            #[inline]
9209            fn tokenize(&self) -> Self::Token<'_> {
9210                (
9211                    <alloy::sol_types::sol_data::Uint<
9212                        256,
9213                    > as alloy_sol_types::SolType>::tokenize(&self._0),
9214                )
9215            }
9216            #[inline]
9217            fn abi_decode_returns(
9218                data: &[u8],
9219                validate: bool,
9220            ) -> alloy_sol_types::Result<Self::Return> {
9221                <Self::ReturnTuple<
9222                    '_,
9223                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9224                    .map(Into::into)
9225            }
9226        }
9227    };
9228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9229    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
9230```solidity
9231function stateHistoryFirstIndex() external view returns (uint64);
9232```*/
9233    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9234    #[derive(Clone)]
9235    pub struct stateHistoryFirstIndexCall {}
9236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9237    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
9238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9239    #[derive(Clone)]
9240    pub struct stateHistoryFirstIndexReturn {
9241        #[allow(missing_docs)]
9242        pub _0: u64,
9243    }
9244    #[allow(
9245        non_camel_case_types,
9246        non_snake_case,
9247        clippy::pub_underscore_fields,
9248        clippy::style
9249    )]
9250    const _: () = {
9251        use alloy::sol_types as alloy_sol_types;
9252        {
9253            #[doc(hidden)]
9254            type UnderlyingSolTuple<'a> = ();
9255            #[doc(hidden)]
9256            type UnderlyingRustTuple<'a> = ();
9257            #[cfg(test)]
9258            #[allow(dead_code, unreachable_patterns)]
9259            fn _type_assertion(
9260                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9261            ) {
9262                match _t {
9263                    alloy_sol_types::private::AssertTypeEq::<
9264                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9265                    >(_) => {}
9266                }
9267            }
9268            #[automatically_derived]
9269            #[doc(hidden)]
9270            impl ::core::convert::From<stateHistoryFirstIndexCall>
9271            for UnderlyingRustTuple<'_> {
9272                fn from(value: stateHistoryFirstIndexCall) -> Self {
9273                    ()
9274                }
9275            }
9276            #[automatically_derived]
9277            #[doc(hidden)]
9278            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9279            for stateHistoryFirstIndexCall {
9280                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9281                    Self {}
9282                }
9283            }
9284        }
9285        {
9286            #[doc(hidden)]
9287            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9288            #[doc(hidden)]
9289            type UnderlyingRustTuple<'a> = (u64,);
9290            #[cfg(test)]
9291            #[allow(dead_code, unreachable_patterns)]
9292            fn _type_assertion(
9293                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9294            ) {
9295                match _t {
9296                    alloy_sol_types::private::AssertTypeEq::<
9297                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9298                    >(_) => {}
9299                }
9300            }
9301            #[automatically_derived]
9302            #[doc(hidden)]
9303            impl ::core::convert::From<stateHistoryFirstIndexReturn>
9304            for UnderlyingRustTuple<'_> {
9305                fn from(value: stateHistoryFirstIndexReturn) -> Self {
9306                    (value._0,)
9307                }
9308            }
9309            #[automatically_derived]
9310            #[doc(hidden)]
9311            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9312            for stateHistoryFirstIndexReturn {
9313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9314                    Self { _0: tuple.0 }
9315                }
9316            }
9317        }
9318        #[automatically_derived]
9319        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
9320            type Parameters<'a> = ();
9321            type Token<'a> = <Self::Parameters<
9322                'a,
9323            > as alloy_sol_types::SolType>::Token<'a>;
9324            type Return = stateHistoryFirstIndexReturn;
9325            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9326            type ReturnToken<'a> = <Self::ReturnTuple<
9327                'a,
9328            > as alloy_sol_types::SolType>::Token<'a>;
9329            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
9330            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
9331            #[inline]
9332            fn new<'a>(
9333                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9334            ) -> Self {
9335                tuple.into()
9336            }
9337            #[inline]
9338            fn tokenize(&self) -> Self::Token<'_> {
9339                ()
9340            }
9341            #[inline]
9342            fn abi_decode_returns(
9343                data: &[u8],
9344                validate: bool,
9345            ) -> alloy_sol_types::Result<Self::Return> {
9346                <Self::ReturnTuple<
9347                    '_,
9348                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9349                    .map(Into::into)
9350            }
9351        }
9352    };
9353    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9354    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
9355```solidity
9356function stateHistoryRetentionPeriod() external view returns (uint32);
9357```*/
9358    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9359    #[derive(Clone)]
9360    pub struct stateHistoryRetentionPeriodCall {}
9361    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9362    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
9363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9364    #[derive(Clone)]
9365    pub struct stateHistoryRetentionPeriodReturn {
9366        #[allow(missing_docs)]
9367        pub _0: u32,
9368    }
9369    #[allow(
9370        non_camel_case_types,
9371        non_snake_case,
9372        clippy::pub_underscore_fields,
9373        clippy::style
9374    )]
9375    const _: () = {
9376        use alloy::sol_types as alloy_sol_types;
9377        {
9378            #[doc(hidden)]
9379            type UnderlyingSolTuple<'a> = ();
9380            #[doc(hidden)]
9381            type UnderlyingRustTuple<'a> = ();
9382            #[cfg(test)]
9383            #[allow(dead_code, unreachable_patterns)]
9384            fn _type_assertion(
9385                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9386            ) {
9387                match _t {
9388                    alloy_sol_types::private::AssertTypeEq::<
9389                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9390                    >(_) => {}
9391                }
9392            }
9393            #[automatically_derived]
9394            #[doc(hidden)]
9395            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
9396            for UnderlyingRustTuple<'_> {
9397                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
9398                    ()
9399                }
9400            }
9401            #[automatically_derived]
9402            #[doc(hidden)]
9403            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9404            for stateHistoryRetentionPeriodCall {
9405                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9406                    Self {}
9407                }
9408            }
9409        }
9410        {
9411            #[doc(hidden)]
9412            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9413            #[doc(hidden)]
9414            type UnderlyingRustTuple<'a> = (u32,);
9415            #[cfg(test)]
9416            #[allow(dead_code, unreachable_patterns)]
9417            fn _type_assertion(
9418                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9419            ) {
9420                match _t {
9421                    alloy_sol_types::private::AssertTypeEq::<
9422                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9423                    >(_) => {}
9424                }
9425            }
9426            #[automatically_derived]
9427            #[doc(hidden)]
9428            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
9429            for UnderlyingRustTuple<'_> {
9430                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
9431                    (value._0,)
9432                }
9433            }
9434            #[automatically_derived]
9435            #[doc(hidden)]
9436            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9437            for stateHistoryRetentionPeriodReturn {
9438                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9439                    Self { _0: tuple.0 }
9440                }
9441            }
9442        }
9443        #[automatically_derived]
9444        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
9445            type Parameters<'a> = ();
9446            type Token<'a> = <Self::Parameters<
9447                'a,
9448            > as alloy_sol_types::SolType>::Token<'a>;
9449            type Return = stateHistoryRetentionPeriodReturn;
9450            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9451            type ReturnToken<'a> = <Self::ReturnTuple<
9452                'a,
9453            > as alloy_sol_types::SolType>::Token<'a>;
9454            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
9455            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
9456            #[inline]
9457            fn new<'a>(
9458                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9459            ) -> Self {
9460                tuple.into()
9461            }
9462            #[inline]
9463            fn tokenize(&self) -> Self::Token<'_> {
9464                ()
9465            }
9466            #[inline]
9467            fn abi_decode_returns(
9468                data: &[u8],
9469                validate: bool,
9470            ) -> alloy_sol_types::Result<Self::Return> {
9471                <Self::ReturnTuple<
9472                    '_,
9473                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9474                    .map(Into::into)
9475            }
9476        }
9477    };
9478    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9479    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
9480```solidity
9481function transferOwnership(address newOwner) external;
9482```*/
9483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9484    #[derive(Clone)]
9485    pub struct transferOwnershipCall {
9486        #[allow(missing_docs)]
9487        pub newOwner: alloy::sol_types::private::Address,
9488    }
9489    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
9490    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9491    #[derive(Clone)]
9492    pub struct transferOwnershipReturn {}
9493    #[allow(
9494        non_camel_case_types,
9495        non_snake_case,
9496        clippy::pub_underscore_fields,
9497        clippy::style
9498    )]
9499    const _: () = {
9500        use alloy::sol_types as alloy_sol_types;
9501        {
9502            #[doc(hidden)]
9503            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9504            #[doc(hidden)]
9505            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9506            #[cfg(test)]
9507            #[allow(dead_code, unreachable_patterns)]
9508            fn _type_assertion(
9509                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9510            ) {
9511                match _t {
9512                    alloy_sol_types::private::AssertTypeEq::<
9513                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9514                    >(_) => {}
9515                }
9516            }
9517            #[automatically_derived]
9518            #[doc(hidden)]
9519            impl ::core::convert::From<transferOwnershipCall>
9520            for UnderlyingRustTuple<'_> {
9521                fn from(value: transferOwnershipCall) -> Self {
9522                    (value.newOwner,)
9523                }
9524            }
9525            #[automatically_derived]
9526            #[doc(hidden)]
9527            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9528            for transferOwnershipCall {
9529                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9530                    Self { newOwner: tuple.0 }
9531                }
9532            }
9533        }
9534        {
9535            #[doc(hidden)]
9536            type UnderlyingSolTuple<'a> = ();
9537            #[doc(hidden)]
9538            type UnderlyingRustTuple<'a> = ();
9539            #[cfg(test)]
9540            #[allow(dead_code, unreachable_patterns)]
9541            fn _type_assertion(
9542                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9543            ) {
9544                match _t {
9545                    alloy_sol_types::private::AssertTypeEq::<
9546                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9547                    >(_) => {}
9548                }
9549            }
9550            #[automatically_derived]
9551            #[doc(hidden)]
9552            impl ::core::convert::From<transferOwnershipReturn>
9553            for UnderlyingRustTuple<'_> {
9554                fn from(value: transferOwnershipReturn) -> Self {
9555                    ()
9556                }
9557            }
9558            #[automatically_derived]
9559            #[doc(hidden)]
9560            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9561            for transferOwnershipReturn {
9562                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9563                    Self {}
9564                }
9565            }
9566        }
9567        #[automatically_derived]
9568        impl alloy_sol_types::SolCall for transferOwnershipCall {
9569            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9570            type Token<'a> = <Self::Parameters<
9571                'a,
9572            > as alloy_sol_types::SolType>::Token<'a>;
9573            type Return = transferOwnershipReturn;
9574            type ReturnTuple<'a> = ();
9575            type ReturnToken<'a> = <Self::ReturnTuple<
9576                'a,
9577            > as alloy_sol_types::SolType>::Token<'a>;
9578            const SIGNATURE: &'static str = "transferOwnership(address)";
9579            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
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                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9590                        &self.newOwner,
9591                    ),
9592                )
9593            }
9594            #[inline]
9595            fn abi_decode_returns(
9596                data: &[u8],
9597                validate: bool,
9598            ) -> alloy_sol_types::Result<Self::Return> {
9599                <Self::ReturnTuple<
9600                    '_,
9601                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9602                    .map(Into::into)
9603            }
9604        }
9605    };
9606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9607    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
9608```solidity
9609function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
9610```*/
9611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9612    #[derive(Clone)]
9613    pub struct upgradeToAndCallCall {
9614        #[allow(missing_docs)]
9615        pub newImplementation: alloy::sol_types::private::Address,
9616        #[allow(missing_docs)]
9617        pub data: alloy::sol_types::private::Bytes,
9618    }
9619    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
9620    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9621    #[derive(Clone)]
9622    pub struct upgradeToAndCallReturn {}
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                alloy::sol_types::sol_data::Address,
9635                alloy::sol_types::sol_data::Bytes,
9636            );
9637            #[doc(hidden)]
9638            type UnderlyingRustTuple<'a> = (
9639                alloy::sol_types::private::Address,
9640                alloy::sol_types::private::Bytes,
9641            );
9642            #[cfg(test)]
9643            #[allow(dead_code, unreachable_patterns)]
9644            fn _type_assertion(
9645                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9646            ) {
9647                match _t {
9648                    alloy_sol_types::private::AssertTypeEq::<
9649                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9650                    >(_) => {}
9651                }
9652            }
9653            #[automatically_derived]
9654            #[doc(hidden)]
9655            impl ::core::convert::From<upgradeToAndCallCall>
9656            for UnderlyingRustTuple<'_> {
9657                fn from(value: upgradeToAndCallCall) -> Self {
9658                    (value.newImplementation, value.data)
9659                }
9660            }
9661            #[automatically_derived]
9662            #[doc(hidden)]
9663            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9664            for upgradeToAndCallCall {
9665                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9666                    Self {
9667                        newImplementation: tuple.0,
9668                        data: tuple.1,
9669                    }
9670                }
9671            }
9672        }
9673        {
9674            #[doc(hidden)]
9675            type UnderlyingSolTuple<'a> = ();
9676            #[doc(hidden)]
9677            type UnderlyingRustTuple<'a> = ();
9678            #[cfg(test)]
9679            #[allow(dead_code, unreachable_patterns)]
9680            fn _type_assertion(
9681                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9682            ) {
9683                match _t {
9684                    alloy_sol_types::private::AssertTypeEq::<
9685                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9686                    >(_) => {}
9687                }
9688            }
9689            #[automatically_derived]
9690            #[doc(hidden)]
9691            impl ::core::convert::From<upgradeToAndCallReturn>
9692            for UnderlyingRustTuple<'_> {
9693                fn from(value: upgradeToAndCallReturn) -> Self {
9694                    ()
9695                }
9696            }
9697            #[automatically_derived]
9698            #[doc(hidden)]
9699            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9700            for upgradeToAndCallReturn {
9701                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9702                    Self {}
9703                }
9704            }
9705        }
9706        #[automatically_derived]
9707        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
9708            type Parameters<'a> = (
9709                alloy::sol_types::sol_data::Address,
9710                alloy::sol_types::sol_data::Bytes,
9711            );
9712            type Token<'a> = <Self::Parameters<
9713                'a,
9714            > as alloy_sol_types::SolType>::Token<'a>;
9715            type Return = upgradeToAndCallReturn;
9716            type ReturnTuple<'a> = ();
9717            type ReturnToken<'a> = <Self::ReturnTuple<
9718                'a,
9719            > as alloy_sol_types::SolType>::Token<'a>;
9720            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
9721            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
9722            #[inline]
9723            fn new<'a>(
9724                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9725            ) -> Self {
9726                tuple.into()
9727            }
9728            #[inline]
9729            fn tokenize(&self) -> Self::Token<'_> {
9730                (
9731                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9732                        &self.newImplementation,
9733                    ),
9734                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9735                        &self.data,
9736                    ),
9737                )
9738            }
9739            #[inline]
9740            fn abi_decode_returns(
9741                data: &[u8],
9742                validate: bool,
9743            ) -> alloy_sol_types::Result<Self::Return> {
9744                <Self::ReturnTuple<
9745                    '_,
9746                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9747                    .map(Into::into)
9748            }
9749        }
9750    };
9751    ///Container for all the [`LightClient`](self) function calls.
9752    #[derive()]
9753    pub enum LightClientCalls {
9754        #[allow(missing_docs)]
9755        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
9756        #[allow(missing_docs)]
9757        _getVk(_getVkCall),
9758        #[allow(missing_docs)]
9759        currentBlockNumber(currentBlockNumberCall),
9760        #[allow(missing_docs)]
9761        disablePermissionedProverMode(disablePermissionedProverModeCall),
9762        #[allow(missing_docs)]
9763        finalizedState(finalizedStateCall),
9764        #[allow(missing_docs)]
9765        genesisStakeTableState(genesisStakeTableStateCall),
9766        #[allow(missing_docs)]
9767        genesisState(genesisStateCall),
9768        #[allow(missing_docs)]
9769        getHotShotCommitment(getHotShotCommitmentCall),
9770        #[allow(missing_docs)]
9771        getStateHistoryCount(getStateHistoryCountCall),
9772        #[allow(missing_docs)]
9773        getVersion(getVersionCall),
9774        #[allow(missing_docs)]
9775        initialize(initializeCall),
9776        #[allow(missing_docs)]
9777        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
9778        #[allow(missing_docs)]
9779        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
9780        #[allow(missing_docs)]
9781        newFinalizedState(newFinalizedStateCall),
9782        #[allow(missing_docs)]
9783        owner(ownerCall),
9784        #[allow(missing_docs)]
9785        permissionedProver(permissionedProverCall),
9786        #[allow(missing_docs)]
9787        proxiableUUID(proxiableUUIDCall),
9788        #[allow(missing_docs)]
9789        renounceOwnership(renounceOwnershipCall),
9790        #[allow(missing_docs)]
9791        setPermissionedProver(setPermissionedProverCall),
9792        #[allow(missing_docs)]
9793        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
9794        #[allow(missing_docs)]
9795        stateHistoryCommitments(stateHistoryCommitmentsCall),
9796        #[allow(missing_docs)]
9797        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
9798        #[allow(missing_docs)]
9799        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
9800        #[allow(missing_docs)]
9801        transferOwnership(transferOwnershipCall),
9802        #[allow(missing_docs)]
9803        upgradeToAndCall(upgradeToAndCallCall),
9804    }
9805    #[automatically_derived]
9806    impl LightClientCalls {
9807        /// All the selectors of this enum.
9808        ///
9809        /// Note that the selectors might not be in the same order as the variants.
9810        /// No guarantees are made about the order of the selectors.
9811        ///
9812        /// Prefer using `SolInterface` methods instead.
9813        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9814            [1u8, 63u8, 165u8, 252u8],
9815            [2u8, 181u8, 146u8, 243u8],
9816            [13u8, 142u8, 110u8, 44u8],
9817            [18u8, 23u8, 60u8, 44u8],
9818            [32u8, 99u8, 212u8, 247u8],
9819            [47u8, 121u8, 136u8, 157u8],
9820            [49u8, 61u8, 247u8, 177u8],
9821            [55u8, 142u8, 194u8, 59u8],
9822            [66u8, 109u8, 49u8, 148u8],
9823            [79u8, 30u8, 242u8, 134u8],
9824            [82u8, 209u8, 144u8, 45u8],
9825            [105u8, 204u8, 106u8, 4u8],
9826            [113u8, 80u8, 24u8, 166u8],
9827            [130u8, 110u8, 65u8, 252u8],
9828            [133u8, 132u8, 210u8, 63u8],
9829            [141u8, 165u8, 203u8, 91u8],
9830            [150u8, 193u8, 202u8, 97u8],
9831            [155u8, 170u8, 60u8, 201u8],
9832            [159u8, 219u8, 84u8, 167u8],
9833            [173u8, 60u8, 177u8, 204u8],
9834            [194u8, 59u8, 158u8, 158u8],
9835            [210u8, 77u8, 147u8, 61u8],
9836            [224u8, 48u8, 51u8, 1u8],
9837            [242u8, 253u8, 227u8, 139u8],
9838            [249u8, 229u8, 13u8, 25u8],
9839        ];
9840    }
9841    #[automatically_derived]
9842    impl alloy_sol_types::SolInterface for LightClientCalls {
9843        const NAME: &'static str = "LightClientCalls";
9844        const MIN_DATA_LENGTH: usize = 0usize;
9845        const COUNT: usize = 25usize;
9846        #[inline]
9847        fn selector(&self) -> [u8; 4] {
9848            match self {
9849                Self::UPGRADE_INTERFACE_VERSION(_) => {
9850                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
9851                }
9852                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
9853                Self::currentBlockNumber(_) => {
9854                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9855                }
9856                Self::disablePermissionedProverMode(_) => {
9857                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
9858                }
9859                Self::finalizedState(_) => {
9860                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9861                }
9862                Self::genesisStakeTableState(_) => {
9863                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
9864                }
9865                Self::genesisState(_) => {
9866                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
9867                }
9868                Self::getHotShotCommitment(_) => {
9869                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
9870                }
9871                Self::getStateHistoryCount(_) => {
9872                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
9873                }
9874                Self::getVersion(_) => {
9875                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
9876                }
9877                Self::initialize(_) => {
9878                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
9879                }
9880                Self::isPermissionedProverEnabled(_) => {
9881                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
9882                }
9883                Self::lagOverEscapeHatchThreshold(_) => {
9884                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
9885                }
9886                Self::newFinalizedState(_) => {
9887                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9888                }
9889                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9890                Self::permissionedProver(_) => {
9891                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
9892                }
9893                Self::proxiableUUID(_) => {
9894                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
9895                }
9896                Self::renounceOwnership(_) => {
9897                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9898                }
9899                Self::setPermissionedProver(_) => {
9900                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
9901                }
9902                Self::setstateHistoryRetentionPeriod(_) => {
9903                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9904                }
9905                Self::stateHistoryCommitments(_) => {
9906                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
9907                }
9908                Self::stateHistoryFirstIndex(_) => {
9909                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
9910                }
9911                Self::stateHistoryRetentionPeriod(_) => {
9912                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9913                }
9914                Self::transferOwnership(_) => {
9915                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9916                }
9917                Self::upgradeToAndCall(_) => {
9918                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
9919                }
9920            }
9921        }
9922        #[inline]
9923        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9924            Self::SELECTORS.get(i).copied()
9925        }
9926        #[inline]
9927        fn valid_selector(selector: [u8; 4]) -> bool {
9928            Self::SELECTORS.binary_search(&selector).is_ok()
9929        }
9930        #[inline]
9931        #[allow(non_snake_case)]
9932        fn abi_decode_raw(
9933            selector: [u8; 4],
9934            data: &[u8],
9935            validate: bool,
9936        ) -> alloy_sol_types::Result<Self> {
9937            static DECODE_SHIMS: &[fn(
9938                &[u8],
9939                bool,
9940            ) -> alloy_sol_types::Result<LightClientCalls>] = &[
9941                {
9942                    fn setPermissionedProver(
9943                        data: &[u8],
9944                        validate: bool,
9945                    ) -> alloy_sol_types::Result<LightClientCalls> {
9946                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
9947                                data,
9948                                validate,
9949                            )
9950                            .map(LightClientCalls::setPermissionedProver)
9951                    }
9952                    setPermissionedProver
9953                },
9954                {
9955                    fn stateHistoryCommitments(
9956                        data: &[u8],
9957                        validate: bool,
9958                    ) -> alloy_sol_types::Result<LightClientCalls> {
9959                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9960                                data,
9961                                validate,
9962                            )
9963                            .map(LightClientCalls::stateHistoryCommitments)
9964                    }
9965                    stateHistoryCommitments
9966                },
9967                {
9968                    fn getVersion(
9969                        data: &[u8],
9970                        validate: bool,
9971                    ) -> alloy_sol_types::Result<LightClientCalls> {
9972                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
9973                                data,
9974                                validate,
9975                            )
9976                            .map(LightClientCalls::getVersion)
9977                    }
9978                    getVersion
9979                },
9980                {
9981                    fn _getVk(
9982                        data: &[u8],
9983                        validate: bool,
9984                    ) -> alloy_sol_types::Result<LightClientCalls> {
9985                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(
9986                                data,
9987                                validate,
9988                            )
9989                            .map(LightClientCalls::_getVk)
9990                    }
9991                    _getVk
9992                },
9993                {
9994                    fn newFinalizedState(
9995                        data: &[u8],
9996                        validate: bool,
9997                    ) -> alloy_sol_types::Result<LightClientCalls> {
9998                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9999                                data,
10000                                validate,
10001                            )
10002                            .map(LightClientCalls::newFinalizedState)
10003                    }
10004                    newFinalizedState
10005                },
10006                {
10007                    fn stateHistoryFirstIndex(
10008                        data: &[u8],
10009                        validate: bool,
10010                    ) -> alloy_sol_types::Result<LightClientCalls> {
10011                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10012                                data,
10013                                validate,
10014                            )
10015                            .map(LightClientCalls::stateHistoryFirstIndex)
10016                    }
10017                    stateHistoryFirstIndex
10018                },
10019                {
10020                    fn permissionedProver(
10021                        data: &[u8],
10022                        validate: bool,
10023                    ) -> alloy_sol_types::Result<LightClientCalls> {
10024                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10025                                data,
10026                                validate,
10027                            )
10028                            .map(LightClientCalls::permissionedProver)
10029                    }
10030                    permissionedProver
10031                },
10032                {
10033                    fn currentBlockNumber(
10034                        data: &[u8],
10035                        validate: bool,
10036                    ) -> alloy_sol_types::Result<LightClientCalls> {
10037                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
10038                                data,
10039                                validate,
10040                            )
10041                            .map(LightClientCalls::currentBlockNumber)
10042                    }
10043                    currentBlockNumber
10044                },
10045                {
10046                    fn genesisStakeTableState(
10047                        data: &[u8],
10048                        validate: bool,
10049                    ) -> alloy_sol_types::Result<LightClientCalls> {
10050                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10051                                data,
10052                                validate,
10053                            )
10054                            .map(LightClientCalls::genesisStakeTableState)
10055                    }
10056                    genesisStakeTableState
10057                },
10058                {
10059                    fn upgradeToAndCall(
10060                        data: &[u8],
10061                        validate: bool,
10062                    ) -> alloy_sol_types::Result<LightClientCalls> {
10063                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
10064                                data,
10065                                validate,
10066                            )
10067                            .map(LightClientCalls::upgradeToAndCall)
10068                    }
10069                    upgradeToAndCall
10070                },
10071                {
10072                    fn proxiableUUID(
10073                        data: &[u8],
10074                        validate: bool,
10075                    ) -> alloy_sol_types::Result<LightClientCalls> {
10076                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
10077                                data,
10078                                validate,
10079                            )
10080                            .map(LightClientCalls::proxiableUUID)
10081                    }
10082                    proxiableUUID
10083                },
10084                {
10085                    fn disablePermissionedProverMode(
10086                        data: &[u8],
10087                        validate: bool,
10088                    ) -> alloy_sol_types::Result<LightClientCalls> {
10089                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10090                                data,
10091                                validate,
10092                            )
10093                            .map(LightClientCalls::disablePermissionedProverMode)
10094                    }
10095                    disablePermissionedProverMode
10096                },
10097                {
10098                    fn renounceOwnership(
10099                        data: &[u8],
10100                        validate: bool,
10101                    ) -> alloy_sol_types::Result<LightClientCalls> {
10102                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10103                                data,
10104                                validate,
10105                            )
10106                            .map(LightClientCalls::renounceOwnership)
10107                    }
10108                    renounceOwnership
10109                },
10110                {
10111                    fn isPermissionedProverEnabled(
10112                        data: &[u8],
10113                        validate: bool,
10114                    ) -> alloy_sol_types::Result<LightClientCalls> {
10115                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
10116                                data,
10117                                validate,
10118                            )
10119                            .map(LightClientCalls::isPermissionedProverEnabled)
10120                    }
10121                    isPermissionedProverEnabled
10122                },
10123                {
10124                    fn getHotShotCommitment(
10125                        data: &[u8],
10126                        validate: bool,
10127                    ) -> alloy_sol_types::Result<LightClientCalls> {
10128                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
10129                                data,
10130                                validate,
10131                            )
10132                            .map(LightClientCalls::getHotShotCommitment)
10133                    }
10134                    getHotShotCommitment
10135                },
10136                {
10137                    fn owner(
10138                        data: &[u8],
10139                        validate: bool,
10140                    ) -> alloy_sol_types::Result<LightClientCalls> {
10141                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
10142                                data,
10143                                validate,
10144                            )
10145                            .map(LightClientCalls::owner)
10146                    }
10147                    owner
10148                },
10149                {
10150                    fn setstateHistoryRetentionPeriod(
10151                        data: &[u8],
10152                        validate: bool,
10153                    ) -> alloy_sol_types::Result<LightClientCalls> {
10154                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
10155                                data,
10156                                validate,
10157                            )
10158                            .map(LightClientCalls::setstateHistoryRetentionPeriod)
10159                    }
10160                    setstateHistoryRetentionPeriod
10161                },
10162                {
10163                    fn initialize(
10164                        data: &[u8],
10165                        validate: bool,
10166                    ) -> alloy_sol_types::Result<LightClientCalls> {
10167                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10168                                data,
10169                                validate,
10170                            )
10171                            .map(LightClientCalls::initialize)
10172                    }
10173                    initialize
10174                },
10175                {
10176                    fn finalizedState(
10177                        data: &[u8],
10178                        validate: bool,
10179                    ) -> alloy_sol_types::Result<LightClientCalls> {
10180                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10181                                data,
10182                                validate,
10183                            )
10184                            .map(LightClientCalls::finalizedState)
10185                    }
10186                    finalizedState
10187                },
10188                {
10189                    fn UPGRADE_INTERFACE_VERSION(
10190                        data: &[u8],
10191                        validate: bool,
10192                    ) -> alloy_sol_types::Result<LightClientCalls> {
10193                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
10194                                data,
10195                                validate,
10196                            )
10197                            .map(LightClientCalls::UPGRADE_INTERFACE_VERSION)
10198                    }
10199                    UPGRADE_INTERFACE_VERSION
10200                },
10201                {
10202                    fn stateHistoryRetentionPeriod(
10203                        data: &[u8],
10204                        validate: bool,
10205                    ) -> alloy_sol_types::Result<LightClientCalls> {
10206                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
10207                                data,
10208                                validate,
10209                            )
10210                            .map(LightClientCalls::stateHistoryRetentionPeriod)
10211                    }
10212                    stateHistoryRetentionPeriod
10213                },
10214                {
10215                    fn genesisState(
10216                        data: &[u8],
10217                        validate: bool,
10218                    ) -> alloy_sol_types::Result<LightClientCalls> {
10219                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10220                                data,
10221                                validate,
10222                            )
10223                            .map(LightClientCalls::genesisState)
10224                    }
10225                    genesisState
10226                },
10227                {
10228                    fn lagOverEscapeHatchThreshold(
10229                        data: &[u8],
10230                        validate: bool,
10231                    ) -> alloy_sol_types::Result<LightClientCalls> {
10232                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
10233                                data,
10234                                validate,
10235                            )
10236                            .map(LightClientCalls::lagOverEscapeHatchThreshold)
10237                    }
10238                    lagOverEscapeHatchThreshold
10239                },
10240                {
10241                    fn transferOwnership(
10242                        data: &[u8],
10243                        validate: bool,
10244                    ) -> alloy_sol_types::Result<LightClientCalls> {
10245                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10246                                data,
10247                                validate,
10248                            )
10249                            .map(LightClientCalls::transferOwnership)
10250                    }
10251                    transferOwnership
10252                },
10253                {
10254                    fn getStateHistoryCount(
10255                        data: &[u8],
10256                        validate: bool,
10257                    ) -> alloy_sol_types::Result<LightClientCalls> {
10258                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
10259                                data,
10260                                validate,
10261                            )
10262                            .map(LightClientCalls::getStateHistoryCount)
10263                    }
10264                    getStateHistoryCount
10265                },
10266            ];
10267            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10268                return Err(
10269                    alloy_sol_types::Error::unknown_selector(
10270                        <Self as alloy_sol_types::SolInterface>::NAME,
10271                        selector,
10272                    ),
10273                );
10274            };
10275            DECODE_SHIMS[idx](data, validate)
10276        }
10277        #[inline]
10278        fn abi_encoded_size(&self) -> usize {
10279            match self {
10280                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10281                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
10282                        inner,
10283                    )
10284                }
10285                Self::_getVk(inner) => {
10286                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10287                }
10288                Self::currentBlockNumber(inner) => {
10289                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
10290                        inner,
10291                    )
10292                }
10293                Self::disablePermissionedProverMode(inner) => {
10294                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
10295                        inner,
10296                    )
10297                }
10298                Self::finalizedState(inner) => {
10299                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10300                        inner,
10301                    )
10302                }
10303                Self::genesisStakeTableState(inner) => {
10304                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10305                        inner,
10306                    )
10307                }
10308                Self::genesisState(inner) => {
10309                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10310                        inner,
10311                    )
10312                }
10313                Self::getHotShotCommitment(inner) => {
10314                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
10315                        inner,
10316                    )
10317                }
10318                Self::getStateHistoryCount(inner) => {
10319                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
10320                        inner,
10321                    )
10322                }
10323                Self::getVersion(inner) => {
10324                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10325                }
10326                Self::initialize(inner) => {
10327                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10328                }
10329                Self::isPermissionedProverEnabled(inner) => {
10330                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
10331                        inner,
10332                    )
10333                }
10334                Self::lagOverEscapeHatchThreshold(inner) => {
10335                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
10336                        inner,
10337                    )
10338                }
10339                Self::newFinalizedState(inner) => {
10340                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10341                        inner,
10342                    )
10343                }
10344                Self::owner(inner) => {
10345                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10346                }
10347                Self::permissionedProver(inner) => {
10348                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
10349                        inner,
10350                    )
10351                }
10352                Self::proxiableUUID(inner) => {
10353                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
10354                        inner,
10355                    )
10356                }
10357                Self::renounceOwnership(inner) => {
10358                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10359                        inner,
10360                    )
10361                }
10362                Self::setPermissionedProver(inner) => {
10363                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
10364                        inner,
10365                    )
10366                }
10367                Self::setstateHistoryRetentionPeriod(inner) => {
10368                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10369                        inner,
10370                    )
10371                }
10372                Self::stateHistoryCommitments(inner) => {
10373                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10374                        inner,
10375                    )
10376                }
10377                Self::stateHistoryFirstIndex(inner) => {
10378                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10379                        inner,
10380                    )
10381                }
10382                Self::stateHistoryRetentionPeriod(inner) => {
10383                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10384                        inner,
10385                    )
10386                }
10387                Self::transferOwnership(inner) => {
10388                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10389                        inner,
10390                    )
10391                }
10392                Self::upgradeToAndCall(inner) => {
10393                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
10394                        inner,
10395                    )
10396                }
10397            }
10398        }
10399        #[inline]
10400        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10401            match self {
10402                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10403                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
10404                        inner,
10405                        out,
10406                    )
10407                }
10408                Self::_getVk(inner) => {
10409                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10410                }
10411                Self::currentBlockNumber(inner) => {
10412                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
10413                        inner,
10414                        out,
10415                    )
10416                }
10417                Self::disablePermissionedProverMode(inner) => {
10418                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10419                        inner,
10420                        out,
10421                    )
10422                }
10423                Self::finalizedState(inner) => {
10424                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10425                        inner,
10426                        out,
10427                    )
10428                }
10429                Self::genesisStakeTableState(inner) => {
10430                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10431                        inner,
10432                        out,
10433                    )
10434                }
10435                Self::genesisState(inner) => {
10436                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10437                        inner,
10438                        out,
10439                    )
10440                }
10441                Self::getHotShotCommitment(inner) => {
10442                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
10443                        inner,
10444                        out,
10445                    )
10446                }
10447                Self::getStateHistoryCount(inner) => {
10448                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
10449                        inner,
10450                        out,
10451                    )
10452                }
10453                Self::getVersion(inner) => {
10454                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
10455                        inner,
10456                        out,
10457                    )
10458                }
10459                Self::initialize(inner) => {
10460                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10461                        inner,
10462                        out,
10463                    )
10464                }
10465                Self::isPermissionedProverEnabled(inner) => {
10466                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
10467                        inner,
10468                        out,
10469                    )
10470                }
10471                Self::lagOverEscapeHatchThreshold(inner) => {
10472                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
10473                        inner,
10474                        out,
10475                    )
10476                }
10477                Self::newFinalizedState(inner) => {
10478                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10479                        inner,
10480                        out,
10481                    )
10482                }
10483                Self::owner(inner) => {
10484                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10485                }
10486                Self::permissionedProver(inner) => {
10487                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
10488                        inner,
10489                        out,
10490                    )
10491                }
10492                Self::proxiableUUID(inner) => {
10493                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
10494                        inner,
10495                        out,
10496                    )
10497                }
10498                Self::renounceOwnership(inner) => {
10499                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10500                        inner,
10501                        out,
10502                    )
10503                }
10504                Self::setPermissionedProver(inner) => {
10505                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
10506                        inner,
10507                        out,
10508                    )
10509                }
10510                Self::setstateHistoryRetentionPeriod(inner) => {
10511                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10512                        inner,
10513                        out,
10514                    )
10515                }
10516                Self::stateHistoryCommitments(inner) => {
10517                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10518                        inner,
10519                        out,
10520                    )
10521                }
10522                Self::stateHistoryFirstIndex(inner) => {
10523                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10524                        inner,
10525                        out,
10526                    )
10527                }
10528                Self::stateHistoryRetentionPeriod(inner) => {
10529                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10530                        inner,
10531                        out,
10532                    )
10533                }
10534                Self::transferOwnership(inner) => {
10535                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10536                        inner,
10537                        out,
10538                    )
10539                }
10540                Self::upgradeToAndCall(inner) => {
10541                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
10542                        inner,
10543                        out,
10544                    )
10545                }
10546            }
10547        }
10548    }
10549    ///Container for all the [`LightClient`](self) custom errors.
10550    #[derive(Debug, PartialEq, Eq, Hash)]
10551    pub enum LightClientErrors {
10552        #[allow(missing_docs)]
10553        AddressEmptyCode(AddressEmptyCode),
10554        #[allow(missing_docs)]
10555        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
10556        #[allow(missing_docs)]
10557        ERC1967NonPayable(ERC1967NonPayable),
10558        #[allow(missing_docs)]
10559        FailedInnerCall(FailedInnerCall),
10560        #[allow(missing_docs)]
10561        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
10562        #[allow(missing_docs)]
10563        InvalidAddress(InvalidAddress),
10564        #[allow(missing_docs)]
10565        InvalidArgs(InvalidArgs),
10566        #[allow(missing_docs)]
10567        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
10568        #[allow(missing_docs)]
10569        InvalidInitialization(InvalidInitialization),
10570        #[allow(missing_docs)]
10571        InvalidMaxStateHistory(InvalidMaxStateHistory),
10572        #[allow(missing_docs)]
10573        InvalidProof(InvalidProof),
10574        #[allow(missing_docs)]
10575        NoChangeRequired(NoChangeRequired),
10576        #[allow(missing_docs)]
10577        NotInitializing(NotInitializing),
10578        #[allow(missing_docs)]
10579        OutdatedState(OutdatedState),
10580        #[allow(missing_docs)]
10581        OwnableInvalidOwner(OwnableInvalidOwner),
10582        #[allow(missing_docs)]
10583        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
10584        #[allow(missing_docs)]
10585        ProverNotPermissioned(ProverNotPermissioned),
10586        #[allow(missing_docs)]
10587        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
10588        #[allow(missing_docs)]
10589        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
10590        #[allow(missing_docs)]
10591        WrongStakeTableUsed(WrongStakeTableUsed),
10592    }
10593    #[automatically_derived]
10594    impl LightClientErrors {
10595        /// All the selectors of this enum.
10596        ///
10597        /// Note that the selectors might not be in the same order as the variants.
10598        /// No guarantees are made about the order of the selectors.
10599        ///
10600        /// Prefer using `SolInterface` methods instead.
10601        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10602            [5u8, 28u8, 70u8, 239u8],
10603            [9u8, 189u8, 227u8, 57u8],
10604            [17u8, 140u8, 218u8, 167u8],
10605            [20u8, 37u8, 234u8, 66u8],
10606            [30u8, 79u8, 189u8, 247u8],
10607            [76u8, 156u8, 140u8, 227u8],
10608            [81u8, 97u8, 128u8, 137u8],
10609            [97u8, 90u8, 146u8, 100u8],
10610            [153u8, 150u8, 179u8, 21u8],
10611            [161u8, 186u8, 7u8, 238u8],
10612            [163u8, 166u8, 71u8, 128u8],
10613            [168u8, 99u8, 174u8, 201u8],
10614            [170u8, 29u8, 73u8, 164u8],
10615            [176u8, 180u8, 56u8, 119u8],
10616            [179u8, 152u8, 151u8, 159u8],
10617            [215u8, 230u8, 188u8, 248u8],
10618            [224u8, 124u8, 141u8, 186u8],
10619            [230u8, 196u8, 36u8, 123u8],
10620            [244u8, 160u8, 238u8, 224u8],
10621            [249u8, 46u8, 232u8, 169u8],
10622        ];
10623    }
10624    #[automatically_derived]
10625    impl alloy_sol_types::SolInterface for LightClientErrors {
10626        const NAME: &'static str = "LightClientErrors";
10627        const MIN_DATA_LENGTH: usize = 0usize;
10628        const COUNT: usize = 20usize;
10629        #[inline]
10630        fn selector(&self) -> [u8; 4] {
10631            match self {
10632                Self::AddressEmptyCode(_) => {
10633                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
10634                }
10635                Self::ERC1967InvalidImplementation(_) => {
10636                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
10637                }
10638                Self::ERC1967NonPayable(_) => {
10639                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
10640                }
10641                Self::FailedInnerCall(_) => {
10642                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
10643                }
10644                Self::InsufficientSnapshotHistory(_) => {
10645                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
10646                }
10647                Self::InvalidAddress(_) => {
10648                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
10649                }
10650                Self::InvalidArgs(_) => {
10651                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
10652                }
10653                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
10654                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
10655                }
10656                Self::InvalidInitialization(_) => {
10657                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
10658                }
10659                Self::InvalidMaxStateHistory(_) => {
10660                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
10661                }
10662                Self::InvalidProof(_) => {
10663                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
10664                }
10665                Self::NoChangeRequired(_) => {
10666                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
10667                }
10668                Self::NotInitializing(_) => {
10669                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
10670                }
10671                Self::OutdatedState(_) => {
10672                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
10673                }
10674                Self::OwnableInvalidOwner(_) => {
10675                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
10676                }
10677                Self::OwnableUnauthorizedAccount(_) => {
10678                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
10679                }
10680                Self::ProverNotPermissioned(_) => {
10681                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
10682                }
10683                Self::UUPSUnauthorizedCallContext(_) => {
10684                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
10685                }
10686                Self::UUPSUnsupportedProxiableUUID(_) => {
10687                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
10688                }
10689                Self::WrongStakeTableUsed(_) => {
10690                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
10691                }
10692            }
10693        }
10694        #[inline]
10695        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10696            Self::SELECTORS.get(i).copied()
10697        }
10698        #[inline]
10699        fn valid_selector(selector: [u8; 4]) -> bool {
10700            Self::SELECTORS.binary_search(&selector).is_ok()
10701        }
10702        #[inline]
10703        #[allow(non_snake_case)]
10704        fn abi_decode_raw(
10705            selector: [u8; 4],
10706            data: &[u8],
10707            validate: bool,
10708        ) -> alloy_sol_types::Result<Self> {
10709            static DECODE_SHIMS: &[fn(
10710                &[u8],
10711                bool,
10712            ) -> alloy_sol_types::Result<LightClientErrors>] = &[
10713                {
10714                    fn OutdatedState(
10715                        data: &[u8],
10716                        validate: bool,
10717                    ) -> alloy_sol_types::Result<LightClientErrors> {
10718                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
10719                                data,
10720                                validate,
10721                            )
10722                            .map(LightClientErrors::OutdatedState)
10723                    }
10724                    OutdatedState
10725                },
10726                {
10727                    fn InvalidProof(
10728                        data: &[u8],
10729                        validate: bool,
10730                    ) -> alloy_sol_types::Result<LightClientErrors> {
10731                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(
10732                                data,
10733                                validate,
10734                            )
10735                            .map(LightClientErrors::InvalidProof)
10736                    }
10737                    InvalidProof
10738                },
10739                {
10740                    fn OwnableUnauthorizedAccount(
10741                        data: &[u8],
10742                        validate: bool,
10743                    ) -> alloy_sol_types::Result<LightClientErrors> {
10744                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
10745                                data,
10746                                validate,
10747                            )
10748                            .map(LightClientErrors::OwnableUnauthorizedAccount)
10749                    }
10750                    OwnableUnauthorizedAccount
10751                },
10752                {
10753                    fn FailedInnerCall(
10754                        data: &[u8],
10755                        validate: bool,
10756                    ) -> alloy_sol_types::Result<LightClientErrors> {
10757                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
10758                                data,
10759                                validate,
10760                            )
10761                            .map(LightClientErrors::FailedInnerCall)
10762                    }
10763                    FailedInnerCall
10764                },
10765                {
10766                    fn OwnableInvalidOwner(
10767                        data: &[u8],
10768                        validate: bool,
10769                    ) -> alloy_sol_types::Result<LightClientErrors> {
10770                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
10771                                data,
10772                                validate,
10773                            )
10774                            .map(LightClientErrors::OwnableInvalidOwner)
10775                    }
10776                    OwnableInvalidOwner
10777                },
10778                {
10779                    fn ERC1967InvalidImplementation(
10780                        data: &[u8],
10781                        validate: bool,
10782                    ) -> alloy_sol_types::Result<LightClientErrors> {
10783                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
10784                                data,
10785                                validate,
10786                            )
10787                            .map(LightClientErrors::ERC1967InvalidImplementation)
10788                    }
10789                    ERC1967InvalidImplementation
10790                },
10791                {
10792                    fn WrongStakeTableUsed(
10793                        data: &[u8],
10794                        validate: bool,
10795                    ) -> alloy_sol_types::Result<LightClientErrors> {
10796                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
10797                                data,
10798                                validate,
10799                            )
10800                            .map(LightClientErrors::WrongStakeTableUsed)
10801                    }
10802                    WrongStakeTableUsed
10803                },
10804                {
10805                    fn InvalidHotShotBlockForCommitmentCheck(
10806                        data: &[u8],
10807                        validate: bool,
10808                    ) -> alloy_sol_types::Result<LightClientErrors> {
10809                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
10810                                data,
10811                                validate,
10812                            )
10813                            .map(
10814                                LightClientErrors::InvalidHotShotBlockForCommitmentCheck,
10815                            )
10816                    }
10817                    InvalidHotShotBlockForCommitmentCheck
10818                },
10819                {
10820                    fn AddressEmptyCode(
10821                        data: &[u8],
10822                        validate: bool,
10823                    ) -> alloy_sol_types::Result<LightClientErrors> {
10824                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
10825                                data,
10826                                validate,
10827                            )
10828                            .map(LightClientErrors::AddressEmptyCode)
10829                    }
10830                    AddressEmptyCode
10831                },
10832                {
10833                    fn InvalidArgs(
10834                        data: &[u8],
10835                        validate: bool,
10836                    ) -> alloy_sol_types::Result<LightClientErrors> {
10837                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(
10838                                data,
10839                                validate,
10840                            )
10841                            .map(LightClientErrors::InvalidArgs)
10842                    }
10843                    InvalidArgs
10844                },
10845                {
10846                    fn ProverNotPermissioned(
10847                        data: &[u8],
10848                        validate: bool,
10849                    ) -> alloy_sol_types::Result<LightClientErrors> {
10850                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
10851                                data,
10852                                validate,
10853                            )
10854                            .map(LightClientErrors::ProverNotPermissioned)
10855                    }
10856                    ProverNotPermissioned
10857                },
10858                {
10859                    fn NoChangeRequired(
10860                        data: &[u8],
10861                        validate: bool,
10862                    ) -> alloy_sol_types::Result<LightClientErrors> {
10863                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
10864                                data,
10865                                validate,
10866                            )
10867                            .map(LightClientErrors::NoChangeRequired)
10868                    }
10869                    NoChangeRequired
10870                },
10871                {
10872                    fn UUPSUnsupportedProxiableUUID(
10873                        data: &[u8],
10874                        validate: bool,
10875                    ) -> alloy_sol_types::Result<LightClientErrors> {
10876                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
10877                                data,
10878                                validate,
10879                            )
10880                            .map(LightClientErrors::UUPSUnsupportedProxiableUUID)
10881                    }
10882                    UUPSUnsupportedProxiableUUID
10883                },
10884                {
10885                    fn InsufficientSnapshotHistory(
10886                        data: &[u8],
10887                        validate: bool,
10888                    ) -> alloy_sol_types::Result<LightClientErrors> {
10889                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
10890                                data,
10891                                validate,
10892                            )
10893                            .map(LightClientErrors::InsufficientSnapshotHistory)
10894                    }
10895                    InsufficientSnapshotHistory
10896                },
10897                {
10898                    fn ERC1967NonPayable(
10899                        data: &[u8],
10900                        validate: bool,
10901                    ) -> alloy_sol_types::Result<LightClientErrors> {
10902                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
10903                                data,
10904                                validate,
10905                            )
10906                            .map(LightClientErrors::ERC1967NonPayable)
10907                    }
10908                    ERC1967NonPayable
10909                },
10910                {
10911                    fn NotInitializing(
10912                        data: &[u8],
10913                        validate: bool,
10914                    ) -> alloy_sol_types::Result<LightClientErrors> {
10915                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
10916                                data,
10917                                validate,
10918                            )
10919                            .map(LightClientErrors::NotInitializing)
10920                    }
10921                    NotInitializing
10922                },
10923                {
10924                    fn UUPSUnauthorizedCallContext(
10925                        data: &[u8],
10926                        validate: bool,
10927                    ) -> alloy_sol_types::Result<LightClientErrors> {
10928                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
10929                                data,
10930                                validate,
10931                            )
10932                            .map(LightClientErrors::UUPSUnauthorizedCallContext)
10933                    }
10934                    UUPSUnauthorizedCallContext
10935                },
10936                {
10937                    fn InvalidAddress(
10938                        data: &[u8],
10939                        validate: bool,
10940                    ) -> alloy_sol_types::Result<LightClientErrors> {
10941                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
10942                                data,
10943                                validate,
10944                            )
10945                            .map(LightClientErrors::InvalidAddress)
10946                    }
10947                    InvalidAddress
10948                },
10949                {
10950                    fn InvalidMaxStateHistory(
10951                        data: &[u8],
10952                        validate: bool,
10953                    ) -> alloy_sol_types::Result<LightClientErrors> {
10954                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
10955                                data,
10956                                validate,
10957                            )
10958                            .map(LightClientErrors::InvalidMaxStateHistory)
10959                    }
10960                    InvalidMaxStateHistory
10961                },
10962                {
10963                    fn InvalidInitialization(
10964                        data: &[u8],
10965                        validate: bool,
10966                    ) -> alloy_sol_types::Result<LightClientErrors> {
10967                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
10968                                data,
10969                                validate,
10970                            )
10971                            .map(LightClientErrors::InvalidInitialization)
10972                    }
10973                    InvalidInitialization
10974                },
10975            ];
10976            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10977                return Err(
10978                    alloy_sol_types::Error::unknown_selector(
10979                        <Self as alloy_sol_types::SolInterface>::NAME,
10980                        selector,
10981                    ),
10982                );
10983            };
10984            DECODE_SHIMS[idx](data, validate)
10985        }
10986        #[inline]
10987        fn abi_encoded_size(&self) -> usize {
10988            match self {
10989                Self::AddressEmptyCode(inner) => {
10990                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
10991                        inner,
10992                    )
10993                }
10994                Self::ERC1967InvalidImplementation(inner) => {
10995                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
10996                        inner,
10997                    )
10998                }
10999                Self::ERC1967NonPayable(inner) => {
11000                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
11001                        inner,
11002                    )
11003                }
11004                Self::FailedInnerCall(inner) => {
11005                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
11006                        inner,
11007                    )
11008                }
11009                Self::InsufficientSnapshotHistory(inner) => {
11010                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
11011                        inner,
11012                    )
11013                }
11014                Self::InvalidAddress(inner) => {
11015                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
11016                        inner,
11017                    )
11018                }
11019                Self::InvalidArgs(inner) => {
11020                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
11021                }
11022                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
11023                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
11024                        inner,
11025                    )
11026                }
11027                Self::InvalidInitialization(inner) => {
11028                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
11029                        inner,
11030                    )
11031                }
11032                Self::InvalidMaxStateHistory(inner) => {
11033                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
11034                        inner,
11035                    )
11036                }
11037                Self::InvalidProof(inner) => {
11038                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
11039                }
11040                Self::NoChangeRequired(inner) => {
11041                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
11042                        inner,
11043                    )
11044                }
11045                Self::NotInitializing(inner) => {
11046                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
11047                        inner,
11048                    )
11049                }
11050                Self::OutdatedState(inner) => {
11051                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
11052                }
11053                Self::OwnableInvalidOwner(inner) => {
11054                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
11055                        inner,
11056                    )
11057                }
11058                Self::OwnableUnauthorizedAccount(inner) => {
11059                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
11060                        inner,
11061                    )
11062                }
11063                Self::ProverNotPermissioned(inner) => {
11064                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
11065                        inner,
11066                    )
11067                }
11068                Self::UUPSUnauthorizedCallContext(inner) => {
11069                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
11070                        inner,
11071                    )
11072                }
11073                Self::UUPSUnsupportedProxiableUUID(inner) => {
11074                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
11075                        inner,
11076                    )
11077                }
11078                Self::WrongStakeTableUsed(inner) => {
11079                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
11080                        inner,
11081                    )
11082                }
11083            }
11084        }
11085        #[inline]
11086        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11087            match self {
11088                Self::AddressEmptyCode(inner) => {
11089                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
11090                        inner,
11091                        out,
11092                    )
11093                }
11094                Self::ERC1967InvalidImplementation(inner) => {
11095                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
11096                        inner,
11097                        out,
11098                    )
11099                }
11100                Self::ERC1967NonPayable(inner) => {
11101                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
11102                        inner,
11103                        out,
11104                    )
11105                }
11106                Self::FailedInnerCall(inner) => {
11107                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
11108                        inner,
11109                        out,
11110                    )
11111                }
11112                Self::InsufficientSnapshotHistory(inner) => {
11113                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
11114                        inner,
11115                        out,
11116                    )
11117                }
11118                Self::InvalidAddress(inner) => {
11119                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
11120                        inner,
11121                        out,
11122                    )
11123                }
11124                Self::InvalidArgs(inner) => {
11125                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
11126                        inner,
11127                        out,
11128                    )
11129                }
11130                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
11131                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
11132                        inner,
11133                        out,
11134                    )
11135                }
11136                Self::InvalidInitialization(inner) => {
11137                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
11138                        inner,
11139                        out,
11140                    )
11141                }
11142                Self::InvalidMaxStateHistory(inner) => {
11143                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
11144                        inner,
11145                        out,
11146                    )
11147                }
11148                Self::InvalidProof(inner) => {
11149                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
11150                        inner,
11151                        out,
11152                    )
11153                }
11154                Self::NoChangeRequired(inner) => {
11155                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
11156                        inner,
11157                        out,
11158                    )
11159                }
11160                Self::NotInitializing(inner) => {
11161                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
11162                        inner,
11163                        out,
11164                    )
11165                }
11166                Self::OutdatedState(inner) => {
11167                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
11168                        inner,
11169                        out,
11170                    )
11171                }
11172                Self::OwnableInvalidOwner(inner) => {
11173                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
11174                        inner,
11175                        out,
11176                    )
11177                }
11178                Self::OwnableUnauthorizedAccount(inner) => {
11179                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
11180                        inner,
11181                        out,
11182                    )
11183                }
11184                Self::ProverNotPermissioned(inner) => {
11185                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
11186                        inner,
11187                        out,
11188                    )
11189                }
11190                Self::UUPSUnauthorizedCallContext(inner) => {
11191                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
11192                        inner,
11193                        out,
11194                    )
11195                }
11196                Self::UUPSUnsupportedProxiableUUID(inner) => {
11197                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
11198                        inner,
11199                        out,
11200                    )
11201                }
11202                Self::WrongStakeTableUsed(inner) => {
11203                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
11204                        inner,
11205                        out,
11206                    )
11207                }
11208            }
11209        }
11210    }
11211    ///Container for all the [`LightClient`](self) events.
11212    #[derive(Debug, PartialEq, Eq, Hash)]
11213    pub enum LightClientEvents {
11214        #[allow(missing_docs)]
11215        Initialized(Initialized),
11216        #[allow(missing_docs)]
11217        NewState(NewState),
11218        #[allow(missing_docs)]
11219        OwnershipTransferred(OwnershipTransferred),
11220        #[allow(missing_docs)]
11221        PermissionedProverNotRequired(PermissionedProverNotRequired),
11222        #[allow(missing_docs)]
11223        PermissionedProverRequired(PermissionedProverRequired),
11224        #[allow(missing_docs)]
11225        Upgrade(Upgrade),
11226        #[allow(missing_docs)]
11227        Upgraded(Upgraded),
11228    }
11229    #[automatically_derived]
11230    impl LightClientEvents {
11231        /// All the selectors of this enum.
11232        ///
11233        /// Note that the selectors might not be in the same order as the variants.
11234        /// No guarantees are made about the order of the selectors.
11235        ///
11236        /// Prefer using `SolInterface` methods instead.
11237        pub const SELECTORS: &'static [[u8; 32usize]] = &[
11238            [
11239                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
11240                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
11241                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
11242            ],
11243            [
11244                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
11245                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
11246                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
11247            ],
11248            [
11249                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
11250                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
11251                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
11252            ],
11253            [
11254                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
11255                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
11256                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
11257            ],
11258            [
11259                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
11260                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
11261                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
11262            ],
11263            [
11264                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
11265                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
11266                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
11267            ],
11268            [
11269                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
11270                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
11271                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
11272            ],
11273        ];
11274    }
11275    #[automatically_derived]
11276    impl alloy_sol_types::SolEventInterface for LightClientEvents {
11277        const NAME: &'static str = "LightClientEvents";
11278        const COUNT: usize = 7usize;
11279        fn decode_raw_log(
11280            topics: &[alloy_sol_types::Word],
11281            data: &[u8],
11282            validate: bool,
11283        ) -> alloy_sol_types::Result<Self> {
11284            match topics.first().copied() {
11285                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11286                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
11287                            topics,
11288                            data,
11289                            validate,
11290                        )
11291                        .map(Self::Initialized)
11292                }
11293                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11294                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(
11295                            topics,
11296                            data,
11297                            validate,
11298                        )
11299                        .map(Self::NewState)
11300                }
11301                Some(
11302                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11303                ) => {
11304                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
11305                            topics,
11306                            data,
11307                            validate,
11308                        )
11309                        .map(Self::OwnershipTransferred)
11310                }
11311                Some(
11312                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11313                ) => {
11314                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
11315                            topics,
11316                            data,
11317                            validate,
11318                        )
11319                        .map(Self::PermissionedProverNotRequired)
11320                }
11321                Some(
11322                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11323                ) => {
11324                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
11325                            topics,
11326                            data,
11327                            validate,
11328                        )
11329                        .map(Self::PermissionedProverRequired)
11330                }
11331                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11332                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(
11333                            topics,
11334                            data,
11335                            validate,
11336                        )
11337                        .map(Self::Upgrade)
11338                }
11339                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11340                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
11341                            topics,
11342                            data,
11343                            validate,
11344                        )
11345                        .map(Self::Upgraded)
11346                }
11347                _ => {
11348                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
11349                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
11350                        log: alloy_sol_types::private::Box::new(
11351                            alloy_sol_types::private::LogData::new_unchecked(
11352                                topics.to_vec(),
11353                                data.to_vec().into(),
11354                            ),
11355                        ),
11356                    })
11357                }
11358            }
11359        }
11360    }
11361    #[automatically_derived]
11362    impl alloy_sol_types::private::IntoLogData for LightClientEvents {
11363        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11364            match self {
11365                Self::Initialized(inner) => {
11366                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11367                }
11368                Self::NewState(inner) => {
11369                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11370                }
11371                Self::OwnershipTransferred(inner) => {
11372                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11373                }
11374                Self::PermissionedProverNotRequired(inner) => {
11375                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11376                }
11377                Self::PermissionedProverRequired(inner) => {
11378                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11379                }
11380                Self::Upgrade(inner) => {
11381                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11382                }
11383                Self::Upgraded(inner) => {
11384                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11385                }
11386            }
11387        }
11388        fn into_log_data(self) -> alloy_sol_types::private::LogData {
11389            match self {
11390                Self::Initialized(inner) => {
11391                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11392                }
11393                Self::NewState(inner) => {
11394                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11395                }
11396                Self::OwnershipTransferred(inner) => {
11397                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11398                }
11399                Self::PermissionedProverNotRequired(inner) => {
11400                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11401                }
11402                Self::PermissionedProverRequired(inner) => {
11403                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11404                }
11405                Self::Upgrade(inner) => {
11406                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11407                }
11408                Self::Upgraded(inner) => {
11409                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11410                }
11411            }
11412        }
11413    }
11414    use alloy::contract as alloy_contract;
11415    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
11416
11417See the [wrapper's documentation](`LightClientInstance`) for more details.*/
11418    #[inline]
11419    pub const fn new<
11420        T: alloy_contract::private::Transport + ::core::clone::Clone,
11421        P: alloy_contract::private::Provider<T, N>,
11422        N: alloy_contract::private::Network,
11423    >(
11424        address: alloy_sol_types::private::Address,
11425        provider: P,
11426    ) -> LightClientInstance<T, P, N> {
11427        LightClientInstance::<T, P, N>::new(address, provider)
11428    }
11429    /**Deploys this contract using the given `provider` and constructor arguments, if any.
11430
11431Returns a new instance of the contract, if the deployment was successful.
11432
11433For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11434    #[inline]
11435    pub fn deploy<
11436        T: alloy_contract::private::Transport + ::core::clone::Clone,
11437        P: alloy_contract::private::Provider<T, N>,
11438        N: alloy_contract::private::Network,
11439    >(
11440        provider: P,
11441    ) -> impl ::core::future::Future<
11442        Output = alloy_contract::Result<LightClientInstance<T, P, N>>,
11443    > {
11444        LightClientInstance::<T, P, N>::deploy(provider)
11445    }
11446    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11447and constructor arguments, if any.
11448
11449This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11450the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11451    #[inline]
11452    pub fn deploy_builder<
11453        T: alloy_contract::private::Transport + ::core::clone::Clone,
11454        P: alloy_contract::private::Provider<T, N>,
11455        N: alloy_contract::private::Network,
11456    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
11457        LightClientInstance::<T, P, N>::deploy_builder(provider)
11458    }
11459    /**A [`LightClient`](self) instance.
11460
11461Contains type-safe methods for interacting with an on-chain instance of the
11462[`LightClient`](self) contract located at a given `address`, using a given
11463provider `P`.
11464
11465If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
11466documentation on how to provide it), the `deploy` and `deploy_builder` methods can
11467be used to deploy a new instance of the contract.
11468
11469See the [module-level documentation](self) for all the available methods.*/
11470    #[derive(Clone)]
11471    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
11472        address: alloy_sol_types::private::Address,
11473        provider: P,
11474        _network_transport: ::core::marker::PhantomData<(N, T)>,
11475    }
11476    #[automatically_derived]
11477    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
11478        #[inline]
11479        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11480            f.debug_tuple("LightClientInstance").field(&self.address).finish()
11481        }
11482    }
11483    /// Instantiation and getters/setters.
11484    #[automatically_derived]
11485    impl<
11486        T: alloy_contract::private::Transport + ::core::clone::Clone,
11487        P: alloy_contract::private::Provider<T, N>,
11488        N: alloy_contract::private::Network,
11489    > LightClientInstance<T, P, N> {
11490        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
11491
11492See the [wrapper's documentation](`LightClientInstance`) for more details.*/
11493        #[inline]
11494        pub const fn new(
11495            address: alloy_sol_types::private::Address,
11496            provider: P,
11497        ) -> Self {
11498            Self {
11499                address,
11500                provider,
11501                _network_transport: ::core::marker::PhantomData,
11502            }
11503        }
11504        /**Deploys this contract using the given `provider` and constructor arguments, if any.
11505
11506Returns a new instance of the contract, if the deployment was successful.
11507
11508For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11509        #[inline]
11510        pub async fn deploy(
11511            provider: P,
11512        ) -> alloy_contract::Result<LightClientInstance<T, P, N>> {
11513            let call_builder = Self::deploy_builder(provider);
11514            let contract_address = call_builder.deploy().await?;
11515            Ok(Self::new(contract_address, call_builder.provider))
11516        }
11517        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11518and constructor arguments, if any.
11519
11520This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11521the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11522        #[inline]
11523        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
11524            alloy_contract::RawCallBuilder::new_raw_deploy(
11525                provider,
11526                ::core::clone::Clone::clone(&BYTECODE),
11527            )
11528        }
11529        /// Returns a reference to the address.
11530        #[inline]
11531        pub const fn address(&self) -> &alloy_sol_types::private::Address {
11532            &self.address
11533        }
11534        /// Sets the address.
11535        #[inline]
11536        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
11537            self.address = address;
11538        }
11539        /// Sets the address and returns `self`.
11540        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
11541            self.set_address(address);
11542            self
11543        }
11544        /// Returns a reference to the provider.
11545        #[inline]
11546        pub const fn provider(&self) -> &P {
11547            &self.provider
11548        }
11549    }
11550    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
11551        /// Clones the provider and returns a new instance with the cloned provider.
11552        #[inline]
11553        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
11554            LightClientInstance {
11555                address: self.address,
11556                provider: ::core::clone::Clone::clone(&self.provider),
11557                _network_transport: ::core::marker::PhantomData,
11558            }
11559        }
11560    }
11561    /// Function calls.
11562    #[automatically_derived]
11563    impl<
11564        T: alloy_contract::private::Transport + ::core::clone::Clone,
11565        P: alloy_contract::private::Provider<T, N>,
11566        N: alloy_contract::private::Network,
11567    > LightClientInstance<T, P, N> {
11568        /// Creates a new call builder using this contract instance's provider and address.
11569        ///
11570        /// Note that the call can be any function call, not just those defined in this
11571        /// contract. Prefer using the other methods for building type-safe contract calls.
11572        pub fn call_builder<C: alloy_sol_types::SolCall>(
11573            &self,
11574            call: &C,
11575        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
11576            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
11577        }
11578        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
11579        pub fn UPGRADE_INTERFACE_VERSION(
11580            &self,
11581        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
11582            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
11583        }
11584        ///Creates a new call builder for the [`_getVk`] function.
11585        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
11586            self.call_builder(&_getVkCall {})
11587        }
11588        ///Creates a new call builder for the [`currentBlockNumber`] function.
11589        pub fn currentBlockNumber(
11590            &self,
11591        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
11592            self.call_builder(&currentBlockNumberCall {})
11593        }
11594        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
11595        pub fn disablePermissionedProverMode(
11596            &self,
11597        ) -> alloy_contract::SolCallBuilder<
11598            T,
11599            &P,
11600            disablePermissionedProverModeCall,
11601            N,
11602        > {
11603            self.call_builder(
11604                &disablePermissionedProverModeCall {
11605                },
11606            )
11607        }
11608        ///Creates a new call builder for the [`finalizedState`] function.
11609        pub fn finalizedState(
11610            &self,
11611        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
11612            self.call_builder(&finalizedStateCall {})
11613        }
11614        ///Creates a new call builder for the [`genesisStakeTableState`] function.
11615        pub fn genesisStakeTableState(
11616            &self,
11617        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
11618            self.call_builder(&genesisStakeTableStateCall {})
11619        }
11620        ///Creates a new call builder for the [`genesisState`] function.
11621        pub fn genesisState(
11622            &self,
11623        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
11624            self.call_builder(&genesisStateCall {})
11625        }
11626        ///Creates a new call builder for the [`getHotShotCommitment`] function.
11627        pub fn getHotShotCommitment(
11628            &self,
11629            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
11630        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
11631            self.call_builder(
11632                &getHotShotCommitmentCall {
11633                    hotShotBlockHeight,
11634                },
11635            )
11636        }
11637        ///Creates a new call builder for the [`getStateHistoryCount`] function.
11638        pub fn getStateHistoryCount(
11639            &self,
11640        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
11641            self.call_builder(&getStateHistoryCountCall {})
11642        }
11643        ///Creates a new call builder for the [`getVersion`] function.
11644        pub fn getVersion(
11645            &self,
11646        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
11647            self.call_builder(&getVersionCall {})
11648        }
11649        ///Creates a new call builder for the [`initialize`] function.
11650        pub fn initialize(
11651            &self,
11652            _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
11653            _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
11654            _stateHistoryRetentionPeriod: u32,
11655            owner: alloy::sol_types::private::Address,
11656        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
11657            self.call_builder(
11658                &initializeCall {
11659                    _genesis,
11660                    _genesisStakeTableState,
11661                    _stateHistoryRetentionPeriod,
11662                    owner,
11663                },
11664            )
11665        }
11666        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
11667        pub fn isPermissionedProverEnabled(
11668            &self,
11669        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
11670            self.call_builder(&isPermissionedProverEnabledCall {})
11671        }
11672        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
11673        pub fn lagOverEscapeHatchThreshold(
11674            &self,
11675            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11676            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
11677        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
11678            self.call_builder(
11679                &lagOverEscapeHatchThresholdCall {
11680                    blockNumber,
11681                    blockThreshold,
11682                },
11683            )
11684        }
11685        ///Creates a new call builder for the [`newFinalizedState`] function.
11686        pub fn newFinalizedState(
11687            &self,
11688            newState: <LightClientState as alloy::sol_types::SolType>::RustType,
11689            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11690        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedStateCall, N> {
11691            self.call_builder(
11692                &newFinalizedStateCall {
11693                    newState,
11694                    proof,
11695                },
11696            )
11697        }
11698        ///Creates a new call builder for the [`owner`] function.
11699        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
11700            self.call_builder(&ownerCall {})
11701        }
11702        ///Creates a new call builder for the [`permissionedProver`] function.
11703        pub fn permissionedProver(
11704            &self,
11705        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
11706            self.call_builder(&permissionedProverCall {})
11707        }
11708        ///Creates a new call builder for the [`proxiableUUID`] function.
11709        pub fn proxiableUUID(
11710            &self,
11711        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
11712            self.call_builder(&proxiableUUIDCall {})
11713        }
11714        ///Creates a new call builder for the [`renounceOwnership`] function.
11715        pub fn renounceOwnership(
11716            &self,
11717        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
11718            self.call_builder(&renounceOwnershipCall {})
11719        }
11720        ///Creates a new call builder for the [`setPermissionedProver`] function.
11721        pub fn setPermissionedProver(
11722            &self,
11723            prover: alloy::sol_types::private::Address,
11724        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
11725            self.call_builder(
11726                &setPermissionedProverCall {
11727                    prover,
11728                },
11729            )
11730        }
11731        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
11732        pub fn setstateHistoryRetentionPeriod(
11733            &self,
11734            historySeconds: u32,
11735        ) -> alloy_contract::SolCallBuilder<
11736            T,
11737            &P,
11738            setstateHistoryRetentionPeriodCall,
11739            N,
11740        > {
11741            self.call_builder(
11742                &setstateHistoryRetentionPeriodCall {
11743                    historySeconds,
11744                },
11745            )
11746        }
11747        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
11748        pub fn stateHistoryCommitments(
11749            &self,
11750            _0: alloy::sol_types::private::primitives::aliases::U256,
11751        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
11752            self.call_builder(&stateHistoryCommitmentsCall { _0 })
11753        }
11754        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
11755        pub fn stateHistoryFirstIndex(
11756            &self,
11757        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
11758            self.call_builder(&stateHistoryFirstIndexCall {})
11759        }
11760        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
11761        pub fn stateHistoryRetentionPeriod(
11762            &self,
11763        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
11764            self.call_builder(&stateHistoryRetentionPeriodCall {})
11765        }
11766        ///Creates a new call builder for the [`transferOwnership`] function.
11767        pub fn transferOwnership(
11768            &self,
11769            newOwner: alloy::sol_types::private::Address,
11770        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
11771            self.call_builder(&transferOwnershipCall { newOwner })
11772        }
11773        ///Creates a new call builder for the [`upgradeToAndCall`] function.
11774        pub fn upgradeToAndCall(
11775            &self,
11776            newImplementation: alloy::sol_types::private::Address,
11777            data: alloy::sol_types::private::Bytes,
11778        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
11779            self.call_builder(
11780                &upgradeToAndCallCall {
11781                    newImplementation,
11782                    data,
11783                },
11784            )
11785        }
11786    }
11787    /// Event filters.
11788    #[automatically_derived]
11789    impl<
11790        T: alloy_contract::private::Transport + ::core::clone::Clone,
11791        P: alloy_contract::private::Provider<T, N>,
11792        N: alloy_contract::private::Network,
11793    > LightClientInstance<T, P, N> {
11794        /// Creates a new event filter using this contract instance's provider and address.
11795        ///
11796        /// Note that the type can be any event, not just those defined in this contract.
11797        /// Prefer using the other methods for building type-safe event filters.
11798        pub fn event_filter<E: alloy_sol_types::SolEvent>(
11799            &self,
11800        ) -> alloy_contract::Event<T, &P, E, N> {
11801            alloy_contract::Event::new_sol(&self.provider, &self.address)
11802        }
11803        ///Creates a new event filter for the [`Initialized`] event.
11804        pub fn Initialized_filter(
11805            &self,
11806        ) -> alloy_contract::Event<T, &P, Initialized, N> {
11807            self.event_filter::<Initialized>()
11808        }
11809        ///Creates a new event filter for the [`NewState`] event.
11810        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
11811            self.event_filter::<NewState>()
11812        }
11813        ///Creates a new event filter for the [`OwnershipTransferred`] event.
11814        pub fn OwnershipTransferred_filter(
11815            &self,
11816        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
11817            self.event_filter::<OwnershipTransferred>()
11818        }
11819        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
11820        pub fn PermissionedProverNotRequired_filter(
11821            &self,
11822        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
11823            self.event_filter::<PermissionedProverNotRequired>()
11824        }
11825        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
11826        pub fn PermissionedProverRequired_filter(
11827            &self,
11828        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
11829            self.event_filter::<PermissionedProverRequired>()
11830        }
11831        ///Creates a new event filter for the [`Upgrade`] event.
11832        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
11833            self.event_filter::<Upgrade>()
11834        }
11835        ///Creates a new event filter for the [`Upgraded`] event.
11836        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
11837            self.event_filter::<Upgraded>()
11838        }
11839    }
11840}