hotshot_contract_adapter/bindings/
plonkverifierv2.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 alloy::sol_types as alloy_sol_types;
20
21    use super::*;
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30            for alloy::sol_types::private::primitives::aliases::U256
31        {
32            #[inline]
33            fn stv_to_tokens(
34                &self,
35            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
36            {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
44                    .0
45            }
46            #[inline]
47            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
48                <alloy::sol_types::sol_data::Uint<
49                    256,
50                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
51            }
52            #[inline]
53            fn stv_abi_packed_encoded_size(&self) -> usize {
54                <alloy::sol_types::sol_data::Uint<
55                    256,
56                > as alloy_sol_types::SolType>::abi_encoded_size(self)
57            }
58        }
59        #[automatically_derived]
60        impl BaseField {
61            /// The Solidity type name.
62            pub const NAME: &'static str = stringify!(@ name);
63            /// Convert from the underlying value type.
64            #[inline]
65            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
66                Self(value)
67            }
68            /// Return the underlying value.
69            #[inline]
70            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
71                self.0
72            }
73            /// Return the single encoding of this value, delegating to the
74            /// underlying type.
75            #[inline]
76            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
77                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
78            }
79            /// Return the packed encoding of this value, delegating to the
80            /// underlying type.
81            #[inline]
82            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
83                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
84            }
85        }
86        #[automatically_derived]
87        impl alloy_sol_types::SolType for BaseField {
88            type RustType = alloy::sol_types::private::primitives::aliases::U256;
89            type Token<'a> =
90                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
91            const SOL_NAME: &'static str = Self::NAME;
92            const ENCODED_SIZE: Option<usize> =
93                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
94            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
95                256,
96            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
97            #[inline]
98            fn valid_token(token: &Self::Token<'_>) -> bool {
99                Self::type_check(token).is_ok()
100            }
101            #[inline]
102            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
103                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
104                    token,
105                )
106            }
107            #[inline]
108            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
109                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
110                    token,
111                )
112            }
113        }
114        #[automatically_derived]
115        impl alloy_sol_types::EventTopic for BaseField {
116            #[inline]
117            fn topic_preimage_length(rust: &Self::RustType) -> usize {
118                <alloy::sol_types::sol_data::Uint<
119                    256,
120                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
121            }
122            #[inline]
123            fn encode_topic_preimage(
124                rust: &Self::RustType,
125                out: &mut alloy_sol_types::private::Vec<u8>,
126            ) {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
130            }
131            #[inline]
132            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
133                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
134                    rust,
135                )
136            }
137        }
138    };
139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
141    #[derive(Clone)]
142    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
143    const _: () = {
144        use alloy::sol_types as alloy_sol_types;
145        #[automatically_derived]
146        impl alloy_sol_types::private::SolTypeValue<ScalarField>
147            for alloy::sol_types::private::primitives::aliases::U256
148        {
149            #[inline]
150            fn stv_to_tokens(
151                &self,
152            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
153            {
154                alloy_sol_types::private::SolTypeValue::<
155                    alloy::sol_types::sol_data::Uint<256>,
156                >::stv_to_tokens(self)
157            }
158            #[inline]
159            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
160                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
161                    .0
162            }
163            #[inline]
164            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
165                <alloy::sol_types::sol_data::Uint<
166                    256,
167                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
168            }
169            #[inline]
170            fn stv_abi_packed_encoded_size(&self) -> usize {
171                <alloy::sol_types::sol_data::Uint<
172                    256,
173                > as alloy_sol_types::SolType>::abi_encoded_size(self)
174            }
175        }
176        #[automatically_derived]
177        impl ScalarField {
178            /// The Solidity type name.
179            pub const NAME: &'static str = stringify!(@ name);
180            /// Convert from the underlying value type.
181            #[inline]
182            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
183                Self(value)
184            }
185            /// Return the underlying value.
186            #[inline]
187            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
188                self.0
189            }
190            /// Return the single encoding of this value, delegating to the
191            /// underlying type.
192            #[inline]
193            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
194                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
195            }
196            /// Return the packed encoding of this value, delegating to the
197            /// underlying type.
198            #[inline]
199            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
200                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
201            }
202        }
203        #[automatically_derived]
204        impl alloy_sol_types::SolType for ScalarField {
205            type RustType = alloy::sol_types::private::primitives::aliases::U256;
206            type Token<'a> =
207                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
208            const SOL_NAME: &'static str = Self::NAME;
209            const ENCODED_SIZE: Option<usize> =
210                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
211            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
212                256,
213            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
214            #[inline]
215            fn valid_token(token: &Self::Token<'_>) -> bool {
216                Self::type_check(token).is_ok()
217            }
218            #[inline]
219            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
220                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
221                    token,
222                )
223            }
224            #[inline]
225            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
226                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
227                    token,
228                )
229            }
230        }
231        #[automatically_derived]
232        impl alloy_sol_types::EventTopic for ScalarField {
233            #[inline]
234            fn topic_preimage_length(rust: &Self::RustType) -> usize {
235                <alloy::sol_types::sol_data::Uint<
236                    256,
237                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
238            }
239            #[inline]
240            fn encode_topic_preimage(
241                rust: &Self::RustType,
242                out: &mut alloy_sol_types::private::Vec<u8>,
243            ) {
244                <alloy::sol_types::sol_data::Uint<
245                    256,
246                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
247            }
248            #[inline]
249            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
250                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
251                    rust,
252                )
253            }
254        }
255    };
256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
257    /**```solidity
258    struct G1Point { BaseField x; BaseField y; }
259    ```*/
260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
261    #[derive(Clone)]
262    pub struct G1Point {
263        #[allow(missing_docs)]
264        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
265        #[allow(missing_docs)]
266        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
267    }
268    #[allow(
269        non_camel_case_types,
270        non_snake_case,
271        clippy::pub_underscore_fields,
272        clippy::style
273    )]
274    const _: () = {
275        use alloy::sol_types as alloy_sol_types;
276        #[doc(hidden)]
277        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
278        #[doc(hidden)]
279        type UnderlyingRustTuple<'a> = (
280            <BaseField as alloy::sol_types::SolType>::RustType,
281            <BaseField as alloy::sol_types::SolType>::RustType,
282        );
283        #[cfg(test)]
284        #[allow(dead_code, unreachable_patterns)]
285        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
286            match _t {
287                alloy_sol_types::private::AssertTypeEq::<
288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
289                >(_) => {},
290            }
291        }
292        #[automatically_derived]
293        #[doc(hidden)]
294        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
295            fn from(value: G1Point) -> Self {
296                (value.x, value.y)
297            }
298        }
299        #[automatically_derived]
300        #[doc(hidden)]
301        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
302            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
303                Self {
304                    x: tuple.0,
305                    y: tuple.1,
306                }
307            }
308        }
309        #[automatically_derived]
310        impl alloy_sol_types::SolValue for G1Point {
311            type SolType = Self;
312        }
313        #[automatically_derived]
314        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
315            #[inline]
316            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
317                (
318                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
319                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
320                )
321            }
322            #[inline]
323            fn stv_abi_encoded_size(&self) -> usize {
324                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
325                    return size;
326                }
327                let tuple =
328                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
329                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
330            }
331            #[inline]
332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
334            }
335            #[inline]
336            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
337                let tuple =
338                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
339                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
340                    &tuple, out,
341                )
342            }
343            #[inline]
344            fn stv_abi_packed_encoded_size(&self) -> usize {
345                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
346                    return size;
347                }
348                let tuple =
349                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
350                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
351                    &tuple,
352                )
353            }
354        }
355        #[automatically_derived]
356        impl alloy_sol_types::SolType for G1Point {
357            type RustType = Self;
358            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
359            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
360            const ENCODED_SIZE: Option<usize> =
361                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
362            const PACKED_ENCODED_SIZE: Option<usize> =
363                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
364            #[inline]
365            fn valid_token(token: &Self::Token<'_>) -> bool {
366                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
367            }
368            #[inline]
369            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
370                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
371                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
372            }
373        }
374        #[automatically_derived]
375        impl alloy_sol_types::SolStruct for G1Point {
376            const NAME: &'static str = "G1Point";
377            #[inline]
378            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
379                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
380            }
381            #[inline]
382            fn eip712_components(
383            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
384            {
385                alloy_sol_types::private::Vec::new()
386            }
387            #[inline]
388            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
389                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
390            }
391            #[inline]
392            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
393                [
394                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
395                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
396                ]
397                .concat()
398            }
399        }
400        #[automatically_derived]
401        impl alloy_sol_types::EventTopic for G1Point {
402            #[inline]
403            fn topic_preimage_length(rust: &Self::RustType) -> usize {
404                0usize
405                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
406                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
407            }
408            #[inline]
409            fn encode_topic_preimage(
410                rust: &Self::RustType,
411                out: &mut alloy_sol_types::private::Vec<u8>,
412            ) {
413                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
414                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
415                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
416            }
417            #[inline]
418            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
419                let mut out = alloy_sol_types::private::Vec::new();
420                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
421                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
422            }
423        }
424    };
425    use alloy::contract as alloy_contract;
426    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
427
428    See the [wrapper's documentation](`BN254Instance`) for more details.*/
429    #[inline]
430    pub const fn new<
431        T: alloy_contract::private::Transport + ::core::clone::Clone,
432        P: alloy_contract::private::Provider<T, N>,
433        N: alloy_contract::private::Network,
434    >(
435        address: alloy_sol_types::private::Address,
436        provider: P,
437    ) -> BN254Instance<T, P, N> {
438        BN254Instance::<T, P, N>::new(address, provider)
439    }
440    /**A [`BN254`](self) instance.
441
442    Contains type-safe methods for interacting with an on-chain instance of the
443    [`BN254`](self) contract located at a given `address`, using a given
444    provider `P`.
445
446    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
447    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
448    be used to deploy a new instance of the contract.
449
450    See the [module-level documentation](self) for all the available methods.*/
451    #[derive(Clone)]
452    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
453        address: alloy_sol_types::private::Address,
454        provider: P,
455        _network_transport: ::core::marker::PhantomData<(N, T)>,
456    }
457    #[automatically_derived]
458    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
459        #[inline]
460        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
461            f.debug_tuple("BN254Instance").field(&self.address).finish()
462        }
463    }
464    /// Instantiation and getters/setters.
465    #[automatically_derived]
466    impl<
467            T: alloy_contract::private::Transport + ::core::clone::Clone,
468            P: alloy_contract::private::Provider<T, N>,
469            N: alloy_contract::private::Network,
470        > BN254Instance<T, P, N>
471    {
472        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
473
474        See the [wrapper's documentation](`BN254Instance`) for more details.*/
475        #[inline]
476        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
477            Self {
478                address,
479                provider,
480                _network_transport: ::core::marker::PhantomData,
481            }
482        }
483        /// Returns a reference to the address.
484        #[inline]
485        pub const fn address(&self) -> &alloy_sol_types::private::Address {
486            &self.address
487        }
488        /// Sets the address.
489        #[inline]
490        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
491            self.address = address;
492        }
493        /// Sets the address and returns `self`.
494        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
495            self.set_address(address);
496            self
497        }
498        /// Returns a reference to the provider.
499        #[inline]
500        pub const fn provider(&self) -> &P {
501            &self.provider
502        }
503    }
504    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
505        /// Clones the provider and returns a new instance with the cloned provider.
506        #[inline]
507        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
508            BN254Instance {
509                address: self.address,
510                provider: ::core::clone::Clone::clone(&self.provider),
511                _network_transport: ::core::marker::PhantomData,
512            }
513        }
514    }
515    /// Function calls.
516    #[automatically_derived]
517    impl<
518            T: alloy_contract::private::Transport + ::core::clone::Clone,
519            P: alloy_contract::private::Provider<T, N>,
520            N: alloy_contract::private::Network,
521        > BN254Instance<T, P, N>
522    {
523        /// Creates a new call builder using this contract instance's provider and address.
524        ///
525        /// Note that the call can be any function call, not just those defined in this
526        /// contract. Prefer using the other methods for building type-safe contract calls.
527        pub fn call_builder<C: alloy_sol_types::SolCall>(
528            &self,
529            call: &C,
530        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
531            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
532        }
533    }
534    /// Event filters.
535    #[automatically_derived]
536    impl<
537            T: alloy_contract::private::Transport + ::core::clone::Clone,
538            P: alloy_contract::private::Provider<T, N>,
539            N: alloy_contract::private::Network,
540        > BN254Instance<T, P, N>
541    {
542        /// Creates a new event filter using this contract instance's provider and address.
543        ///
544        /// Note that the type can be any event, not just those defined in this contract.
545        /// Prefer using the other methods for building type-safe event filters.
546        pub fn event_filter<E: alloy_sol_types::SolEvent>(
547            &self,
548        ) -> alloy_contract::Event<T, &P, E, N> {
549            alloy_contract::Event::new_sol(&self.provider, &self.address)
550        }
551    }
552}
553///Module containing a contract's types and functions.
554/**
555
556```solidity
557library IPlonkVerifier {
558    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; }
559    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; }
560}
561```*/
562#[allow(
563    non_camel_case_types,
564    non_snake_case,
565    clippy::pub_underscore_fields,
566    clippy::style,
567    clippy::empty_structs_with_brackets
568)]
569pub mod IPlonkVerifier {
570    use alloy::sol_types as alloy_sol_types;
571
572    use super::*;
573    #[derive()]
574    /**```solidity
575    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; }
576    ```*/
577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
578    #[derive(Clone)]
579    pub struct PlonkProof {
580        #[allow(missing_docs)]
581        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
582        #[allow(missing_docs)]
583        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
584        #[allow(missing_docs)]
585        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
586        #[allow(missing_docs)]
587        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
588        #[allow(missing_docs)]
589        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
590        #[allow(missing_docs)]
591        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
592        #[allow(missing_docs)]
593        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
594        #[allow(missing_docs)]
595        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
596        #[allow(missing_docs)]
597        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
598        #[allow(missing_docs)]
599        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
600        #[allow(missing_docs)]
601        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
602        #[allow(missing_docs)]
603        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
604        #[allow(missing_docs)]
605        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
606        #[allow(missing_docs)]
607        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
608        #[allow(missing_docs)]
609        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
610        #[allow(missing_docs)]
611        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
612        #[allow(missing_docs)]
613        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
614        #[allow(missing_docs)]
615        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
616        #[allow(missing_docs)]
617        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
618        #[allow(missing_docs)]
619        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
620        #[allow(missing_docs)]
621        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
622        #[allow(missing_docs)]
623        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
624        #[allow(missing_docs)]
625        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
626    }
627    #[allow(
628        non_camel_case_types,
629        non_snake_case,
630        clippy::pub_underscore_fields,
631        clippy::style
632    )]
633    const _: () = {
634        use alloy::sol_types as alloy_sol_types;
635        #[doc(hidden)]
636        type UnderlyingSolTuple<'a> = (
637            BN254::G1Point,
638            BN254::G1Point,
639            BN254::G1Point,
640            BN254::G1Point,
641            BN254::G1Point,
642            BN254::G1Point,
643            BN254::G1Point,
644            BN254::G1Point,
645            BN254::G1Point,
646            BN254::G1Point,
647            BN254::G1Point,
648            BN254::G1Point,
649            BN254::G1Point,
650            BN254::ScalarField,
651            BN254::ScalarField,
652            BN254::ScalarField,
653            BN254::ScalarField,
654            BN254::ScalarField,
655            BN254::ScalarField,
656            BN254::ScalarField,
657            BN254::ScalarField,
658            BN254::ScalarField,
659            BN254::ScalarField,
660        );
661        #[doc(hidden)]
662        type UnderlyingRustTuple<'a> = (
663            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
677            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
679            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
681            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
683            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
684            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
686        );
687        #[cfg(test)]
688        #[allow(dead_code, unreachable_patterns)]
689        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
690            match _t {
691                alloy_sol_types::private::AssertTypeEq::<
692                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
693                >(_) => {},
694            }
695        }
696        #[automatically_derived]
697        #[doc(hidden)]
698        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
699            fn from(value: PlonkProof) -> Self {
700                (
701                    value.wire0,
702                    value.wire1,
703                    value.wire2,
704                    value.wire3,
705                    value.wire4,
706                    value.prodPerm,
707                    value.split0,
708                    value.split1,
709                    value.split2,
710                    value.split3,
711                    value.split4,
712                    value.zeta,
713                    value.zetaOmega,
714                    value.wireEval0,
715                    value.wireEval1,
716                    value.wireEval2,
717                    value.wireEval3,
718                    value.wireEval4,
719                    value.sigmaEval0,
720                    value.sigmaEval1,
721                    value.sigmaEval2,
722                    value.sigmaEval3,
723                    value.prodPermZetaOmegaEval,
724                )
725            }
726        }
727        #[automatically_derived]
728        #[doc(hidden)]
729        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
730            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
731                Self {
732                    wire0: tuple.0,
733                    wire1: tuple.1,
734                    wire2: tuple.2,
735                    wire3: tuple.3,
736                    wire4: tuple.4,
737                    prodPerm: tuple.5,
738                    split0: tuple.6,
739                    split1: tuple.7,
740                    split2: tuple.8,
741                    split3: tuple.9,
742                    split4: tuple.10,
743                    zeta: tuple.11,
744                    zetaOmega: tuple.12,
745                    wireEval0: tuple.13,
746                    wireEval1: tuple.14,
747                    wireEval2: tuple.15,
748                    wireEval3: tuple.16,
749                    wireEval4: tuple.17,
750                    sigmaEval0: tuple.18,
751                    sigmaEval1: tuple.19,
752                    sigmaEval2: tuple.20,
753                    sigmaEval3: tuple.21,
754                    prodPermZetaOmegaEval: tuple.22,
755                }
756            }
757        }
758        #[automatically_derived]
759        impl alloy_sol_types::SolValue for PlonkProof {
760            type SolType = Self;
761        }
762        #[automatically_derived]
763        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
764            #[inline]
765            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
766                (
767                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
768                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
769                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
770                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
771                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
772                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.prodPerm),
773                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
774                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
775                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
776                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
777                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
778                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
779                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zetaOmega),
780                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval0),
781                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval1),
782                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval2),
783                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval3),
784                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval4),
785                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval0),
786                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval1),
787                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval2),
788                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval3),
789                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
790                        &self.prodPermZetaOmegaEval,
791                    ),
792                )
793            }
794            #[inline]
795            fn stv_abi_encoded_size(&self) -> usize {
796                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
797                    return size;
798                }
799                let tuple =
800                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
801                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
802            }
803            #[inline]
804            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
805                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
806            }
807            #[inline]
808            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
809                let tuple =
810                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
811                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
812                    &tuple, out,
813                )
814            }
815            #[inline]
816            fn stv_abi_packed_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
818                    return size;
819                }
820                let tuple =
821                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
822                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
823                    &tuple,
824                )
825            }
826        }
827        #[automatically_derived]
828        impl alloy_sol_types::SolType for PlonkProof {
829            type RustType = Self;
830            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
831            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
832            const ENCODED_SIZE: Option<usize> =
833                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
834            const PACKED_ENCODED_SIZE: Option<usize> =
835                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
836            #[inline]
837            fn valid_token(token: &Self::Token<'_>) -> bool {
838                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
839            }
840            #[inline]
841            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
842                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
843                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
844            }
845        }
846        #[automatically_derived]
847        impl alloy_sol_types::SolStruct for PlonkProof {
848            const NAME: &'static str = "PlonkProof";
849            #[inline]
850            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
851                alloy_sol_types::private::Cow::Borrowed(
852                    "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)",
853                )
854            }
855            #[inline]
856            fn eip712_components(
857            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
858            {
859                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
860                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
861                components
862                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
863                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
864                components
865                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
866                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
867                components
868                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
869                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
870                components
871                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
872                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
873                components
874                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
875                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
876                components
877                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
878                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
879                components
880                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
881                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
882                components
883                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
884                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
885                components
886                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
887                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
888                components
889                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
890                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
891                components
892                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
893                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
894                components
895                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
896                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
897                components
898                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
899                components
900            }
901            #[inline]
902            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
903                [
904                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire0).0,
905                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire1).0,
906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire2).0,
907                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire3).0,
908                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire4).0,
909                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.prodPerm)
910                        .0,
911                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split0).0,
912                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split1).0,
913                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split2).0,
914                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split3).0,
915                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split4).0,
916                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zeta).0,
917                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zetaOmega)
918                        .0,
919                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
920                        &self.wireEval0,
921                    )
922                    .0,
923                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
924                        &self.wireEval1,
925                    )
926                    .0,
927                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
928                        &self.wireEval2,
929                    )
930                    .0,
931                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
932                        &self.wireEval3,
933                    )
934                    .0,
935                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
936                        &self.wireEval4,
937                    )
938                    .0,
939                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
940                        &self.sigmaEval0,
941                    )
942                    .0,
943                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
944                        &self.sigmaEval1,
945                    )
946                    .0,
947                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
948                        &self.sigmaEval2,
949                    )
950                    .0,
951                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
952                        &self.sigmaEval3,
953                    )
954                    .0,
955                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
956                        &self.prodPermZetaOmegaEval,
957                    )
958                    .0,
959                ]
960                .concat()
961            }
962        }
963        #[automatically_derived]
964        impl alloy_sol_types::EventTopic for PlonkProof {
965            #[inline]
966            fn topic_preimage_length(rust: &Self::RustType) -> usize {
967                0usize
968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
969                        &rust.wire0,
970                    )
971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
972                        &rust.wire1,
973                    )
974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
975                        &rust.wire2,
976                    )
977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
978                        &rust.wire3,
979                    )
980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
981                        &rust.wire4,
982                    )
983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
984                        &rust.prodPerm,
985                    )
986                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
987                        &rust.split0,
988                    )
989                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
990                        &rust.split1,
991                    )
992                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
993                        &rust.split2,
994                    )
995                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
996                        &rust.split3,
997                    )
998                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
999                        &rust.split4,
1000                    )
1001                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1002                        &rust.zeta,
1003                    )
1004                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1005                        &rust.zetaOmega,
1006                    )
1007                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1008                        &rust.wireEval0,
1009                    )
1010                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1011                        &rust.wireEval1,
1012                    )
1013                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1014                        &rust.wireEval2,
1015                    )
1016                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1017                        &rust.wireEval3,
1018                    )
1019                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1020                        &rust.wireEval4,
1021                    )
1022                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1023                        &rust.sigmaEval0,
1024                    )
1025                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1026                        &rust.sigmaEval1,
1027                    )
1028                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1029                        &rust.sigmaEval2,
1030                    )
1031                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1032                        &rust.sigmaEval3,
1033                    )
1034                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1035                        &rust.prodPermZetaOmegaEval,
1036                    )
1037            }
1038            #[inline]
1039            fn encode_topic_preimage(
1040                rust: &Self::RustType,
1041                out: &mut alloy_sol_types::private::Vec<u8>,
1042            ) {
1043                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1044                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1045                    &rust.wire0,
1046                    out,
1047                );
1048                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1049                    &rust.wire1,
1050                    out,
1051                );
1052                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1053                    &rust.wire2,
1054                    out,
1055                );
1056                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1057                    &rust.wire3,
1058                    out,
1059                );
1060                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1061                    &rust.wire4,
1062                    out,
1063                );
1064                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1065                    &rust.prodPerm,
1066                    out,
1067                );
1068                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1069                    &rust.split0,
1070                    out,
1071                );
1072                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1073                    &rust.split1,
1074                    out,
1075                );
1076                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1077                    &rust.split2,
1078                    out,
1079                );
1080                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1081                    &rust.split3,
1082                    out,
1083                );
1084                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1085                    &rust.split4,
1086                    out,
1087                );
1088                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1089                    &rust.zeta, out,
1090                );
1091                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1092                    &rust.zetaOmega,
1093                    out,
1094                );
1095                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1096                    &rust.wireEval0,
1097                    out,
1098                );
1099                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1100                    &rust.wireEval1,
1101                    out,
1102                );
1103                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1104                    &rust.wireEval2,
1105                    out,
1106                );
1107                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1108                    &rust.wireEval3,
1109                    out,
1110                );
1111                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1112                    &rust.wireEval4,
1113                    out,
1114                );
1115                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1116                    &rust.sigmaEval0,
1117                    out,
1118                );
1119                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1120                    &rust.sigmaEval1,
1121                    out,
1122                );
1123                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1124                    &rust.sigmaEval2,
1125                    out,
1126                );
1127                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1128                    &rust.sigmaEval3,
1129                    out,
1130                );
1131                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1132                    &rust.prodPermZetaOmegaEval,
1133                    out,
1134                );
1135            }
1136            #[inline]
1137            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1138                let mut out = alloy_sol_types::private::Vec::new();
1139                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1140                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1141            }
1142        }
1143    };
1144    #[derive()]
1145    /**```solidity
1146    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; }
1147    ```*/
1148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1149    #[derive(Clone)]
1150    pub struct VerifyingKey {
1151        #[allow(missing_docs)]
1152        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1153        #[allow(missing_docs)]
1154        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1155        #[allow(missing_docs)]
1156        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1157        #[allow(missing_docs)]
1158        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1159        #[allow(missing_docs)]
1160        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1161        #[allow(missing_docs)]
1162        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1163        #[allow(missing_docs)]
1164        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1165        #[allow(missing_docs)]
1166        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1167        #[allow(missing_docs)]
1168        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1169        #[allow(missing_docs)]
1170        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1171        #[allow(missing_docs)]
1172        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1173        #[allow(missing_docs)]
1174        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1175        #[allow(missing_docs)]
1176        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1177        #[allow(missing_docs)]
1178        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1179        #[allow(missing_docs)]
1180        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1181        #[allow(missing_docs)]
1182        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1183        #[allow(missing_docs)]
1184        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1185        #[allow(missing_docs)]
1186        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1187        #[allow(missing_docs)]
1188        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1189        #[allow(missing_docs)]
1190        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1191        #[allow(missing_docs)]
1192        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1193        #[allow(missing_docs)]
1194        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1195    }
1196    #[allow(
1197        non_camel_case_types,
1198        non_snake_case,
1199        clippy::pub_underscore_fields,
1200        clippy::style
1201    )]
1202    const _: () = {
1203        use alloy::sol_types as alloy_sol_types;
1204        #[doc(hidden)]
1205        type UnderlyingSolTuple<'a> = (
1206            alloy::sol_types::sol_data::Uint<256>,
1207            alloy::sol_types::sol_data::Uint<256>,
1208            BN254::G1Point,
1209            BN254::G1Point,
1210            BN254::G1Point,
1211            BN254::G1Point,
1212            BN254::G1Point,
1213            BN254::G1Point,
1214            BN254::G1Point,
1215            BN254::G1Point,
1216            BN254::G1Point,
1217            BN254::G1Point,
1218            BN254::G1Point,
1219            BN254::G1Point,
1220            BN254::G1Point,
1221            BN254::G1Point,
1222            BN254::G1Point,
1223            BN254::G1Point,
1224            BN254::G1Point,
1225            BN254::G1Point,
1226            alloy::sol_types::sol_data::FixedBytes<32>,
1227            alloy::sol_types::sol_data::FixedBytes<32>,
1228        );
1229        #[doc(hidden)]
1230        type UnderlyingRustTuple<'a> = (
1231            alloy::sol_types::private::primitives::aliases::U256,
1232            alloy::sol_types::private::primitives::aliases::U256,
1233            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1234            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1235            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1236            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1237            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1238            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1239            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1240            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1241            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1242            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1243            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1244            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1245            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1246            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1247            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1248            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1249            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1250            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1251            alloy::sol_types::private::FixedBytes<32>,
1252            alloy::sol_types::private::FixedBytes<32>,
1253        );
1254        #[cfg(test)]
1255        #[allow(dead_code, unreachable_patterns)]
1256        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1257            match _t {
1258                alloy_sol_types::private::AssertTypeEq::<
1259                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1260                >(_) => {},
1261            }
1262        }
1263        #[automatically_derived]
1264        #[doc(hidden)]
1265        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1266            fn from(value: VerifyingKey) -> Self {
1267                (
1268                    value.domainSize,
1269                    value.numInputs,
1270                    value.sigma0,
1271                    value.sigma1,
1272                    value.sigma2,
1273                    value.sigma3,
1274                    value.sigma4,
1275                    value.q1,
1276                    value.q2,
1277                    value.q3,
1278                    value.q4,
1279                    value.qM12,
1280                    value.qM34,
1281                    value.qO,
1282                    value.qC,
1283                    value.qH1,
1284                    value.qH2,
1285                    value.qH3,
1286                    value.qH4,
1287                    value.qEcc,
1288                    value.g2LSB,
1289                    value.g2MSB,
1290                )
1291            }
1292        }
1293        #[automatically_derived]
1294        #[doc(hidden)]
1295        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1296            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1297                Self {
1298                    domainSize: tuple.0,
1299                    numInputs: tuple.1,
1300                    sigma0: tuple.2,
1301                    sigma1: tuple.3,
1302                    sigma2: tuple.4,
1303                    sigma3: tuple.5,
1304                    sigma4: tuple.6,
1305                    q1: tuple.7,
1306                    q2: tuple.8,
1307                    q3: tuple.9,
1308                    q4: tuple.10,
1309                    qM12: tuple.11,
1310                    qM34: tuple.12,
1311                    qO: tuple.13,
1312                    qC: tuple.14,
1313                    qH1: tuple.15,
1314                    qH2: tuple.16,
1315                    qH3: tuple.17,
1316                    qH4: tuple.18,
1317                    qEcc: tuple.19,
1318                    g2LSB: tuple.20,
1319                    g2MSB: tuple.21,
1320                }
1321            }
1322        }
1323        #[automatically_derived]
1324        impl alloy_sol_types::SolValue for VerifyingKey {
1325            type SolType = Self;
1326        }
1327        #[automatically_derived]
1328        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1329            #[inline]
1330            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1331                (
1332                    <alloy::sol_types::sol_data::Uint<
1333                        256,
1334                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1335                    <alloy::sol_types::sol_data::Uint<
1336                        256,
1337                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1338                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1339                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1340                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1341                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1342                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1343                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1344                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1345                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1346                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1347                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1348                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1349                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1350                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1351                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1352                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1353                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1354                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1355                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1356                    <alloy::sol_types::sol_data::FixedBytes<
1357                        32,
1358                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1359                    <alloy::sol_types::sol_data::FixedBytes<
1360                        32,
1361                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1362                )
1363            }
1364            #[inline]
1365            fn stv_abi_encoded_size(&self) -> usize {
1366                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1367                    return size;
1368                }
1369                let tuple =
1370                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1371                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1372            }
1373            #[inline]
1374            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1375                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1376            }
1377            #[inline]
1378            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1379                let tuple =
1380                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1381                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
1382                    &tuple, out,
1383                )
1384            }
1385            #[inline]
1386            fn stv_abi_packed_encoded_size(&self) -> usize {
1387                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1388                    return size;
1389                }
1390                let tuple =
1391                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1392                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
1393                    &tuple,
1394                )
1395            }
1396        }
1397        #[automatically_derived]
1398        impl alloy_sol_types::SolType for VerifyingKey {
1399            type RustType = Self;
1400            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1401            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1402            const ENCODED_SIZE: Option<usize> =
1403                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
1404            const PACKED_ENCODED_SIZE: Option<usize> =
1405                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1406            #[inline]
1407            fn valid_token(token: &Self::Token<'_>) -> bool {
1408                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1409            }
1410            #[inline]
1411            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1412                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
1413                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1414            }
1415        }
1416        #[automatically_derived]
1417        impl alloy_sol_types::SolStruct for VerifyingKey {
1418            const NAME: &'static str = "VerifyingKey";
1419            #[inline]
1420            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1421                alloy_sol_types::private::Cow::Borrowed(
1422                    "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)",
1423                )
1424            }
1425            #[inline]
1426            fn eip712_components(
1427            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
1428            {
1429                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1430                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1431                components
1432                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1433                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1434                components
1435                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1436                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1437                components
1438                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1439                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1440                components
1441                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1442                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1443                components
1444                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1445                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1446                components
1447                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1448                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1449                components
1450                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1451                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1452                components
1453                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1454                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1455                components
1456                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1457                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1458                components
1459                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1460                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1461                components
1462                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1463                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1464                components
1465                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1466                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1467                components
1468                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1469                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1470                components
1471                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1472                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1473                components
1474                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1475                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1476                components
1477                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1478                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1479                components
1480                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1481                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1482                components
1483                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1484                components
1485            }
1486            #[inline]
1487            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1488                [
1489                    <alloy::sol_types::sol_data::Uint<
1490                        256,
1491                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1492                        .0,
1493                    <alloy::sol_types::sol_data::Uint<
1494                        256,
1495                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1496                        .0,
1497                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1498                            &self.sigma0,
1499                        )
1500                        .0,
1501                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1502                            &self.sigma1,
1503                        )
1504                        .0,
1505                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1506                            &self.sigma2,
1507                        )
1508                        .0,
1509                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1510                            &self.sigma3,
1511                        )
1512                        .0,
1513                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1514                            &self.sigma4,
1515                        )
1516                        .0,
1517                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1518                            &self.q1,
1519                        )
1520                        .0,
1521                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1522                            &self.q2,
1523                        )
1524                        .0,
1525                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1526                            &self.q3,
1527                        )
1528                        .0,
1529                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1530                            &self.q4,
1531                        )
1532                        .0,
1533                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1534                            &self.qM12,
1535                        )
1536                        .0,
1537                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1538                            &self.qM34,
1539                        )
1540                        .0,
1541                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1542                            &self.qO,
1543                        )
1544                        .0,
1545                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1546                            &self.qC,
1547                        )
1548                        .0,
1549                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1550                            &self.qH1,
1551                        )
1552                        .0,
1553                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1554                            &self.qH2,
1555                        )
1556                        .0,
1557                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1558                            &self.qH3,
1559                        )
1560                        .0,
1561                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1562                            &self.qH4,
1563                        )
1564                        .0,
1565                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1566                            &self.qEcc,
1567                        )
1568                        .0,
1569                    <alloy::sol_types::sol_data::FixedBytes<
1570                        32,
1571                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1572                        .0,
1573                    <alloy::sol_types::sol_data::FixedBytes<
1574                        32,
1575                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1576                        .0,
1577                ]
1578                    .concat()
1579            }
1580        }
1581        #[automatically_derived]
1582        impl alloy_sol_types::EventTopic for VerifyingKey {
1583            #[inline]
1584            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1585                0usize
1586                    + <alloy::sol_types::sol_data::Uint<
1587                        256,
1588                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1589                        &rust.domainSize,
1590                    )
1591                    + <alloy::sol_types::sol_data::Uint<
1592                        256,
1593                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1594                        &rust.numInputs,
1595                    )
1596                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1597                        &rust.sigma0,
1598                    )
1599                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1600                        &rust.sigma1,
1601                    )
1602                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1603                        &rust.sigma2,
1604                    )
1605                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1606                        &rust.sigma3,
1607                    )
1608                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1609                        &rust.sigma4,
1610                    )
1611                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1612                        &rust.q1,
1613                    )
1614                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1615                        &rust.q2,
1616                    )
1617                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1618                        &rust.q3,
1619                    )
1620                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1621                        &rust.q4,
1622                    )
1623                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1624                        &rust.qM12,
1625                    )
1626                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1627                        &rust.qM34,
1628                    )
1629                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1630                        &rust.qO,
1631                    )
1632                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1633                        &rust.qC,
1634                    )
1635                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1636                        &rust.qH1,
1637                    )
1638                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1639                        &rust.qH2,
1640                    )
1641                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1642                        &rust.qH3,
1643                    )
1644                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1645                        &rust.qH4,
1646                    )
1647                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1648                        &rust.qEcc,
1649                    )
1650                    + <alloy::sol_types::sol_data::FixedBytes<
1651                        32,
1652                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1653                    + <alloy::sol_types::sol_data::FixedBytes<
1654                        32,
1655                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1656            }
1657            #[inline]
1658            fn encode_topic_preimage(
1659                rust: &Self::RustType,
1660                out: &mut alloy_sol_types::private::Vec<u8>,
1661            ) {
1662                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1663                <alloy::sol_types::sol_data::Uint<
1664                    256,
1665                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1666                    &rust.domainSize,
1667                    out,
1668                );
1669                <alloy::sol_types::sol_data::Uint<
1670                    256,
1671                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1672                    &rust.numInputs,
1673                    out,
1674                );
1675                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1676                    &rust.sigma0,
1677                    out,
1678                );
1679                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1680                    &rust.sigma1,
1681                    out,
1682                );
1683                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1684                    &rust.sigma2,
1685                    out,
1686                );
1687                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1688                    &rust.sigma3,
1689                    out,
1690                );
1691                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1692                    &rust.sigma4,
1693                    out,
1694                );
1695                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1696                    &rust.q1, out,
1697                );
1698                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1699                    &rust.q2, out,
1700                );
1701                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1702                    &rust.q3, out,
1703                );
1704                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1705                    &rust.q4, out,
1706                );
1707                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1708                    &rust.qM12, out,
1709                );
1710                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1711                    &rust.qM34, out,
1712                );
1713                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1714                    &rust.qO, out,
1715                );
1716                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1717                    &rust.qC, out,
1718                );
1719                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1720                    &rust.qH1, out,
1721                );
1722                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1723                    &rust.qH2, out,
1724                );
1725                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1726                    &rust.qH3, out,
1727                );
1728                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1729                    &rust.qH4, out,
1730                );
1731                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1732                    &rust.qEcc, out,
1733                );
1734                <alloy::sol_types::sol_data::FixedBytes<
1735                    32,
1736                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1737                    &rust.g2LSB,
1738                    out,
1739                );
1740                <alloy::sol_types::sol_data::FixedBytes<
1741                    32,
1742                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1743                    &rust.g2MSB,
1744                    out,
1745                );
1746            }
1747            #[inline]
1748            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1749                let mut out = alloy_sol_types::private::Vec::new();
1750                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1751                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1752            }
1753        }
1754    };
1755    use alloy::contract as alloy_contract;
1756    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1757
1758    See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1759    #[inline]
1760    pub const fn new<
1761        T: alloy_contract::private::Transport + ::core::clone::Clone,
1762        P: alloy_contract::private::Provider<T, N>,
1763        N: alloy_contract::private::Network,
1764    >(
1765        address: alloy_sol_types::private::Address,
1766        provider: P,
1767    ) -> IPlonkVerifierInstance<T, P, N> {
1768        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
1769    }
1770    /**A [`IPlonkVerifier`](self) instance.
1771
1772    Contains type-safe methods for interacting with an on-chain instance of the
1773    [`IPlonkVerifier`](self) contract located at a given `address`, using a given
1774    provider `P`.
1775
1776    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1777    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1778    be used to deploy a new instance of the contract.
1779
1780    See the [module-level documentation](self) for all the available methods.*/
1781    #[derive(Clone)]
1782    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
1783        address: alloy_sol_types::private::Address,
1784        provider: P,
1785        _network_transport: ::core::marker::PhantomData<(N, T)>,
1786    }
1787    #[automatically_derived]
1788    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
1789        #[inline]
1790        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1791            f.debug_tuple("IPlonkVerifierInstance")
1792                .field(&self.address)
1793                .finish()
1794        }
1795    }
1796    /// Instantiation and getters/setters.
1797    #[automatically_derived]
1798    impl<
1799            T: alloy_contract::private::Transport + ::core::clone::Clone,
1800            P: alloy_contract::private::Provider<T, N>,
1801            N: alloy_contract::private::Network,
1802        > IPlonkVerifierInstance<T, P, N>
1803    {
1804        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1805
1806        See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1807        #[inline]
1808        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1809            Self {
1810                address,
1811                provider,
1812                _network_transport: ::core::marker::PhantomData,
1813            }
1814        }
1815        /// Returns a reference to the address.
1816        #[inline]
1817        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1818            &self.address
1819        }
1820        /// Sets the address.
1821        #[inline]
1822        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1823            self.address = address;
1824        }
1825        /// Sets the address and returns `self`.
1826        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1827            self.set_address(address);
1828            self
1829        }
1830        /// Returns a reference to the provider.
1831        #[inline]
1832        pub const fn provider(&self) -> &P {
1833            &self.provider
1834        }
1835    }
1836    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
1837        /// Clones the provider and returns a new instance with the cloned provider.
1838        #[inline]
1839        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
1840            IPlonkVerifierInstance {
1841                address: self.address,
1842                provider: ::core::clone::Clone::clone(&self.provider),
1843                _network_transport: ::core::marker::PhantomData,
1844            }
1845        }
1846    }
1847    /// Function calls.
1848    #[automatically_derived]
1849    impl<
1850            T: alloy_contract::private::Transport + ::core::clone::Clone,
1851            P: alloy_contract::private::Provider<T, N>,
1852            N: alloy_contract::private::Network,
1853        > IPlonkVerifierInstance<T, P, N>
1854    {
1855        /// Creates a new call builder using this contract instance's provider and address.
1856        ///
1857        /// Note that the call can be any function call, not just those defined in this
1858        /// contract. Prefer using the other methods for building type-safe contract calls.
1859        pub fn call_builder<C: alloy_sol_types::SolCall>(
1860            &self,
1861            call: &C,
1862        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1863            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1864        }
1865    }
1866    /// Event filters.
1867    #[automatically_derived]
1868    impl<
1869            T: alloy_contract::private::Transport + ::core::clone::Clone,
1870            P: alloy_contract::private::Provider<T, N>,
1871            N: alloy_contract::private::Network,
1872        > IPlonkVerifierInstance<T, P, N>
1873    {
1874        /// Creates a new event filter using this contract instance's provider and address.
1875        ///
1876        /// Note that the type can be any event, not just those defined in this contract.
1877        /// Prefer using the other methods for building type-safe event filters.
1878        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1879            &self,
1880        ) -> alloy_contract::Event<T, &P, E, N> {
1881            alloy_contract::Event::new_sol(&self.provider, &self.address)
1882        }
1883    }
1884}
1885/**
1886
1887Generated by the following Solidity interface...
1888```solidity
1889library BN254 {
1890    type BaseField is uint256;
1891    type ScalarField is uint256;
1892    struct G1Point {
1893        BaseField x;
1894        BaseField y;
1895    }
1896}
1897
1898library IPlonkVerifier {
1899    struct PlonkProof {
1900        BN254.G1Point wire0;
1901        BN254.G1Point wire1;
1902        BN254.G1Point wire2;
1903        BN254.G1Point wire3;
1904        BN254.G1Point wire4;
1905        BN254.G1Point prodPerm;
1906        BN254.G1Point split0;
1907        BN254.G1Point split1;
1908        BN254.G1Point split2;
1909        BN254.G1Point split3;
1910        BN254.G1Point split4;
1911        BN254.G1Point zeta;
1912        BN254.G1Point zetaOmega;
1913        BN254.ScalarField wireEval0;
1914        BN254.ScalarField wireEval1;
1915        BN254.ScalarField wireEval2;
1916        BN254.ScalarField wireEval3;
1917        BN254.ScalarField wireEval4;
1918        BN254.ScalarField sigmaEval0;
1919        BN254.ScalarField sigmaEval1;
1920        BN254.ScalarField sigmaEval2;
1921        BN254.ScalarField sigmaEval3;
1922        BN254.ScalarField prodPermZetaOmegaEval;
1923    }
1924    struct VerifyingKey {
1925        uint256 domainSize;
1926        uint256 numInputs;
1927        BN254.G1Point sigma0;
1928        BN254.G1Point sigma1;
1929        BN254.G1Point sigma2;
1930        BN254.G1Point sigma3;
1931        BN254.G1Point sigma4;
1932        BN254.G1Point q1;
1933        BN254.G1Point q2;
1934        BN254.G1Point q3;
1935        BN254.G1Point q4;
1936        BN254.G1Point qM12;
1937        BN254.G1Point qM34;
1938        BN254.G1Point qO;
1939        BN254.G1Point qC;
1940        BN254.G1Point qH1;
1941        BN254.G1Point qH2;
1942        BN254.G1Point qH3;
1943        BN254.G1Point qH4;
1944        BN254.G1Point qEcc;
1945        bytes32 g2LSB;
1946        bytes32 g2MSB;
1947    }
1948}
1949
1950interface PlonkVerifierV2 {
1951    error InvalidPlonkArgs();
1952    error UnsupportedDegree();
1953    error WrongPlonkVK();
1954
1955    function BETA_H_X0() external view returns (uint256);
1956    function BETA_H_X1() external view returns (uint256);
1957    function BETA_H_Y0() external view returns (uint256);
1958    function BETA_H_Y1() external view returns (uint256);
1959    function COSET_K1() external view returns (uint256);
1960    function COSET_K2() external view returns (uint256);
1961    function COSET_K3() external view returns (uint256);
1962    function COSET_K4() external view returns (uint256);
1963    function verify(IPlonkVerifier.VerifyingKey memory verifyingKey, uint256[11] memory publicInput, IPlonkVerifier.PlonkProof memory proof) external view returns (bool);
1964}
1965```
1966
1967...which was generated by the following JSON ABI:
1968```json
1969[
1970  {
1971    "type": "function",
1972    "name": "BETA_H_X0",
1973    "inputs": [],
1974    "outputs": [
1975      {
1976        "name": "",
1977        "type": "uint256",
1978        "internalType": "uint256"
1979      }
1980    ],
1981    "stateMutability": "view"
1982  },
1983  {
1984    "type": "function",
1985    "name": "BETA_H_X1",
1986    "inputs": [],
1987    "outputs": [
1988      {
1989        "name": "",
1990        "type": "uint256",
1991        "internalType": "uint256"
1992      }
1993    ],
1994    "stateMutability": "view"
1995  },
1996  {
1997    "type": "function",
1998    "name": "BETA_H_Y0",
1999    "inputs": [],
2000    "outputs": [
2001      {
2002        "name": "",
2003        "type": "uint256",
2004        "internalType": "uint256"
2005      }
2006    ],
2007    "stateMutability": "view"
2008  },
2009  {
2010    "type": "function",
2011    "name": "BETA_H_Y1",
2012    "inputs": [],
2013    "outputs": [
2014      {
2015        "name": "",
2016        "type": "uint256",
2017        "internalType": "uint256"
2018      }
2019    ],
2020    "stateMutability": "view"
2021  },
2022  {
2023    "type": "function",
2024    "name": "COSET_K1",
2025    "inputs": [],
2026    "outputs": [
2027      {
2028        "name": "",
2029        "type": "uint256",
2030        "internalType": "uint256"
2031      }
2032    ],
2033    "stateMutability": "view"
2034  },
2035  {
2036    "type": "function",
2037    "name": "COSET_K2",
2038    "inputs": [],
2039    "outputs": [
2040      {
2041        "name": "",
2042        "type": "uint256",
2043        "internalType": "uint256"
2044      }
2045    ],
2046    "stateMutability": "view"
2047  },
2048  {
2049    "type": "function",
2050    "name": "COSET_K3",
2051    "inputs": [],
2052    "outputs": [
2053      {
2054        "name": "",
2055        "type": "uint256",
2056        "internalType": "uint256"
2057      }
2058    ],
2059    "stateMutability": "view"
2060  },
2061  {
2062    "type": "function",
2063    "name": "COSET_K4",
2064    "inputs": [],
2065    "outputs": [
2066      {
2067        "name": "",
2068        "type": "uint256",
2069        "internalType": "uint256"
2070      }
2071    ],
2072    "stateMutability": "view"
2073  },
2074  {
2075    "type": "function",
2076    "name": "verify",
2077    "inputs": [
2078      {
2079        "name": "verifyingKey",
2080        "type": "tuple",
2081        "internalType": "struct IPlonkVerifier.VerifyingKey",
2082        "components": [
2083          {
2084            "name": "domainSize",
2085            "type": "uint256",
2086            "internalType": "uint256"
2087          },
2088          {
2089            "name": "numInputs",
2090            "type": "uint256",
2091            "internalType": "uint256"
2092          },
2093          {
2094            "name": "sigma0",
2095            "type": "tuple",
2096            "internalType": "struct BN254.G1Point",
2097            "components": [
2098              {
2099                "name": "x",
2100                "type": "uint256",
2101                "internalType": "BN254.BaseField"
2102              },
2103              {
2104                "name": "y",
2105                "type": "uint256",
2106                "internalType": "BN254.BaseField"
2107              }
2108            ]
2109          },
2110          {
2111            "name": "sigma1",
2112            "type": "tuple",
2113            "internalType": "struct BN254.G1Point",
2114            "components": [
2115              {
2116                "name": "x",
2117                "type": "uint256",
2118                "internalType": "BN254.BaseField"
2119              },
2120              {
2121                "name": "y",
2122                "type": "uint256",
2123                "internalType": "BN254.BaseField"
2124              }
2125            ]
2126          },
2127          {
2128            "name": "sigma2",
2129            "type": "tuple",
2130            "internalType": "struct BN254.G1Point",
2131            "components": [
2132              {
2133                "name": "x",
2134                "type": "uint256",
2135                "internalType": "BN254.BaseField"
2136              },
2137              {
2138                "name": "y",
2139                "type": "uint256",
2140                "internalType": "BN254.BaseField"
2141              }
2142            ]
2143          },
2144          {
2145            "name": "sigma3",
2146            "type": "tuple",
2147            "internalType": "struct BN254.G1Point",
2148            "components": [
2149              {
2150                "name": "x",
2151                "type": "uint256",
2152                "internalType": "BN254.BaseField"
2153              },
2154              {
2155                "name": "y",
2156                "type": "uint256",
2157                "internalType": "BN254.BaseField"
2158              }
2159            ]
2160          },
2161          {
2162            "name": "sigma4",
2163            "type": "tuple",
2164            "internalType": "struct BN254.G1Point",
2165            "components": [
2166              {
2167                "name": "x",
2168                "type": "uint256",
2169                "internalType": "BN254.BaseField"
2170              },
2171              {
2172                "name": "y",
2173                "type": "uint256",
2174                "internalType": "BN254.BaseField"
2175              }
2176            ]
2177          },
2178          {
2179            "name": "q1",
2180            "type": "tuple",
2181            "internalType": "struct BN254.G1Point",
2182            "components": [
2183              {
2184                "name": "x",
2185                "type": "uint256",
2186                "internalType": "BN254.BaseField"
2187              },
2188              {
2189                "name": "y",
2190                "type": "uint256",
2191                "internalType": "BN254.BaseField"
2192              }
2193            ]
2194          },
2195          {
2196            "name": "q2",
2197            "type": "tuple",
2198            "internalType": "struct BN254.G1Point",
2199            "components": [
2200              {
2201                "name": "x",
2202                "type": "uint256",
2203                "internalType": "BN254.BaseField"
2204              },
2205              {
2206                "name": "y",
2207                "type": "uint256",
2208                "internalType": "BN254.BaseField"
2209              }
2210            ]
2211          },
2212          {
2213            "name": "q3",
2214            "type": "tuple",
2215            "internalType": "struct BN254.G1Point",
2216            "components": [
2217              {
2218                "name": "x",
2219                "type": "uint256",
2220                "internalType": "BN254.BaseField"
2221              },
2222              {
2223                "name": "y",
2224                "type": "uint256",
2225                "internalType": "BN254.BaseField"
2226              }
2227            ]
2228          },
2229          {
2230            "name": "q4",
2231            "type": "tuple",
2232            "internalType": "struct BN254.G1Point",
2233            "components": [
2234              {
2235                "name": "x",
2236                "type": "uint256",
2237                "internalType": "BN254.BaseField"
2238              },
2239              {
2240                "name": "y",
2241                "type": "uint256",
2242                "internalType": "BN254.BaseField"
2243              }
2244            ]
2245          },
2246          {
2247            "name": "qM12",
2248            "type": "tuple",
2249            "internalType": "struct BN254.G1Point",
2250            "components": [
2251              {
2252                "name": "x",
2253                "type": "uint256",
2254                "internalType": "BN254.BaseField"
2255              },
2256              {
2257                "name": "y",
2258                "type": "uint256",
2259                "internalType": "BN254.BaseField"
2260              }
2261            ]
2262          },
2263          {
2264            "name": "qM34",
2265            "type": "tuple",
2266            "internalType": "struct BN254.G1Point",
2267            "components": [
2268              {
2269                "name": "x",
2270                "type": "uint256",
2271                "internalType": "BN254.BaseField"
2272              },
2273              {
2274                "name": "y",
2275                "type": "uint256",
2276                "internalType": "BN254.BaseField"
2277              }
2278            ]
2279          },
2280          {
2281            "name": "qO",
2282            "type": "tuple",
2283            "internalType": "struct BN254.G1Point",
2284            "components": [
2285              {
2286                "name": "x",
2287                "type": "uint256",
2288                "internalType": "BN254.BaseField"
2289              },
2290              {
2291                "name": "y",
2292                "type": "uint256",
2293                "internalType": "BN254.BaseField"
2294              }
2295            ]
2296          },
2297          {
2298            "name": "qC",
2299            "type": "tuple",
2300            "internalType": "struct BN254.G1Point",
2301            "components": [
2302              {
2303                "name": "x",
2304                "type": "uint256",
2305                "internalType": "BN254.BaseField"
2306              },
2307              {
2308                "name": "y",
2309                "type": "uint256",
2310                "internalType": "BN254.BaseField"
2311              }
2312            ]
2313          },
2314          {
2315            "name": "qH1",
2316            "type": "tuple",
2317            "internalType": "struct BN254.G1Point",
2318            "components": [
2319              {
2320                "name": "x",
2321                "type": "uint256",
2322                "internalType": "BN254.BaseField"
2323              },
2324              {
2325                "name": "y",
2326                "type": "uint256",
2327                "internalType": "BN254.BaseField"
2328              }
2329            ]
2330          },
2331          {
2332            "name": "qH2",
2333            "type": "tuple",
2334            "internalType": "struct BN254.G1Point",
2335            "components": [
2336              {
2337                "name": "x",
2338                "type": "uint256",
2339                "internalType": "BN254.BaseField"
2340              },
2341              {
2342                "name": "y",
2343                "type": "uint256",
2344                "internalType": "BN254.BaseField"
2345              }
2346            ]
2347          },
2348          {
2349            "name": "qH3",
2350            "type": "tuple",
2351            "internalType": "struct BN254.G1Point",
2352            "components": [
2353              {
2354                "name": "x",
2355                "type": "uint256",
2356                "internalType": "BN254.BaseField"
2357              },
2358              {
2359                "name": "y",
2360                "type": "uint256",
2361                "internalType": "BN254.BaseField"
2362              }
2363            ]
2364          },
2365          {
2366            "name": "qH4",
2367            "type": "tuple",
2368            "internalType": "struct BN254.G1Point",
2369            "components": [
2370              {
2371                "name": "x",
2372                "type": "uint256",
2373                "internalType": "BN254.BaseField"
2374              },
2375              {
2376                "name": "y",
2377                "type": "uint256",
2378                "internalType": "BN254.BaseField"
2379              }
2380            ]
2381          },
2382          {
2383            "name": "qEcc",
2384            "type": "tuple",
2385            "internalType": "struct BN254.G1Point",
2386            "components": [
2387              {
2388                "name": "x",
2389                "type": "uint256",
2390                "internalType": "BN254.BaseField"
2391              },
2392              {
2393                "name": "y",
2394                "type": "uint256",
2395                "internalType": "BN254.BaseField"
2396              }
2397            ]
2398          },
2399          {
2400            "name": "g2LSB",
2401            "type": "bytes32",
2402            "internalType": "bytes32"
2403          },
2404          {
2405            "name": "g2MSB",
2406            "type": "bytes32",
2407            "internalType": "bytes32"
2408          }
2409        ]
2410      },
2411      {
2412        "name": "publicInput",
2413        "type": "uint256[11]",
2414        "internalType": "uint256[11]"
2415      },
2416      {
2417        "name": "proof",
2418        "type": "tuple",
2419        "internalType": "struct IPlonkVerifier.PlonkProof",
2420        "components": [
2421          {
2422            "name": "wire0",
2423            "type": "tuple",
2424            "internalType": "struct BN254.G1Point",
2425            "components": [
2426              {
2427                "name": "x",
2428                "type": "uint256",
2429                "internalType": "BN254.BaseField"
2430              },
2431              {
2432                "name": "y",
2433                "type": "uint256",
2434                "internalType": "BN254.BaseField"
2435              }
2436            ]
2437          },
2438          {
2439            "name": "wire1",
2440            "type": "tuple",
2441            "internalType": "struct BN254.G1Point",
2442            "components": [
2443              {
2444                "name": "x",
2445                "type": "uint256",
2446                "internalType": "BN254.BaseField"
2447              },
2448              {
2449                "name": "y",
2450                "type": "uint256",
2451                "internalType": "BN254.BaseField"
2452              }
2453            ]
2454          },
2455          {
2456            "name": "wire2",
2457            "type": "tuple",
2458            "internalType": "struct BN254.G1Point",
2459            "components": [
2460              {
2461                "name": "x",
2462                "type": "uint256",
2463                "internalType": "BN254.BaseField"
2464              },
2465              {
2466                "name": "y",
2467                "type": "uint256",
2468                "internalType": "BN254.BaseField"
2469              }
2470            ]
2471          },
2472          {
2473            "name": "wire3",
2474            "type": "tuple",
2475            "internalType": "struct BN254.G1Point",
2476            "components": [
2477              {
2478                "name": "x",
2479                "type": "uint256",
2480                "internalType": "BN254.BaseField"
2481              },
2482              {
2483                "name": "y",
2484                "type": "uint256",
2485                "internalType": "BN254.BaseField"
2486              }
2487            ]
2488          },
2489          {
2490            "name": "wire4",
2491            "type": "tuple",
2492            "internalType": "struct BN254.G1Point",
2493            "components": [
2494              {
2495                "name": "x",
2496                "type": "uint256",
2497                "internalType": "BN254.BaseField"
2498              },
2499              {
2500                "name": "y",
2501                "type": "uint256",
2502                "internalType": "BN254.BaseField"
2503              }
2504            ]
2505          },
2506          {
2507            "name": "prodPerm",
2508            "type": "tuple",
2509            "internalType": "struct BN254.G1Point",
2510            "components": [
2511              {
2512                "name": "x",
2513                "type": "uint256",
2514                "internalType": "BN254.BaseField"
2515              },
2516              {
2517                "name": "y",
2518                "type": "uint256",
2519                "internalType": "BN254.BaseField"
2520              }
2521            ]
2522          },
2523          {
2524            "name": "split0",
2525            "type": "tuple",
2526            "internalType": "struct BN254.G1Point",
2527            "components": [
2528              {
2529                "name": "x",
2530                "type": "uint256",
2531                "internalType": "BN254.BaseField"
2532              },
2533              {
2534                "name": "y",
2535                "type": "uint256",
2536                "internalType": "BN254.BaseField"
2537              }
2538            ]
2539          },
2540          {
2541            "name": "split1",
2542            "type": "tuple",
2543            "internalType": "struct BN254.G1Point",
2544            "components": [
2545              {
2546                "name": "x",
2547                "type": "uint256",
2548                "internalType": "BN254.BaseField"
2549              },
2550              {
2551                "name": "y",
2552                "type": "uint256",
2553                "internalType": "BN254.BaseField"
2554              }
2555            ]
2556          },
2557          {
2558            "name": "split2",
2559            "type": "tuple",
2560            "internalType": "struct BN254.G1Point",
2561            "components": [
2562              {
2563                "name": "x",
2564                "type": "uint256",
2565                "internalType": "BN254.BaseField"
2566              },
2567              {
2568                "name": "y",
2569                "type": "uint256",
2570                "internalType": "BN254.BaseField"
2571              }
2572            ]
2573          },
2574          {
2575            "name": "split3",
2576            "type": "tuple",
2577            "internalType": "struct BN254.G1Point",
2578            "components": [
2579              {
2580                "name": "x",
2581                "type": "uint256",
2582                "internalType": "BN254.BaseField"
2583              },
2584              {
2585                "name": "y",
2586                "type": "uint256",
2587                "internalType": "BN254.BaseField"
2588              }
2589            ]
2590          },
2591          {
2592            "name": "split4",
2593            "type": "tuple",
2594            "internalType": "struct BN254.G1Point",
2595            "components": [
2596              {
2597                "name": "x",
2598                "type": "uint256",
2599                "internalType": "BN254.BaseField"
2600              },
2601              {
2602                "name": "y",
2603                "type": "uint256",
2604                "internalType": "BN254.BaseField"
2605              }
2606            ]
2607          },
2608          {
2609            "name": "zeta",
2610            "type": "tuple",
2611            "internalType": "struct BN254.G1Point",
2612            "components": [
2613              {
2614                "name": "x",
2615                "type": "uint256",
2616                "internalType": "BN254.BaseField"
2617              },
2618              {
2619                "name": "y",
2620                "type": "uint256",
2621                "internalType": "BN254.BaseField"
2622              }
2623            ]
2624          },
2625          {
2626            "name": "zetaOmega",
2627            "type": "tuple",
2628            "internalType": "struct BN254.G1Point",
2629            "components": [
2630              {
2631                "name": "x",
2632                "type": "uint256",
2633                "internalType": "BN254.BaseField"
2634              },
2635              {
2636                "name": "y",
2637                "type": "uint256",
2638                "internalType": "BN254.BaseField"
2639              }
2640            ]
2641          },
2642          {
2643            "name": "wireEval0",
2644            "type": "uint256",
2645            "internalType": "BN254.ScalarField"
2646          },
2647          {
2648            "name": "wireEval1",
2649            "type": "uint256",
2650            "internalType": "BN254.ScalarField"
2651          },
2652          {
2653            "name": "wireEval2",
2654            "type": "uint256",
2655            "internalType": "BN254.ScalarField"
2656          },
2657          {
2658            "name": "wireEval3",
2659            "type": "uint256",
2660            "internalType": "BN254.ScalarField"
2661          },
2662          {
2663            "name": "wireEval4",
2664            "type": "uint256",
2665            "internalType": "BN254.ScalarField"
2666          },
2667          {
2668            "name": "sigmaEval0",
2669            "type": "uint256",
2670            "internalType": "BN254.ScalarField"
2671          },
2672          {
2673            "name": "sigmaEval1",
2674            "type": "uint256",
2675            "internalType": "BN254.ScalarField"
2676          },
2677          {
2678            "name": "sigmaEval2",
2679            "type": "uint256",
2680            "internalType": "BN254.ScalarField"
2681          },
2682          {
2683            "name": "sigmaEval3",
2684            "type": "uint256",
2685            "internalType": "BN254.ScalarField"
2686          },
2687          {
2688            "name": "prodPermZetaOmegaEval",
2689            "type": "uint256",
2690            "internalType": "BN254.ScalarField"
2691          }
2692        ]
2693      }
2694    ],
2695    "outputs": [
2696      {
2697        "name": "",
2698        "type": "bool",
2699        "internalType": "bool"
2700      }
2701    ],
2702    "stateMutability": "view"
2703  },
2704  {
2705    "type": "error",
2706    "name": "InvalidPlonkArgs",
2707    "inputs": []
2708  },
2709  {
2710    "type": "error",
2711    "name": "UnsupportedDegree",
2712    "inputs": []
2713  },
2714  {
2715    "type": "error",
2716    "name": "WrongPlonkVK",
2717    "inputs": []
2718  }
2719]
2720```*/
2721#[allow(
2722    non_camel_case_types,
2723    non_snake_case,
2724    clippy::pub_underscore_fields,
2725    clippy::style,
2726    clippy::empty_structs_with_brackets
2727)]
2728pub mod PlonkVerifierV2 {
2729    use alloy::sol_types as alloy_sol_types;
2730
2731    use super::*;
2732    /// The creation / init bytecode of the contract.
2733    ///
2734    /// ```text
2735    ///0x612673610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061009b575f3560e01c8063af196ba21161006e578063af196ba21461014e578063de24ac0f14610175578063e3512d561461019c578063f5144326146101c3578063fc8660c7146101ea575f5ffd5b80630c551f3f1461009f5780634b4734e3146100d95780635a14c0fe14610100578063834c452a14610127575b5f5ffd5b6100c67f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02581565b6040519081526020015b60405180910390f35b6100c67f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581565b6100c67f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a81565b6100c67f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181565b6100c67f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081565b6100c67f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88181565b6100c67f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a81565b6100c67f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481565b6101fd6101f8366004612407565b61020d565b60405190151581526020016100d0565b5f610217826102aa565b610227835f5b60200201516103e5565b61023283600161021d565b61023d83600261021d565b61024883600361021d565b61025383600461021d565b61025e83600561021d565b61026983600661021d565b61027483600761021d565b61027f83600861021d565b61028a83600961021d565b61029583600a61021d565b6102a084848461044b565b90505b9392505050565b80516102b59061063f565b6102c2816020015161063f565b6102cf816040015161063f565b6102dc816060015161063f565b6102e9816080015161063f565b6102f68160a0015161063f565b6103038160c0015161063f565b6103108160e0015161063f565b61031e81610100015161063f565b61032c81610120015161063f565b61033a81610140015161063f565b61034881610160015161063f565b61035681610180015161063f565b610364816101a001516103e5565b610372816101c001516103e5565b610380816101e001516103e5565b61038e8161020001516103e5565b61039c8161022001516103e5565b6103aa8161024001516103e5565b6103b88161026001516103e5565b6103c68161028001516103e5565b6103d4816102a001516103e5565b6103e2816102c001516103e5565b50565b5f5160206126475f395f51905f528110806104475760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c64000000000060448201526064015b60405180910390fd5b5050565b5f8360200151600b14610471576040516320fa9d8960e11b815260040160405180910390fd5b5f61047d8585856106ed565b90505f61048c865f0151610c7c565b90505f61049e828460a0015188611223565b90506104bb60405180604001604052805f81526020015f81525090565b604080518082019091525f80825260208201526104ef8761016001516104ea8961018001518860e00151611280565b611321565b91505f5f6104ff8b88878c6113c5565b91509150610510816104ea846115fd565b9250610529836104ea8b61016001518a60a00151611280565b60a08801516040880151602001519194505f5160206126475f395f51905f52918290820990508160e08a01518209905061056c856104ea8d610180015184611280565b94505f60405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4815250905061062d8782610620896115fd565b61062861169a565b611767565b9e9d5050505050505050505050505050565b805160208201515f917f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4791159015161561067857505050565b8251602084015182600384858586098509088382830914838210848410161693505050816106e85760405162461bcd60e51b815260206004820152601760248201527f426e3235343a20696e76616c696420473120706f696e74000000000000000000604482015260640161043e565b505050565b61072d6040518061010001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f5f5160206126475f395f51905f529050604051602081015f815260fe60e01b8152865160c01b6004820152602087015160c01b600c82015261028087015160208201526102a08701516040820152600160608201527f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a60808201527f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02560a08201527f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a60c08201527f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88160e082015260e087015180516101008301526020810151610120830152506101008701518051610140830152602081015161016083015250610120870151805161018083015260208101516101a08301525061014087015180516101c083015260208101516101e083015250610160870151805161020083015260208101516102208301525061018087015180516102408301526020810151610260830152506101e0870151805161028083015260208101516102a08301525061020087015180516102c083015260208101516102e083015250610220870151805161030083015260208101516103208301525061024087015180516103408301526020810151610360830152506101a0870151805161038083015260208101516103a0830152506101c087015180516103c083015260208101516103e0830152506102608701518051610400830152602081015161042083015250604087015180516104408301526020810151610460830152506060870151805161048083015260208101516104a083015250608087015180516104c083015260208101516104e08301525060a0870151805161050083015260208101516105208301525060c08701518051610540830152602081015161056083015250855161058082015260208601516105a082015260408601516105c082015260608601516105e0820152608086015161060082015260a086015161062082015260c086015161064082015260e08601516106608201526101008601516106808201526101208601516106a08201526101408601516106c0820152845180516106e08301526020810151610700830152506020850151805161072083015260208101516107408301525060408501518051610760830152602081015161078083015250606085015180516107a083015260208101516107c083015250608085015180516107e08301526020810151610800830152505f82526108408220825282825106606085015260208220825282825106608085015260a085015180518252602081015160208301525060608220808352838106855283818209848282099150806020870152508060408601525060c085015180518252602081015160208301525060e085015180516040830152602081015160608301525061010085015180516080830152602081015160a083015250610120850151805160c0830152602081015160e0830152506101408501518051610100830152602081015161012083015250610160822082528282510660a08501526101a085015181526101c085015160208201526101e085015160408201526102008501516060820152610220850151608082015261024085015160a082015261026085015160c082015261028085015160e08201526102a08501516101008201526102c0850151610120820152610160822082528282510660c08501526101608501518051825260208101516020830152506101808501518051604083015260208101516060830152505060a0812082810660e08501525050509392505050565b610c846120e1565b816201000003610e5b576040518060600160405280601081526020017f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c10018152602001604051806101600160405280600181526020017eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b781526020017f2d1ba66f5941dc91017171fa69ec2bd0022a2a2d4115a009a93458fd4e26ecfb81526020017f086812a00ac43ea801669c640171203c41a496671bfbc065ac8db24d52cf31e581526020017f2d965651cdd9e4811f4e51b80ddca8a8b4a93ee17420aae6adaa01c2617c6e8581526020017f12597a56c2e438620b9041b98992ae0d4e705b780057bf7766a2767cece16e1d81526020017f02d94117cd17bcf1290fd67c01155dd40807857dff4a5a0b4dc67befa8aa34fd81526020017f15ee2475bee517c4ee05e51fa1ee7312a8373a0b13db8c51baf04cb2e99bd2bd81526020017e6fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd31081526020017f2e856bf6d037708ffa4c06d4d8820f45ccadce9c5a6d178cbd573f82e0f9701181526020017f1407eee35993f2b1ad5ec6d9b8950ca3af33135d06037f871c5e33bf566dd7b48152508152509050919050565b816210000003611034576040518060600160405280601481526020017f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c1018152602001604051806101600160405280600181526020017f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785781526020017f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd81526020017f2087ea2cd664278608fb0ebdb820907f598502c81b6690c185e2bf15cb935f4281526020017f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e081526020017f05a2c85cfc591789605cae818e37dd4161eef9aa666bec6fe4288d09e6d2341881526020017f11f70e5363258ff4f0d716a653e1dc41f1c64484d7f4b6e219d6377614a3905c81526020017f29e84143f5870d4776a92df8da8c6c9303d59088f37ba85f40cf6fd14265b4bc81526020017f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e581526020017f22b94b2e2b0043d04e662d5ec018ea1c8a99a23a62c9eb46f0318f6a194985f081526020017f29969d8d5363bef1101a68e446a14e1da7ba9294e142a146a980fddb4d4d41a58152508152509050919050565b8160200361120a576040518060600160405280600581526020017f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e7508000018152602001604051806101600160405280600181526020017f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d081526020017f21082ca216cbbf4e1c6e4f4594dd508c996dfbe1174efb98b11509c6e306460b81526020017f1277ae6415f0ef18f2ba5fb162c39eb7311f386e2d26d64401f4a25da77c253b81526020017f2b337de1c8c14f22ec9b9e2f96afef3652627366f8170a0a948dad4ac1bd5e8081526020017f2fbd4dd2976be55d1a163aa9820fb88dfac5ddce77e1872e90632027327a5ebe81526020017f107aab49e65a67f9da9cd2abf78be38bd9dc1d5db39f81de36bcfa5b4b03904381526020017ee14b6364a47e9c4284a9f80a5fc41cd212b0d4dbf8a5703770a40a9a34399081526020017f30644e72e131a029048b6e193fd841045cea24f6fd736bec231204708f70363681526020017f22399c34139bffada8de046aac50c9628e3517a3a452795364e777cd65bb9f4881526020017f2290ee31c482cf92b79b1944db1c0147635e9004db8c3b9d13644bef31ec3bd38152508152509050919050565b60405163e2ef09e560e01b815260040160405180910390fd5b61124460405180606001604052805f81526020015f81526020015f81525090565b61124e8484611847565b80825261125e9085908590611898565b6020820152805161127490859084908690611907565b60408201529392505050565b604080518082019091525f808252602082015261129b612105565b8351815260208085015190820152604081018390525f60608360808460076107d05a03fa905080806112cb575f5ffd5b50806113195760405162461bcd60e51b815260206004820152601960248201527f426e3235343a207363616c6172206d756c206661696c65642100000000000000604482015260640161043e565b505092915050565b604080518082019091525f808252602082015261133c612123565b8351815260208085015181830152835160408301528301516060808301919091525f908360c08460066107d05a03fa90508080611377575f5ffd5b50806113195760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a2067726f7570206164646974696f6e206661696c656421000000604482015260640161043e565b604080518082019091525f8082526020820152604080518082019091525f80825260208201525f6113f887878787611a56565b90505f5160206126475f395f51905f525f611414888789611f20565b905061142081836125f4565b60c08901516101a08801519192509081908490819083098408925061144c856104ea8a5f015184611280565b955083828209905083846101c08a0151830984089250611474866104ea8a6020015184611280565b955083828209905083846101e08a015183098408925061149c866104ea8a6040015184611280565b955083828209905083846102008a01518309840892506114c4866104ea8a6060015184611280565b955083828209905083846102208a01518309840892506114ec866104ea8a6080015184611280565b955083828209905083846102408a0151830984089250611514866104ea8d6040015184611280565b955083828209905083846102608a015183098408925061153c866104ea8d6060015184611280565b955083828209905083846102808a0151830984089250611564866104ea8d6080015184611280565b955083828209905083846102a08a015183098408925061158c866104ea8d60a0015184611280565b95505f8a60e00151905084856102c08b01518309850893506115b6876104ea8b60a0015184611280565b96506115ec6115e66040805180820182525f80825260209182015281518083019092526001825260029082015290565b85611280565b975050505050505094509492505050565b604080518082019091525f8082526020820152815160208301511590151615611624575090565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516116689190612627565b611692907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476125f4565b905292915050565b6116c160405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806118395760405162461bcd60e51b815260206004820152601c60248201527f426e3235343a2050616972696e6720636865636b206661696c65642100000000604482015260640161043e565b50151590505b949350505050565b81515f905f5160206126475f395f51905f5290838015611888578493505f5b8281101561187c57838586099450600101611866565b5060018403935061188f565b6001830393505b50505092915050565b5f826001036118a9575060016102a3565b815f036118b757505f6102a3565b60208401515f5160206126475f395f51905f52905f908281860990508580156118e5576001870392506118ec565b6001840392505b506118f68261200b565b915082828209979650505050505050565b5f5f5160206126475f395f51905f528282036119805760015f5b600b81101561197557818603611952578681600b8110611943576119436125e0565b6020020151935050505061183f565b828061196057611960612613565b60408901516020015183099150600101611921565b505f9250505061183f565b611988612141565b60408701516001610140838101828152920190805b600b8110156119ca5760208403935085868a85518903088309808552601f1990930192915060010161199d565b505050505f5f5f90506001838960408c01515f5b600b811015611a1e578882518a85518c88518a0909098981880896505088898d84518c0308860994506020938401939283019291909101906001016119de565b50505050809250505f611a308361200b565b905060208a015185818909965050848187099550848287099a9950505050505050505050565b604080518082019091525f80825260208201525f5f5f5f5f5f5160206126475f395f51905f52905060808901518160208a015160208c0151099550895194508160a08b015160608c0151099350816101a089015185089250818184089250818584099450817f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a85099250816101c089015184089250818184089250818584099450817f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02585099250816101e089015184089250818184089250818584099450817f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a850992508161020089015184089250818184089250818584099450817f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88185099250816102208901518408925081818408925050808483099350808486089450611bc38760a0015186611280565b9550885160608a015160808b0151838284099750836102c08b015189099750836102408b015183099550836101a08b015187089550838187089550838689099750836102608b015183099550836101c08b015187089550838187089550838689099750836102808b015183099550836101e08b015187089550838187089550838689099750836102a08b015183099550836102008b015187089550838187089550505050808386099450611c8a866104ea8c60c001518885611c8591906125f4565b611280565b9550611ca3866104ea8c60e001518a6101a00151611280565b9550611cbd866104ea8c61010001518a6101c00151611280565b9550611cd7866104ea8c61012001518a6101e00151611280565b9550611cf1866104ea8c61014001518a6102000151611280565b9550806101c08801516101a0890151099250611d16866104ea8c610160015186611280565b9550806102008801516101e0890151099250611d3b866104ea8c610180015186611280565b95506101a08701519250808384099150808283099150808284099250611d6a866104ea8c6101e0015186611280565b95506101c08701519250808384099150808283099150808284099250611d99866104ea8c610200015186611280565b95506101e08701519250808384099150808283099150808284099250611dc8866104ea8c610220015186611280565b95506102008701519250808384099150808283099150808284099250611df7866104ea8c610240015186611280565b9550611e14866104ea8c6101a00151611c858b61022001516120ac565b9550611e25868b6101c00151611321565b9550806101c08801516101a0890151099250806101e08801518409925080610200880151840992508061022088015184099250611e6b866104ea8c610260015186611280565b9550611e79885f01516120ac565b9450611e8d866104ea8960c0015188611280565b955080600189510860a08a0151909350819080099150808284099250808386099450611ec1866104ea8960e0015188611280565b9550808386099450611edc866104ea89610100015188611280565b9550808386099450611ef7866104ea89610120015188611280565b9550808386099450611f12866104ea89610140015188611280565b9a9950505050505050505050565b5f5f5f5160206126475f395f51905f5290505f836020015190505f846040015190505f60019050606088015160808901516101a08901516102408a01518788898387098a868608088609945050506101c08901516102608a01518788898387098a868608088609945050506101e08901516102808a01518788898387098a868608088609945050506102008901516102a08a01518788898387098a8686080886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b5f5f5f5f5160206126475f395f51905f52905060405160208152602080820152602060408201528460608201526002820360808201528160a082015260205f60c08360055afa9250505f519250816120a55760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a20706f7720707265636f6d70696c65206661696c656421000000604482015260640161043e565b5050919050565b5f6120c45f5160206126475f395f51905f5283612627565b6120db905f5160206126475f395f51905f526125f4565b92915050565b60405180606001604052805f81526020015f8152602001612100612141565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101600160405280600b906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516102e0810167ffffffffffffffff8111828210171561219857612198612160565b60405290565b6040516102c0810167ffffffffffffffff8111828210171561219857612198612160565b5f604082840312156121d2575f5ffd5b6040805190810167ffffffffffffffff811182821017156121f5576121f5612160565b604052823581526020928301359281019290925250919050565b5f82601f83011261221e575f5ffd5b604051610160810167ffffffffffffffff8111828210171561224257612242612160565b60405280610160840185811115612257575f5ffd5b845b81811015612271578035835260209283019201612259565b509195945050505050565b5f610480828403121561228d575f5ffd5b612295612174565b90506122a183836121c2565b81526122b083604084016121c2565b60208201526122c283608084016121c2565b60408201526122d48360c084016121c2565b60608201526122e78361010084016121c2565b60808201526122fa8361014084016121c2565b60a082015261230d8361018084016121c2565b60c0820152612320836101c084016121c2565b60e08201526123338361020084016121c2565b6101008201526123478361024084016121c2565b61012082015261235b8361028084016121c2565b61014082015261236f836102c084016121c2565b6101608201526123838361030084016121c2565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f5f838503610ae081121561241b575f5ffd5b610500811215612429575f5ffd5b5061243261219e565b843581526020808601359082015261244d86604087016121c2565b604082015261245f86608087016121c2565b60608201526124718660c087016121c2565b60808201526124848661010087016121c2565b60a08201526124978661014087016121c2565b60c08201526124aa8661018087016121c2565b60e08201526124bd866101c087016121c2565b6101008201526124d18661020087016121c2565b6101208201526124e58661024087016121c2565b6101408201526124f98661028087016121c2565b61016082015261250d866102c087016121c2565b6101808201526125218661030087016121c2565b6101a08201526125358661034087016121c2565b6101c08201526125498661038087016121c2565b6101e082015261255d866103c087016121c2565b6102008201526125718661040087016121c2565b6102208201526125858661044087016121c2565b6102408201526125998661048087016121c2565b6102608201526104c08501356102808201526104e08501356102a082015292506125c785610500860161220f565b91506125d785610660860161227c565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b818103818111156120db57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261264157634e487b7160e01b5f52601260045260245ffd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300081c000a
2736    /// ```
2737    #[rustfmt::skip]
2738    #[allow(clippy::all)]
2739    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2740        b"a&sa\x004`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`(WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\0\x9BW_5`\xE0\x1C\x80c\xAF\x19k\xA2\x11a\0nW\x80c\xAF\x19k\xA2\x14a\x01NW\x80c\xDE$\xAC\x0F\x14a\x01uW\x80c\xE3Q-V\x14a\x01\x9CW\x80c\xF5\x14C&\x14a\x01\xC3W\x80c\xFC\x86`\xC7\x14a\x01\xEAW__\xFD[\x80c\x0CU\x1F?\x14a\0\x9FW\x80cKG4\xE3\x14a\0\xD9W\x80cZ\x14\xC0\xFE\x14a\x01\0W\x80c\x83LE*\x14a\x01'W[__\xFD[a\0\xC6\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC6\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81V[a\0\xC6\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x81V[a\0\xC6\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81V[a\0\xC6\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81V[a\0\xC6\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x81V[a\0\xC6\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x81V[a\0\xC6\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81V[a\x01\xFDa\x01\xF86`\x04a$\x07V[a\x02\rV[`@Q\x90\x15\x15\x81R` \x01a\0\xD0V[_a\x02\x17\x82a\x02\xAAV[a\x02'\x83_[` \x02\x01Qa\x03\xE5V[a\x022\x83`\x01a\x02\x1DV[a\x02=\x83`\x02a\x02\x1DV[a\x02H\x83`\x03a\x02\x1DV[a\x02S\x83`\x04a\x02\x1DV[a\x02^\x83`\x05a\x02\x1DV[a\x02i\x83`\x06a\x02\x1DV[a\x02t\x83`\x07a\x02\x1DV[a\x02\x7F\x83`\x08a\x02\x1DV[a\x02\x8A\x83`\ta\x02\x1DV[a\x02\x95\x83`\na\x02\x1DV[a\x02\xA0\x84\x84\x84a\x04KV[\x90P[\x93\x92PPPV[\x80Qa\x02\xB5\x90a\x06?V[a\x02\xC2\x81` \x01Qa\x06?V[a\x02\xCF\x81`@\x01Qa\x06?V[a\x02\xDC\x81``\x01Qa\x06?V[a\x02\xE9\x81`\x80\x01Qa\x06?V[a\x02\xF6\x81`\xA0\x01Qa\x06?V[a\x03\x03\x81`\xC0\x01Qa\x06?V[a\x03\x10\x81`\xE0\x01Qa\x06?V[a\x03\x1E\x81a\x01\0\x01Qa\x06?V[a\x03,\x81a\x01 \x01Qa\x06?V[a\x03:\x81a\x01@\x01Qa\x06?V[a\x03H\x81a\x01`\x01Qa\x06?V[a\x03V\x81a\x01\x80\x01Qa\x06?V[a\x03d\x81a\x01\xA0\x01Qa\x03\xE5V[a\x03r\x81a\x01\xC0\x01Qa\x03\xE5V[a\x03\x80\x81a\x01\xE0\x01Qa\x03\xE5V[a\x03\x8E\x81a\x02\0\x01Qa\x03\xE5V[a\x03\x9C\x81a\x02 \x01Qa\x03\xE5V[a\x03\xAA\x81a\x02@\x01Qa\x03\xE5V[a\x03\xB8\x81a\x02`\x01Qa\x03\xE5V[a\x03\xC6\x81a\x02\x80\x01Qa\x03\xE5V[a\x03\xD4\x81a\x02\xA0\x01Qa\x03\xE5V[a\x03\xE2\x81a\x02\xC0\x01Qa\x03\xE5V[PV[_Q` a&G_9_Q\x90_R\x81\x10\x80a\x04GW`@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\x01[`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x0B\x14a\x04qW`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x04}\x85\x85\x85a\x06\xEDV[\x90P_a\x04\x8C\x86_\x01Qa\x0C|V[\x90P_a\x04\x9E\x82\x84`\xA0\x01Q\x88a\x12#V[\x90Pa\x04\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x04\xEF\x87a\x01`\x01Qa\x04\xEA\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x12\x80V[a\x13!V[\x91P__a\x04\xFF\x8B\x88\x87\x8Ca\x13\xC5V[\x91P\x91Pa\x05\x10\x81a\x04\xEA\x84a\x15\xFDV[\x92Pa\x05)\x83a\x04\xEA\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x12\x80V[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a&G_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x05l\x85a\x04\xEA\x8Da\x01\x80\x01Q\x84a\x12\x80V[\x94P_`@Q\x80`\x80\x01`@R\x80\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81R` \x01\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81R` \x01\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81R` \x01\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81RP\x90Pa\x06-\x87\x82a\x06 \x89a\x15\xFDV[a\x06(a\x16\x9AV[a\x17gV[\x9E\x9DPPPPPPPPPPPPPPV[\x80Q` \x82\x01Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x91\x15\x90\x15\x16\x15a\x06xWPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x06\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FBn254: invalid G1 point\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04>V[PPPV[a\x07-`@Q\x80a\x01\0\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[__Q` a&G_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R`\xE0\x86\x01Qa\x06`\x82\x01Ra\x01\0\x86\x01Qa\x06\x80\x82\x01Ra\x01 \x86\x01Qa\x06\xA0\x82\x01Ra\x01@\x86\x01Qa\x06\xC0\x82\x01R\x84Q\x80Qa\x06\xE0\x83\x01R` \x81\x01Qa\x07\0\x83\x01RP` \x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`@\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP``\x85\x01Q\x80Qa\x07\xA0\x83\x01R` \x81\x01Qa\x07\xC0\x83\x01RP`\x80\x85\x01Q\x80Qa\x07\xE0\x83\x01R` \x81\x01Qa\x08\0\x83\x01RP_\x82Ra\x08@\x82 \x82R\x82\x82Q\x06``\x85\x01R` \x82 \x82R\x82\x82Q\x06`\x80\x85\x01R`\xA0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP``\x82 \x80\x83R\x83\x81\x06\x85R\x83\x81\x82\t\x84\x82\x82\t\x91P\x80` \x87\x01RP\x80`@\x86\x01RP`\xC0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP`\xE0\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPa\x01\0\x85\x01Q\x80Q`\x80\x83\x01R` \x81\x01Q`\xA0\x83\x01RPa\x01 \x85\x01Q\x80Q`\xC0\x83\x01R` \x81\x01Q`\xE0\x83\x01RPa\x01@\x85\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01`\x82 \x82R\x82\x82Q\x06`\xA0\x85\x01Ra\x01\xA0\x85\x01Q\x81Ra\x01\xC0\x85\x01Q` \x82\x01Ra\x01\xE0\x85\x01Q`@\x82\x01Ra\x02\0\x85\x01Q``\x82\x01Ra\x02 \x85\x01Q`\x80\x82\x01Ra\x02@\x85\x01Q`\xA0\x82\x01Ra\x02`\x85\x01Q`\xC0\x82\x01Ra\x02\x80\x85\x01Q`\xE0\x82\x01Ra\x02\xA0\x85\x01Qa\x01\0\x82\x01Ra\x02\xC0\x85\x01Qa\x01 \x82\x01Ra\x01`\x82 \x82R\x82\x82Q\x06`\xC0\x85\x01Ra\x01`\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RPa\x01\x80\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPP`\xA0\x81 \x82\x81\x06`\xE0\x85\x01RPPP\x93\x92PPPV[a\x0C\x84a \xE1V[\x81b\x01\0\0\x03a\x0E[W`@Q\x80``\x01`@R\x80`\x10\x81R` \x01\x7F0d\x1E\x0E\x92\xBE\xBE\xF8\x18&\x8Df;\xCA\xD6\xDB\xCF\xD6\xC0\x14\x91p\xF6\xD7\xD3P\xB1\xB1\xFAl\x10\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81R` \x01\x7F\x15\xEE$u\xBE\xE5\x17\xC4\xEE\x05\xE5\x1F\xA1\xEEs\x12\xA87:\x0B\x13\xDB\x8CQ\xBA\xF0L\xB2\xE9\x9B\xD2\xBD\x81R` \x01~o\xABI\xB8i\xAEb\0\x1D\xEA\xC8x\xB2f{\xD3\x1B\xF3\xE2\x8E:-vJ\xA4\x9B\x8D\x9B\xBD\xD3\x10\x81R` \x01\x7F.\x85k\xF6\xD07p\x8F\xFAL\x06\xD4\xD8\x82\x0FE\xCC\xAD\xCE\x9CZm\x17\x8C\xBDW?\x82\xE0\xF9p\x11\x81R` \x01\x7F\x14\x07\xEE\xE3Y\x93\xF2\xB1\xAD^\xC6\xD9\xB8\x95\x0C\xA3\xAF3\x13]\x06\x03\x7F\x87\x1C^3\xBFVm\xD7\xB4\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x104W`@Q\x80``\x01`@R\x80`\x14\x81R` \x01\x7F0dKl\x9CJr\x16\x9EM\xAA1}%\xF0E\x12\xAE\x15\xC5;4\xE8\xF5\xAC\xD8\xE1U\xD0\xA6\xC1\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81R` \x01\x7F)\xE8AC\xF5\x87\rGv\xA9-\xF8\xDA\x8Cl\x93\x03\xD5\x90\x88\xF3{\xA8_@\xCFo\xD1Be\xB4\xBC\x81R` \x01\x7F\x1B\xF8-\xEB\xA7\xD7I\x02\xC3p\x8C\xC6\xE7\x0Ea\xF3\x05\x12\xEC\xA9VU!\x0E'nXX\xCE\x8FX\xE5\x81R` \x01\x7F\"\xB9K.+\0C\xD0Nf-^\xC0\x18\xEA\x1C\x8A\x99\xA2:b\xC9\xEBF\xF01\x8Fj\x19I\x85\xF0\x81R` \x01\x7F)\x96\x9D\x8DSc\xBE\xF1\x10\x1Ah\xE4F\xA1N\x1D\xA7\xBA\x92\x94\xE1B\xA1F\xA9\x80\xFD\xDBMMA\xA5\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\x12\nW`@Q\x80``\x01`@R\x80`\x05\x81R` \x01\x7F.\xE1+\xFFJ(\x13(j\x8D\xC3\x88\xCDuM\x9A>\xF2I\x065\xEB\xA5\x0C\xB9\xC2\xE5\xE7P\x80\0\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81R` \x01~\xE1Kcd\xA4~\x9CB\x84\xA9\xF8\n_\xC4\x1C\xD2\x12\xB0\xD4\xDB\xF8\xA5p7p\xA4\n\x9A49\x90\x81R` \x01\x7F0dNr\xE11\xA0)\x04\x8Bn\x19?\xD8A\x04\\\xEA$\xF6\xFDsk\xEC#\x12\x04p\x8Fp66\x81R` \x01\x7F\"9\x9C4\x13\x9B\xFF\xAD\xA8\xDE\x04j\xACP\xC9b\x8E5\x17\xA3\xA4RySd\xE7w\xCDe\xBB\x9FH\x81R` \x01\x7F\"\x90\xEE1\xC4\x82\xCF\x92\xB7\x9B\x19D\xDB\x1C\x01Gc^\x90\x04\xDB\x8C;\x9D\x13dK\xEF1\xEC;\xD3\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12D`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x12N\x84\x84a\x18GV[\x80\x82Ra\x12^\x90\x85\x90\x85\x90a\x18\x98V[` \x82\x01R\x80Qa\x12t\x90\x85\x90\x84\x90\x86\x90a\x19\x07V[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\x9Ba!\x05V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x81\x01\x83\x90R_``\x83`\x80\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x12\xCBW__\xFD[P\x80a\x13\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FBn254: scalar mul failed!\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04>V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13<a!#V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x83\x01R\x83\x01Q``\x80\x83\x01\x91\x90\x91R_\x90\x83`\xC0\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13wW__\xFD[P\x80a\x13\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: group addition failed!\0\0\0`D\x82\x01R`d\x01a\x04>V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x13\xF8\x87\x87\x87\x87a\x1AVV[\x90P_Q` a&G_9_Q\x90_R_a\x14\x14\x88\x87\x89a\x1F V[\x90Pa\x14 \x81\x83a%\xF4V[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x14L\x85a\x04\xEA\x8A_\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14t\x86a\x04\xEA\x8A` \x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x9C\x86a\x04\xEA\x8A`@\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\xC4\x86a\x04\xEA\x8A``\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x14\xEC\x86a\x04\xEA\x8A`\x80\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x15\x14\x86a\x04\xEA\x8D`@\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x15<\x86a\x04\xEA\x8D``\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x15d\x86a\x04\xEA\x8D`\x80\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x15\x8C\x86a\x04\xEA\x8D`\xA0\x01Q\x84a\x12\x80V[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x15\xB6\x87a\x04\xEA\x8B`\xA0\x01Q\x84a\x12\x80V[\x96Pa\x15\xECa\x15\xE6`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x12\x80V[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x16$WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x16h\x91\x90a&'V[a\x16\x92\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa%\xF4V[\x90R\x92\x91PPV[a\x16\xC1`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a\x189W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FBn254: Pairing check failed!\0\0\0\0`D\x82\x01R`d\x01a\x04>V[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a&G_9_Q\x90_R\x90\x83\x80\x15a\x18\x88W\x84\x93P_[\x82\x81\x10\x15a\x18|W\x83\x85\x86\t\x94P`\x01\x01a\x18fV[P`\x01\x84\x03\x93Pa\x18\x8FV[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x18\xA9WP`\x01a\x02\xA3V[\x81_\x03a\x18\xB7WP_a\x02\xA3V[` \x84\x01Q_Q` a&G_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x18\xE5W`\x01\x87\x03\x92Pa\x18\xECV[`\x01\x84\x03\x92P[Pa\x18\xF6\x82a \x0BV[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a&G_9_Q\x90_R\x82\x82\x03a\x19\x80W`\x01_[`\x0B\x81\x10\x15a\x19uW\x81\x86\x03a\x19RW\x86\x81`\x0B\x81\x10a\x19CWa\x19Ca%\xE0V[` \x02\x01Q\x93PPPPa\x18?V[\x82\x80a\x19`Wa\x19`a&\x13V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x19!V[P_\x92PPPa\x18?V[a\x19\x88a!AV[`@\x87\x01Q`\x01a\x01@\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x0B\x81\x10\x15a\x19\xCAW` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x19\x9DV[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x0B\x81\x10\x15a\x1A\x1EW\x88\x82Q\x8A\x85Q\x8C\x88Q\x8A\t\t\t\x89\x81\x88\x08\x96PP\x88\x89\x8D\x84Q\x8C\x03\x08\x86\t\x94P` \x93\x84\x01\x93\x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x19\xDEV[PPPP\x80\x92PP_a\x1A0\x83a \x0BV[\x90P` \x8A\x01Q\x85\x81\x89\t\x96PP\x84\x81\x87\t\x95P\x84\x82\x87\t\x9A\x99PPPPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R______Q` a&G_9_Q\x90_R\x90P`\x80\x89\x01Q\x81` \x8A\x01Q` \x8C\x01Q\t\x95P\x89Q\x94P\x81`\xA0\x8B\x01Q``\x8C\x01Q\t\x93P\x81a\x01\xA0\x89\x01Q\x85\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x85\t\x92P\x81a\x01\xC0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x85\t\x92P\x81a\x01\xE0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x85\t\x92P\x81a\x02\0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x85\t\x92P\x81a\x02 \x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92PP\x80\x84\x83\t\x93P\x80\x84\x86\x08\x94Pa\x1B\xC3\x87`\xA0\x01Q\x86a\x12\x80V[\x95P\x88Q``\x8A\x01Q`\x80\x8B\x01Q\x83\x82\x84\t\x97P\x83a\x02\xC0\x8B\x01Q\x89\t\x97P\x83a\x02@\x8B\x01Q\x83\t\x95P\x83a\x01\xA0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02`\x8B\x01Q\x83\t\x95P\x83a\x01\xC0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\x80\x8B\x01Q\x83\t\x95P\x83a\x01\xE0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\xA0\x8B\x01Q\x83\t\x95P\x83a\x02\0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95PPPP\x80\x83\x86\t\x94Pa\x1C\x8A\x86a\x04\xEA\x8C`\xC0\x01Q\x88\x85a\x1C\x85\x91\x90a%\xF4V[a\x12\x80V[\x95Pa\x1C\xA3\x86a\x04\xEA\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x12\x80V[\x95Pa\x1C\xBD\x86a\x04\xEA\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x12\x80V[\x95Pa\x1C\xD7\x86a\x04\xEA\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x12\x80V[\x95Pa\x1C\xF1\x86a\x04\xEA\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x12\x80V[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x1D\x16\x86a\x04\xEA\x8Ca\x01`\x01Q\x86a\x12\x80V[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x1D;\x86a\x04\xEA\x8Ca\x01\x80\x01Q\x86a\x12\x80V[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1Dj\x86a\x04\xEA\x8Ca\x01\xE0\x01Q\x86a\x12\x80V[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1D\x99\x86a\x04\xEA\x8Ca\x02\0\x01Q\x86a\x12\x80V[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1D\xC8\x86a\x04\xEA\x8Ca\x02 \x01Q\x86a\x12\x80V[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1D\xF7\x86a\x04\xEA\x8Ca\x02@\x01Q\x86a\x12\x80V[\x95Pa\x1E\x14\x86a\x04\xEA\x8Ca\x01\xA0\x01Qa\x1C\x85\x8Ba\x02 \x01Qa \xACV[\x95Pa\x1E%\x86\x8Ba\x01\xC0\x01Qa\x13!V[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92P\x80a\x01\xE0\x88\x01Q\x84\t\x92P\x80a\x02\0\x88\x01Q\x84\t\x92P\x80a\x02 \x88\x01Q\x84\t\x92Pa\x1Ek\x86a\x04\xEA\x8Ca\x02`\x01Q\x86a\x12\x80V[\x95Pa\x1Ey\x88_\x01Qa \xACV[\x94Pa\x1E\x8D\x86a\x04\xEA\x89`\xC0\x01Q\x88a\x12\x80V[\x95P\x80`\x01\x89Q\x08`\xA0\x8A\x01Q\x90\x93P\x81\x90\x80\t\x91P\x80\x82\x84\t\x92P\x80\x83\x86\t\x94Pa\x1E\xC1\x86a\x04\xEA\x89`\xE0\x01Q\x88a\x12\x80V[\x95P\x80\x83\x86\t\x94Pa\x1E\xDC\x86a\x04\xEA\x89a\x01\0\x01Q\x88a\x12\x80V[\x95P\x80\x83\x86\t\x94Pa\x1E\xF7\x86a\x04\xEA\x89a\x01 \x01Q\x88a\x12\x80V[\x95P\x80\x83\x86\t\x94Pa\x1F\x12\x86a\x04\xEA\x89a\x01@\x01Q\x88a\x12\x80V[\x9A\x99PPPPPPPPPPV[___Q` a&G_9_Q\x90_R\x90P_\x83` \x01Q\x90P_\x84`@\x01Q\x90P_`\x01\x90P``\x88\x01Q`\x80\x89\x01Qa\x01\xA0\x89\x01Qa\x02@\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xC0\x89\x01Qa\x02`\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xE0\x89\x01Qa\x02\x80\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02\0\x89\x01Qa\x02\xA0\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02 \x89\x01Q\x91Pa\x02\xC0\x89\x01Q\x86\x87\x82\x89\x85\x87\x08\t\x85\t\x93PPPP\x87Q` \x89\x01Q\x85\x86\x86\x83\t\x87\x03\x85\x08\x96PP\x84\x85\x83\x83\t\x86\x03\x87\x08\x99\x98PPPPPPPPPV[____Q` a&G_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x84``\x82\x01R`\x02\x82\x03`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x92PP_Q\x92P\x81a \xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: pow precompile failed!\0\0\0`D\x82\x01R`d\x01a\x04>V[PP\x91\x90PV[_a \xC4_Q` a&G_9_Q\x90_R\x83a&'V[a \xDB\x90_Q` a&G_9_Q\x90_Ra%\xF4V[\x92\x91PPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a!\0a!AV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\x98Wa!\x98a!`V[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\x98Wa!\x98a!`V[_`@\x82\x84\x03\x12\x15a!\xD2W__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\xF5Wa!\xF5a!`V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a\"\x1EW__\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\"BWa\"Ba!`V[`@R\x80a\x01`\x84\x01\x85\x81\x11\x15a\"WW__\xFD[\x84[\x81\x81\x10\x15a\"qW\x805\x83R` \x92\x83\x01\x92\x01a\"YV[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a\"\x8DW__\xFD[a\"\x95a!tV[\x90Pa\"\xA1\x83\x83a!\xC2V[\x81Ra\"\xB0\x83`@\x84\x01a!\xC2V[` \x82\x01Ra\"\xC2\x83`\x80\x84\x01a!\xC2V[`@\x82\x01Ra\"\xD4\x83`\xC0\x84\x01a!\xC2V[``\x82\x01Ra\"\xE7\x83a\x01\0\x84\x01a!\xC2V[`\x80\x82\x01Ra\"\xFA\x83a\x01@\x84\x01a!\xC2V[`\xA0\x82\x01Ra#\r\x83a\x01\x80\x84\x01a!\xC2V[`\xC0\x82\x01Ra# \x83a\x01\xC0\x84\x01a!\xC2V[`\xE0\x82\x01Ra#3\x83a\x02\0\x84\x01a!\xC2V[a\x01\0\x82\x01Ra#G\x83a\x02@\x84\x01a!\xC2V[a\x01 \x82\x01Ra#[\x83a\x02\x80\x84\x01a!\xC2V[a\x01@\x82\x01Ra#o\x83a\x02\xC0\x84\x01a!\xC2V[a\x01`\x82\x01Ra#\x83\x83a\x03\0\x84\x01a!\xC2V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[___\x83\x85\x03a\n\xE0\x81\x12\x15a$\x1BW__\xFD[a\x05\0\x81\x12\x15a$)W__\xFD[Pa$2a!\x9EV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra$M\x86`@\x87\x01a!\xC2V[`@\x82\x01Ra$_\x86`\x80\x87\x01a!\xC2V[``\x82\x01Ra$q\x86`\xC0\x87\x01a!\xC2V[`\x80\x82\x01Ra$\x84\x86a\x01\0\x87\x01a!\xC2V[`\xA0\x82\x01Ra$\x97\x86a\x01@\x87\x01a!\xC2V[`\xC0\x82\x01Ra$\xAA\x86a\x01\x80\x87\x01a!\xC2V[`\xE0\x82\x01Ra$\xBD\x86a\x01\xC0\x87\x01a!\xC2V[a\x01\0\x82\x01Ra$\xD1\x86a\x02\0\x87\x01a!\xC2V[a\x01 \x82\x01Ra$\xE5\x86a\x02@\x87\x01a!\xC2V[a\x01@\x82\x01Ra$\xF9\x86a\x02\x80\x87\x01a!\xC2V[a\x01`\x82\x01Ra%\r\x86a\x02\xC0\x87\x01a!\xC2V[a\x01\x80\x82\x01Ra%!\x86a\x03\0\x87\x01a!\xC2V[a\x01\xA0\x82\x01Ra%5\x86a\x03@\x87\x01a!\xC2V[a\x01\xC0\x82\x01Ra%I\x86a\x03\x80\x87\x01a!\xC2V[a\x01\xE0\x82\x01Ra%]\x86a\x03\xC0\x87\x01a!\xC2V[a\x02\0\x82\x01Ra%q\x86a\x04\0\x87\x01a!\xC2V[a\x02 \x82\x01Ra%\x85\x86a\x04@\x87\x01a!\xC2V[a\x02@\x82\x01Ra%\x99\x86a\x04\x80\x87\x01a!\xC2V[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa%\xC7\x85a\x05\0\x86\x01a\"\x0FV[\x91Pa%\xD7\x85a\x06`\x86\x01a\"|V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a \xDBWcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a&AWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\xA1dsolcC\0\x08\x1C\0\n",
2741    );
2742    /// The runtime bytecode of the contract, as deployed on the network.
2743    ///
2744    /// ```text
2745    ///0x730000000000000000000000000000000000000000301460806040526004361061009b575f3560e01c8063af196ba21161006e578063af196ba21461014e578063de24ac0f14610175578063e3512d561461019c578063f5144326146101c3578063fc8660c7146101ea575f5ffd5b80630c551f3f1461009f5780634b4734e3146100d95780635a14c0fe14610100578063834c452a14610127575b5f5ffd5b6100c67f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02581565b6040519081526020015b60405180910390f35b6100c67f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581565b6100c67f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a81565b6100c67f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181565b6100c67f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081565b6100c67f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88181565b6100c67f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a81565b6100c67f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481565b6101fd6101f8366004612407565b61020d565b60405190151581526020016100d0565b5f610217826102aa565b610227835f5b60200201516103e5565b61023283600161021d565b61023d83600261021d565b61024883600361021d565b61025383600461021d565b61025e83600561021d565b61026983600661021d565b61027483600761021d565b61027f83600861021d565b61028a83600961021d565b61029583600a61021d565b6102a084848461044b565b90505b9392505050565b80516102b59061063f565b6102c2816020015161063f565b6102cf816040015161063f565b6102dc816060015161063f565b6102e9816080015161063f565b6102f68160a0015161063f565b6103038160c0015161063f565b6103108160e0015161063f565b61031e81610100015161063f565b61032c81610120015161063f565b61033a81610140015161063f565b61034881610160015161063f565b61035681610180015161063f565b610364816101a001516103e5565b610372816101c001516103e5565b610380816101e001516103e5565b61038e8161020001516103e5565b61039c8161022001516103e5565b6103aa8161024001516103e5565b6103b88161026001516103e5565b6103c68161028001516103e5565b6103d4816102a001516103e5565b6103e2816102c001516103e5565b50565b5f5160206126475f395f51905f528110806104475760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c64000000000060448201526064015b60405180910390fd5b5050565b5f8360200151600b14610471576040516320fa9d8960e11b815260040160405180910390fd5b5f61047d8585856106ed565b90505f61048c865f0151610c7c565b90505f61049e828460a0015188611223565b90506104bb60405180604001604052805f81526020015f81525090565b604080518082019091525f80825260208201526104ef8761016001516104ea8961018001518860e00151611280565b611321565b91505f5f6104ff8b88878c6113c5565b91509150610510816104ea846115fd565b9250610529836104ea8b61016001518a60a00151611280565b60a08801516040880151602001519194505f5160206126475f395f51905f52918290820990508160e08a01518209905061056c856104ea8d610180015184611280565b94505f60405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4815250905061062d8782610620896115fd565b61062861169a565b611767565b9e9d5050505050505050505050505050565b805160208201515f917f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4791159015161561067857505050565b8251602084015182600384858586098509088382830914838210848410161693505050816106e85760405162461bcd60e51b815260206004820152601760248201527f426e3235343a20696e76616c696420473120706f696e74000000000000000000604482015260640161043e565b505050565b61072d6040518061010001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f5f5160206126475f395f51905f529050604051602081015f815260fe60e01b8152865160c01b6004820152602087015160c01b600c82015261028087015160208201526102a08701516040820152600160608201527f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a60808201527f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02560a08201527f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a60c08201527f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88160e082015260e087015180516101008301526020810151610120830152506101008701518051610140830152602081015161016083015250610120870151805161018083015260208101516101a08301525061014087015180516101c083015260208101516101e083015250610160870151805161020083015260208101516102208301525061018087015180516102408301526020810151610260830152506101e0870151805161028083015260208101516102a08301525061020087015180516102c083015260208101516102e083015250610220870151805161030083015260208101516103208301525061024087015180516103408301526020810151610360830152506101a0870151805161038083015260208101516103a0830152506101c087015180516103c083015260208101516103e0830152506102608701518051610400830152602081015161042083015250604087015180516104408301526020810151610460830152506060870151805161048083015260208101516104a083015250608087015180516104c083015260208101516104e08301525060a0870151805161050083015260208101516105208301525060c08701518051610540830152602081015161056083015250855161058082015260208601516105a082015260408601516105c082015260608601516105e0820152608086015161060082015260a086015161062082015260c086015161064082015260e08601516106608201526101008601516106808201526101208601516106a08201526101408601516106c0820152845180516106e08301526020810151610700830152506020850151805161072083015260208101516107408301525060408501518051610760830152602081015161078083015250606085015180516107a083015260208101516107c083015250608085015180516107e08301526020810151610800830152505f82526108408220825282825106606085015260208220825282825106608085015260a085015180518252602081015160208301525060608220808352838106855283818209848282099150806020870152508060408601525060c085015180518252602081015160208301525060e085015180516040830152602081015160608301525061010085015180516080830152602081015160a083015250610120850151805160c0830152602081015160e0830152506101408501518051610100830152602081015161012083015250610160822082528282510660a08501526101a085015181526101c085015160208201526101e085015160408201526102008501516060820152610220850151608082015261024085015160a082015261026085015160c082015261028085015160e08201526102a08501516101008201526102c0850151610120820152610160822082528282510660c08501526101608501518051825260208101516020830152506101808501518051604083015260208101516060830152505060a0812082810660e08501525050509392505050565b610c846120e1565b816201000003610e5b576040518060600160405280601081526020017f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c10018152602001604051806101600160405280600181526020017eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b781526020017f2d1ba66f5941dc91017171fa69ec2bd0022a2a2d4115a009a93458fd4e26ecfb81526020017f086812a00ac43ea801669c640171203c41a496671bfbc065ac8db24d52cf31e581526020017f2d965651cdd9e4811f4e51b80ddca8a8b4a93ee17420aae6adaa01c2617c6e8581526020017f12597a56c2e438620b9041b98992ae0d4e705b780057bf7766a2767cece16e1d81526020017f02d94117cd17bcf1290fd67c01155dd40807857dff4a5a0b4dc67befa8aa34fd81526020017f15ee2475bee517c4ee05e51fa1ee7312a8373a0b13db8c51baf04cb2e99bd2bd81526020017e6fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd31081526020017f2e856bf6d037708ffa4c06d4d8820f45ccadce9c5a6d178cbd573f82e0f9701181526020017f1407eee35993f2b1ad5ec6d9b8950ca3af33135d06037f871c5e33bf566dd7b48152508152509050919050565b816210000003611034576040518060600160405280601481526020017f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c1018152602001604051806101600160405280600181526020017f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785781526020017f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd81526020017f2087ea2cd664278608fb0ebdb820907f598502c81b6690c185e2bf15cb935f4281526020017f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e081526020017f05a2c85cfc591789605cae818e37dd4161eef9aa666bec6fe4288d09e6d2341881526020017f11f70e5363258ff4f0d716a653e1dc41f1c64484d7f4b6e219d6377614a3905c81526020017f29e84143f5870d4776a92df8da8c6c9303d59088f37ba85f40cf6fd14265b4bc81526020017f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e581526020017f22b94b2e2b0043d04e662d5ec018ea1c8a99a23a62c9eb46f0318f6a194985f081526020017f29969d8d5363bef1101a68e446a14e1da7ba9294e142a146a980fddb4d4d41a58152508152509050919050565b8160200361120a576040518060600160405280600581526020017f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e7508000018152602001604051806101600160405280600181526020017f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d081526020017f21082ca216cbbf4e1c6e4f4594dd508c996dfbe1174efb98b11509c6e306460b81526020017f1277ae6415f0ef18f2ba5fb162c39eb7311f386e2d26d64401f4a25da77c253b81526020017f2b337de1c8c14f22ec9b9e2f96afef3652627366f8170a0a948dad4ac1bd5e8081526020017f2fbd4dd2976be55d1a163aa9820fb88dfac5ddce77e1872e90632027327a5ebe81526020017f107aab49e65a67f9da9cd2abf78be38bd9dc1d5db39f81de36bcfa5b4b03904381526020017ee14b6364a47e9c4284a9f80a5fc41cd212b0d4dbf8a5703770a40a9a34399081526020017f30644e72e131a029048b6e193fd841045cea24f6fd736bec231204708f70363681526020017f22399c34139bffada8de046aac50c9628e3517a3a452795364e777cd65bb9f4881526020017f2290ee31c482cf92b79b1944db1c0147635e9004db8c3b9d13644bef31ec3bd38152508152509050919050565b60405163e2ef09e560e01b815260040160405180910390fd5b61124460405180606001604052805f81526020015f81526020015f81525090565b61124e8484611847565b80825261125e9085908590611898565b6020820152805161127490859084908690611907565b60408201529392505050565b604080518082019091525f808252602082015261129b612105565b8351815260208085015190820152604081018390525f60608360808460076107d05a03fa905080806112cb575f5ffd5b50806113195760405162461bcd60e51b815260206004820152601960248201527f426e3235343a207363616c6172206d756c206661696c65642100000000000000604482015260640161043e565b505092915050565b604080518082019091525f808252602082015261133c612123565b8351815260208085015181830152835160408301528301516060808301919091525f908360c08460066107d05a03fa90508080611377575f5ffd5b50806113195760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a2067726f7570206164646974696f6e206661696c656421000000604482015260640161043e565b604080518082019091525f8082526020820152604080518082019091525f80825260208201525f6113f887878787611a56565b90505f5160206126475f395f51905f525f611414888789611f20565b905061142081836125f4565b60c08901516101a08801519192509081908490819083098408925061144c856104ea8a5f015184611280565b955083828209905083846101c08a0151830984089250611474866104ea8a6020015184611280565b955083828209905083846101e08a015183098408925061149c866104ea8a6040015184611280565b955083828209905083846102008a01518309840892506114c4866104ea8a6060015184611280565b955083828209905083846102208a01518309840892506114ec866104ea8a6080015184611280565b955083828209905083846102408a0151830984089250611514866104ea8d6040015184611280565b955083828209905083846102608a015183098408925061153c866104ea8d6060015184611280565b955083828209905083846102808a0151830984089250611564866104ea8d6080015184611280565b955083828209905083846102a08a015183098408925061158c866104ea8d60a0015184611280565b95505f8a60e00151905084856102c08b01518309850893506115b6876104ea8b60a0015184611280565b96506115ec6115e66040805180820182525f80825260209182015281518083019092526001825260029082015290565b85611280565b975050505050505094509492505050565b604080518082019091525f8082526020820152815160208301511590151615611624575090565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516116689190612627565b611692907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476125f4565b905292915050565b6116c160405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806118395760405162461bcd60e51b815260206004820152601c60248201527f426e3235343a2050616972696e6720636865636b206661696c65642100000000604482015260640161043e565b50151590505b949350505050565b81515f905f5160206126475f395f51905f5290838015611888578493505f5b8281101561187c57838586099450600101611866565b5060018403935061188f565b6001830393505b50505092915050565b5f826001036118a9575060016102a3565b815f036118b757505f6102a3565b60208401515f5160206126475f395f51905f52905f908281860990508580156118e5576001870392506118ec565b6001840392505b506118f68261200b565b915082828209979650505050505050565b5f5f5160206126475f395f51905f528282036119805760015f5b600b81101561197557818603611952578681600b8110611943576119436125e0565b6020020151935050505061183f565b828061196057611960612613565b60408901516020015183099150600101611921565b505f9250505061183f565b611988612141565b60408701516001610140838101828152920190805b600b8110156119ca5760208403935085868a85518903088309808552601f1990930192915060010161199d565b505050505f5f5f90506001838960408c01515f5b600b811015611a1e578882518a85518c88518a0909098981880896505088898d84518c0308860994506020938401939283019291909101906001016119de565b50505050809250505f611a308361200b565b905060208a015185818909965050848187099550848287099a9950505050505050505050565b604080518082019091525f80825260208201525f5f5f5f5f5f5160206126475f395f51905f52905060808901518160208a015160208c0151099550895194508160a08b015160608c0151099350816101a089015185089250818184089250818584099450817f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a85099250816101c089015184089250818184089250818584099450817f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02585099250816101e089015184089250818184089250818584099450817f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a850992508161020089015184089250818184089250818584099450817f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88185099250816102208901518408925081818408925050808483099350808486089450611bc38760a0015186611280565b9550885160608a015160808b0151838284099750836102c08b015189099750836102408b015183099550836101a08b015187089550838187089550838689099750836102608b015183099550836101c08b015187089550838187089550838689099750836102808b015183099550836101e08b015187089550838187089550838689099750836102a08b015183099550836102008b015187089550838187089550505050808386099450611c8a866104ea8c60c001518885611c8591906125f4565b611280565b9550611ca3866104ea8c60e001518a6101a00151611280565b9550611cbd866104ea8c61010001518a6101c00151611280565b9550611cd7866104ea8c61012001518a6101e00151611280565b9550611cf1866104ea8c61014001518a6102000151611280565b9550806101c08801516101a0890151099250611d16866104ea8c610160015186611280565b9550806102008801516101e0890151099250611d3b866104ea8c610180015186611280565b95506101a08701519250808384099150808283099150808284099250611d6a866104ea8c6101e0015186611280565b95506101c08701519250808384099150808283099150808284099250611d99866104ea8c610200015186611280565b95506101e08701519250808384099150808283099150808284099250611dc8866104ea8c610220015186611280565b95506102008701519250808384099150808283099150808284099250611df7866104ea8c610240015186611280565b9550611e14866104ea8c6101a00151611c858b61022001516120ac565b9550611e25868b6101c00151611321565b9550806101c08801516101a0890151099250806101e08801518409925080610200880151840992508061022088015184099250611e6b866104ea8c610260015186611280565b9550611e79885f01516120ac565b9450611e8d866104ea8960c0015188611280565b955080600189510860a08a0151909350819080099150808284099250808386099450611ec1866104ea8960e0015188611280565b9550808386099450611edc866104ea89610100015188611280565b9550808386099450611ef7866104ea89610120015188611280565b9550808386099450611f12866104ea89610140015188611280565b9a9950505050505050505050565b5f5f5f5160206126475f395f51905f5290505f836020015190505f846040015190505f60019050606088015160808901516101a08901516102408a01518788898387098a868608088609945050506101c08901516102608a01518788898387098a868608088609945050506101e08901516102808a01518788898387098a868608088609945050506102008901516102a08a01518788898387098a8686080886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b5f5f5f5f5160206126475f395f51905f52905060405160208152602080820152602060408201528460608201526002820360808201528160a082015260205f60c08360055afa9250505f519250816120a55760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a20706f7720707265636f6d70696c65206661696c656421000000604482015260640161043e565b5050919050565b5f6120c45f5160206126475f395f51905f5283612627565b6120db905f5160206126475f395f51905f526125f4565b92915050565b60405180606001604052805f81526020015f8152602001612100612141565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101600160405280600b906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516102e0810167ffffffffffffffff8111828210171561219857612198612160565b60405290565b6040516102c0810167ffffffffffffffff8111828210171561219857612198612160565b5f604082840312156121d2575f5ffd5b6040805190810167ffffffffffffffff811182821017156121f5576121f5612160565b604052823581526020928301359281019290925250919050565b5f82601f83011261221e575f5ffd5b604051610160810167ffffffffffffffff8111828210171561224257612242612160565b60405280610160840185811115612257575f5ffd5b845b81811015612271578035835260209283019201612259565b509195945050505050565b5f610480828403121561228d575f5ffd5b612295612174565b90506122a183836121c2565b81526122b083604084016121c2565b60208201526122c283608084016121c2565b60408201526122d48360c084016121c2565b60608201526122e78361010084016121c2565b60808201526122fa8361014084016121c2565b60a082015261230d8361018084016121c2565b60c0820152612320836101c084016121c2565b60e08201526123338361020084016121c2565b6101008201526123478361024084016121c2565b61012082015261235b8361028084016121c2565b61014082015261236f836102c084016121c2565b6101608201526123838361030084016121c2565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f5f838503610ae081121561241b575f5ffd5b610500811215612429575f5ffd5b5061243261219e565b843581526020808601359082015261244d86604087016121c2565b604082015261245f86608087016121c2565b60608201526124718660c087016121c2565b60808201526124848661010087016121c2565b60a08201526124978661014087016121c2565b60c08201526124aa8661018087016121c2565b60e08201526124bd866101c087016121c2565b6101008201526124d18661020087016121c2565b6101208201526124e58661024087016121c2565b6101408201526124f98661028087016121c2565b61016082015261250d866102c087016121c2565b6101808201526125218661030087016121c2565b6101a08201526125358661034087016121c2565b6101c08201526125498661038087016121c2565b6101e082015261255d866103c087016121c2565b6102008201526125718661040087016121c2565b6102208201526125858661044087016121c2565b6102408201526125998661048087016121c2565b6102608201526104c08501356102808201526104e08501356102a082015292506125c785610500860161220f565b91506125d785610660860161227c565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b818103818111156120db57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261264157634e487b7160e01b5f52601260045260245ffd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300081c000a
2746    /// ```
2747    #[rustfmt::skip]
2748    #[allow(clippy::all)]
2749    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2750        b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\0\x9BW_5`\xE0\x1C\x80c\xAF\x19k\xA2\x11a\0nW\x80c\xAF\x19k\xA2\x14a\x01NW\x80c\xDE$\xAC\x0F\x14a\x01uW\x80c\xE3Q-V\x14a\x01\x9CW\x80c\xF5\x14C&\x14a\x01\xC3W\x80c\xFC\x86`\xC7\x14a\x01\xEAW__\xFD[\x80c\x0CU\x1F?\x14a\0\x9FW\x80cKG4\xE3\x14a\0\xD9W\x80cZ\x14\xC0\xFE\x14a\x01\0W\x80c\x83LE*\x14a\x01'W[__\xFD[a\0\xC6\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC6\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81V[a\0\xC6\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x81V[a\0\xC6\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81V[a\0\xC6\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81V[a\0\xC6\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x81V[a\0\xC6\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x81V[a\0\xC6\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81V[a\x01\xFDa\x01\xF86`\x04a$\x07V[a\x02\rV[`@Q\x90\x15\x15\x81R` \x01a\0\xD0V[_a\x02\x17\x82a\x02\xAAV[a\x02'\x83_[` \x02\x01Qa\x03\xE5V[a\x022\x83`\x01a\x02\x1DV[a\x02=\x83`\x02a\x02\x1DV[a\x02H\x83`\x03a\x02\x1DV[a\x02S\x83`\x04a\x02\x1DV[a\x02^\x83`\x05a\x02\x1DV[a\x02i\x83`\x06a\x02\x1DV[a\x02t\x83`\x07a\x02\x1DV[a\x02\x7F\x83`\x08a\x02\x1DV[a\x02\x8A\x83`\ta\x02\x1DV[a\x02\x95\x83`\na\x02\x1DV[a\x02\xA0\x84\x84\x84a\x04KV[\x90P[\x93\x92PPPV[\x80Qa\x02\xB5\x90a\x06?V[a\x02\xC2\x81` \x01Qa\x06?V[a\x02\xCF\x81`@\x01Qa\x06?V[a\x02\xDC\x81``\x01Qa\x06?V[a\x02\xE9\x81`\x80\x01Qa\x06?V[a\x02\xF6\x81`\xA0\x01Qa\x06?V[a\x03\x03\x81`\xC0\x01Qa\x06?V[a\x03\x10\x81`\xE0\x01Qa\x06?V[a\x03\x1E\x81a\x01\0\x01Qa\x06?V[a\x03,\x81a\x01 \x01Qa\x06?V[a\x03:\x81a\x01@\x01Qa\x06?V[a\x03H\x81a\x01`\x01Qa\x06?V[a\x03V\x81a\x01\x80\x01Qa\x06?V[a\x03d\x81a\x01\xA0\x01Qa\x03\xE5V[a\x03r\x81a\x01\xC0\x01Qa\x03\xE5V[a\x03\x80\x81a\x01\xE0\x01Qa\x03\xE5V[a\x03\x8E\x81a\x02\0\x01Qa\x03\xE5V[a\x03\x9C\x81a\x02 \x01Qa\x03\xE5V[a\x03\xAA\x81a\x02@\x01Qa\x03\xE5V[a\x03\xB8\x81a\x02`\x01Qa\x03\xE5V[a\x03\xC6\x81a\x02\x80\x01Qa\x03\xE5V[a\x03\xD4\x81a\x02\xA0\x01Qa\x03\xE5V[a\x03\xE2\x81a\x02\xC0\x01Qa\x03\xE5V[PV[_Q` a&G_9_Q\x90_R\x81\x10\x80a\x04GW`@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\x01[`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x0B\x14a\x04qW`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x04}\x85\x85\x85a\x06\xEDV[\x90P_a\x04\x8C\x86_\x01Qa\x0C|V[\x90P_a\x04\x9E\x82\x84`\xA0\x01Q\x88a\x12#V[\x90Pa\x04\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x04\xEF\x87a\x01`\x01Qa\x04\xEA\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x12\x80V[a\x13!V[\x91P__a\x04\xFF\x8B\x88\x87\x8Ca\x13\xC5V[\x91P\x91Pa\x05\x10\x81a\x04\xEA\x84a\x15\xFDV[\x92Pa\x05)\x83a\x04\xEA\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x12\x80V[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a&G_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x05l\x85a\x04\xEA\x8Da\x01\x80\x01Q\x84a\x12\x80V[\x94P_`@Q\x80`\x80\x01`@R\x80\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81R` \x01\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81R` \x01\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81R` \x01\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81RP\x90Pa\x06-\x87\x82a\x06 \x89a\x15\xFDV[a\x06(a\x16\x9AV[a\x17gV[\x9E\x9DPPPPPPPPPPPPPPV[\x80Q` \x82\x01Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x91\x15\x90\x15\x16\x15a\x06xWPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x06\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FBn254: invalid G1 point\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04>V[PPPV[a\x07-`@Q\x80a\x01\0\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[__Q` a&G_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R`\xE0\x86\x01Qa\x06`\x82\x01Ra\x01\0\x86\x01Qa\x06\x80\x82\x01Ra\x01 \x86\x01Qa\x06\xA0\x82\x01Ra\x01@\x86\x01Qa\x06\xC0\x82\x01R\x84Q\x80Qa\x06\xE0\x83\x01R` \x81\x01Qa\x07\0\x83\x01RP` \x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`@\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP``\x85\x01Q\x80Qa\x07\xA0\x83\x01R` \x81\x01Qa\x07\xC0\x83\x01RP`\x80\x85\x01Q\x80Qa\x07\xE0\x83\x01R` \x81\x01Qa\x08\0\x83\x01RP_\x82Ra\x08@\x82 \x82R\x82\x82Q\x06``\x85\x01R` \x82 \x82R\x82\x82Q\x06`\x80\x85\x01R`\xA0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP``\x82 \x80\x83R\x83\x81\x06\x85R\x83\x81\x82\t\x84\x82\x82\t\x91P\x80` \x87\x01RP\x80`@\x86\x01RP`\xC0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP`\xE0\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPa\x01\0\x85\x01Q\x80Q`\x80\x83\x01R` \x81\x01Q`\xA0\x83\x01RPa\x01 \x85\x01Q\x80Q`\xC0\x83\x01R` \x81\x01Q`\xE0\x83\x01RPa\x01@\x85\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01`\x82 \x82R\x82\x82Q\x06`\xA0\x85\x01Ra\x01\xA0\x85\x01Q\x81Ra\x01\xC0\x85\x01Q` \x82\x01Ra\x01\xE0\x85\x01Q`@\x82\x01Ra\x02\0\x85\x01Q``\x82\x01Ra\x02 \x85\x01Q`\x80\x82\x01Ra\x02@\x85\x01Q`\xA0\x82\x01Ra\x02`\x85\x01Q`\xC0\x82\x01Ra\x02\x80\x85\x01Q`\xE0\x82\x01Ra\x02\xA0\x85\x01Qa\x01\0\x82\x01Ra\x02\xC0\x85\x01Qa\x01 \x82\x01Ra\x01`\x82 \x82R\x82\x82Q\x06`\xC0\x85\x01Ra\x01`\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RPa\x01\x80\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPP`\xA0\x81 \x82\x81\x06`\xE0\x85\x01RPPP\x93\x92PPPV[a\x0C\x84a \xE1V[\x81b\x01\0\0\x03a\x0E[W`@Q\x80``\x01`@R\x80`\x10\x81R` \x01\x7F0d\x1E\x0E\x92\xBE\xBE\xF8\x18&\x8Df;\xCA\xD6\xDB\xCF\xD6\xC0\x14\x91p\xF6\xD7\xD3P\xB1\xB1\xFAl\x10\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81R` \x01\x7F\x15\xEE$u\xBE\xE5\x17\xC4\xEE\x05\xE5\x1F\xA1\xEEs\x12\xA87:\x0B\x13\xDB\x8CQ\xBA\xF0L\xB2\xE9\x9B\xD2\xBD\x81R` \x01~o\xABI\xB8i\xAEb\0\x1D\xEA\xC8x\xB2f{\xD3\x1B\xF3\xE2\x8E:-vJ\xA4\x9B\x8D\x9B\xBD\xD3\x10\x81R` \x01\x7F.\x85k\xF6\xD07p\x8F\xFAL\x06\xD4\xD8\x82\x0FE\xCC\xAD\xCE\x9CZm\x17\x8C\xBDW?\x82\xE0\xF9p\x11\x81R` \x01\x7F\x14\x07\xEE\xE3Y\x93\xF2\xB1\xAD^\xC6\xD9\xB8\x95\x0C\xA3\xAF3\x13]\x06\x03\x7F\x87\x1C^3\xBFVm\xD7\xB4\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x104W`@Q\x80``\x01`@R\x80`\x14\x81R` \x01\x7F0dKl\x9CJr\x16\x9EM\xAA1}%\xF0E\x12\xAE\x15\xC5;4\xE8\xF5\xAC\xD8\xE1U\xD0\xA6\xC1\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81R` \x01\x7F)\xE8AC\xF5\x87\rGv\xA9-\xF8\xDA\x8Cl\x93\x03\xD5\x90\x88\xF3{\xA8_@\xCFo\xD1Be\xB4\xBC\x81R` \x01\x7F\x1B\xF8-\xEB\xA7\xD7I\x02\xC3p\x8C\xC6\xE7\x0Ea\xF3\x05\x12\xEC\xA9VU!\x0E'nXX\xCE\x8FX\xE5\x81R` \x01\x7F\"\xB9K.+\0C\xD0Nf-^\xC0\x18\xEA\x1C\x8A\x99\xA2:b\xC9\xEBF\xF01\x8Fj\x19I\x85\xF0\x81R` \x01\x7F)\x96\x9D\x8DSc\xBE\xF1\x10\x1Ah\xE4F\xA1N\x1D\xA7\xBA\x92\x94\xE1B\xA1F\xA9\x80\xFD\xDBMMA\xA5\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\x12\nW`@Q\x80``\x01`@R\x80`\x05\x81R` \x01\x7F.\xE1+\xFFJ(\x13(j\x8D\xC3\x88\xCDuM\x9A>\xF2I\x065\xEB\xA5\x0C\xB9\xC2\xE5\xE7P\x80\0\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81R` \x01~\xE1Kcd\xA4~\x9CB\x84\xA9\xF8\n_\xC4\x1C\xD2\x12\xB0\xD4\xDB\xF8\xA5p7p\xA4\n\x9A49\x90\x81R` \x01\x7F0dNr\xE11\xA0)\x04\x8Bn\x19?\xD8A\x04\\\xEA$\xF6\xFDsk\xEC#\x12\x04p\x8Fp66\x81R` \x01\x7F\"9\x9C4\x13\x9B\xFF\xAD\xA8\xDE\x04j\xACP\xC9b\x8E5\x17\xA3\xA4RySd\xE7w\xCDe\xBB\x9FH\x81R` \x01\x7F\"\x90\xEE1\xC4\x82\xCF\x92\xB7\x9B\x19D\xDB\x1C\x01Gc^\x90\x04\xDB\x8C;\x9D\x13dK\xEF1\xEC;\xD3\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12D`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x12N\x84\x84a\x18GV[\x80\x82Ra\x12^\x90\x85\x90\x85\x90a\x18\x98V[` \x82\x01R\x80Qa\x12t\x90\x85\x90\x84\x90\x86\x90a\x19\x07V[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\x9Ba!\x05V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x81\x01\x83\x90R_``\x83`\x80\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x12\xCBW__\xFD[P\x80a\x13\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FBn254: scalar mul failed!\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04>V[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x13<a!#V[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x83\x01R\x83\x01Q``\x80\x83\x01\x91\x90\x91R_\x90\x83`\xC0\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x13wW__\xFD[P\x80a\x13\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: group addition failed!\0\0\0`D\x82\x01R`d\x01a\x04>V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x13\xF8\x87\x87\x87\x87a\x1AVV[\x90P_Q` a&G_9_Q\x90_R_a\x14\x14\x88\x87\x89a\x1F V[\x90Pa\x14 \x81\x83a%\xF4V[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x14L\x85a\x04\xEA\x8A_\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14t\x86a\x04\xEA\x8A` \x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x9C\x86a\x04\xEA\x8A`@\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\xC4\x86a\x04\xEA\x8A``\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x14\xEC\x86a\x04\xEA\x8A`\x80\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x15\x14\x86a\x04\xEA\x8D`@\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x15<\x86a\x04\xEA\x8D``\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x15d\x86a\x04\xEA\x8D`\x80\x01Q\x84a\x12\x80V[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x15\x8C\x86a\x04\xEA\x8D`\xA0\x01Q\x84a\x12\x80V[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x15\xB6\x87a\x04\xEA\x8B`\xA0\x01Q\x84a\x12\x80V[\x96Pa\x15\xECa\x15\xE6`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x12\x80V[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x16$WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x16h\x91\x90a&'V[a\x16\x92\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa%\xF4V[\x90R\x92\x91PPV[a\x16\xC1`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a\x189W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FBn254: Pairing check failed!\0\0\0\0`D\x82\x01R`d\x01a\x04>V[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a&G_9_Q\x90_R\x90\x83\x80\x15a\x18\x88W\x84\x93P_[\x82\x81\x10\x15a\x18|W\x83\x85\x86\t\x94P`\x01\x01a\x18fV[P`\x01\x84\x03\x93Pa\x18\x8FV[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x18\xA9WP`\x01a\x02\xA3V[\x81_\x03a\x18\xB7WP_a\x02\xA3V[` \x84\x01Q_Q` a&G_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x18\xE5W`\x01\x87\x03\x92Pa\x18\xECV[`\x01\x84\x03\x92P[Pa\x18\xF6\x82a \x0BV[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a&G_9_Q\x90_R\x82\x82\x03a\x19\x80W`\x01_[`\x0B\x81\x10\x15a\x19uW\x81\x86\x03a\x19RW\x86\x81`\x0B\x81\x10a\x19CWa\x19Ca%\xE0V[` \x02\x01Q\x93PPPPa\x18?V[\x82\x80a\x19`Wa\x19`a&\x13V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x19!V[P_\x92PPPa\x18?V[a\x19\x88a!AV[`@\x87\x01Q`\x01a\x01@\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x0B\x81\x10\x15a\x19\xCAW` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x19\x9DV[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x0B\x81\x10\x15a\x1A\x1EW\x88\x82Q\x8A\x85Q\x8C\x88Q\x8A\t\t\t\x89\x81\x88\x08\x96PP\x88\x89\x8D\x84Q\x8C\x03\x08\x86\t\x94P` \x93\x84\x01\x93\x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x19\xDEV[PPPP\x80\x92PP_a\x1A0\x83a \x0BV[\x90P` \x8A\x01Q\x85\x81\x89\t\x96PP\x84\x81\x87\t\x95P\x84\x82\x87\t\x9A\x99PPPPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R______Q` a&G_9_Q\x90_R\x90P`\x80\x89\x01Q\x81` \x8A\x01Q` \x8C\x01Q\t\x95P\x89Q\x94P\x81`\xA0\x8B\x01Q``\x8C\x01Q\t\x93P\x81a\x01\xA0\x89\x01Q\x85\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x85\t\x92P\x81a\x01\xC0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x85\t\x92P\x81a\x01\xE0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x85\t\x92P\x81a\x02\0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x85\t\x92P\x81a\x02 \x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92PP\x80\x84\x83\t\x93P\x80\x84\x86\x08\x94Pa\x1B\xC3\x87`\xA0\x01Q\x86a\x12\x80V[\x95P\x88Q``\x8A\x01Q`\x80\x8B\x01Q\x83\x82\x84\t\x97P\x83a\x02\xC0\x8B\x01Q\x89\t\x97P\x83a\x02@\x8B\x01Q\x83\t\x95P\x83a\x01\xA0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02`\x8B\x01Q\x83\t\x95P\x83a\x01\xC0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\x80\x8B\x01Q\x83\t\x95P\x83a\x01\xE0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\xA0\x8B\x01Q\x83\t\x95P\x83a\x02\0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95PPPP\x80\x83\x86\t\x94Pa\x1C\x8A\x86a\x04\xEA\x8C`\xC0\x01Q\x88\x85a\x1C\x85\x91\x90a%\xF4V[a\x12\x80V[\x95Pa\x1C\xA3\x86a\x04\xEA\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x12\x80V[\x95Pa\x1C\xBD\x86a\x04\xEA\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x12\x80V[\x95Pa\x1C\xD7\x86a\x04\xEA\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x12\x80V[\x95Pa\x1C\xF1\x86a\x04\xEA\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x12\x80V[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x1D\x16\x86a\x04\xEA\x8Ca\x01`\x01Q\x86a\x12\x80V[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x1D;\x86a\x04\xEA\x8Ca\x01\x80\x01Q\x86a\x12\x80V[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1Dj\x86a\x04\xEA\x8Ca\x01\xE0\x01Q\x86a\x12\x80V[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1D\x99\x86a\x04\xEA\x8Ca\x02\0\x01Q\x86a\x12\x80V[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1D\xC8\x86a\x04\xEA\x8Ca\x02 \x01Q\x86a\x12\x80V[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1D\xF7\x86a\x04\xEA\x8Ca\x02@\x01Q\x86a\x12\x80V[\x95Pa\x1E\x14\x86a\x04\xEA\x8Ca\x01\xA0\x01Qa\x1C\x85\x8Ba\x02 \x01Qa \xACV[\x95Pa\x1E%\x86\x8Ba\x01\xC0\x01Qa\x13!V[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92P\x80a\x01\xE0\x88\x01Q\x84\t\x92P\x80a\x02\0\x88\x01Q\x84\t\x92P\x80a\x02 \x88\x01Q\x84\t\x92Pa\x1Ek\x86a\x04\xEA\x8Ca\x02`\x01Q\x86a\x12\x80V[\x95Pa\x1Ey\x88_\x01Qa \xACV[\x94Pa\x1E\x8D\x86a\x04\xEA\x89`\xC0\x01Q\x88a\x12\x80V[\x95P\x80`\x01\x89Q\x08`\xA0\x8A\x01Q\x90\x93P\x81\x90\x80\t\x91P\x80\x82\x84\t\x92P\x80\x83\x86\t\x94Pa\x1E\xC1\x86a\x04\xEA\x89`\xE0\x01Q\x88a\x12\x80V[\x95P\x80\x83\x86\t\x94Pa\x1E\xDC\x86a\x04\xEA\x89a\x01\0\x01Q\x88a\x12\x80V[\x95P\x80\x83\x86\t\x94Pa\x1E\xF7\x86a\x04\xEA\x89a\x01 \x01Q\x88a\x12\x80V[\x95P\x80\x83\x86\t\x94Pa\x1F\x12\x86a\x04\xEA\x89a\x01@\x01Q\x88a\x12\x80V[\x9A\x99PPPPPPPPPPV[___Q` a&G_9_Q\x90_R\x90P_\x83` \x01Q\x90P_\x84`@\x01Q\x90P_`\x01\x90P``\x88\x01Q`\x80\x89\x01Qa\x01\xA0\x89\x01Qa\x02@\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xC0\x89\x01Qa\x02`\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xE0\x89\x01Qa\x02\x80\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02\0\x89\x01Qa\x02\xA0\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02 \x89\x01Q\x91Pa\x02\xC0\x89\x01Q\x86\x87\x82\x89\x85\x87\x08\t\x85\t\x93PPPP\x87Q` \x89\x01Q\x85\x86\x86\x83\t\x87\x03\x85\x08\x96PP\x84\x85\x83\x83\t\x86\x03\x87\x08\x99\x98PPPPPPPPPV[____Q` a&G_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x84``\x82\x01R`\x02\x82\x03`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x92PP_Q\x92P\x81a \xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: pow precompile failed!\0\0\0`D\x82\x01R`d\x01a\x04>V[PP\x91\x90PV[_a \xC4_Q` a&G_9_Q\x90_R\x83a&'V[a \xDB\x90_Q` a&G_9_Q\x90_Ra%\xF4V[\x92\x91PPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a!\0a!AV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\x98Wa!\x98a!`V[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\x98Wa!\x98a!`V[_`@\x82\x84\x03\x12\x15a!\xD2W__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\xF5Wa!\xF5a!`V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a\"\x1EW__\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\"BWa\"Ba!`V[`@R\x80a\x01`\x84\x01\x85\x81\x11\x15a\"WW__\xFD[\x84[\x81\x81\x10\x15a\"qW\x805\x83R` \x92\x83\x01\x92\x01a\"YV[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a\"\x8DW__\xFD[a\"\x95a!tV[\x90Pa\"\xA1\x83\x83a!\xC2V[\x81Ra\"\xB0\x83`@\x84\x01a!\xC2V[` \x82\x01Ra\"\xC2\x83`\x80\x84\x01a!\xC2V[`@\x82\x01Ra\"\xD4\x83`\xC0\x84\x01a!\xC2V[``\x82\x01Ra\"\xE7\x83a\x01\0\x84\x01a!\xC2V[`\x80\x82\x01Ra\"\xFA\x83a\x01@\x84\x01a!\xC2V[`\xA0\x82\x01Ra#\r\x83a\x01\x80\x84\x01a!\xC2V[`\xC0\x82\x01Ra# \x83a\x01\xC0\x84\x01a!\xC2V[`\xE0\x82\x01Ra#3\x83a\x02\0\x84\x01a!\xC2V[a\x01\0\x82\x01Ra#G\x83a\x02@\x84\x01a!\xC2V[a\x01 \x82\x01Ra#[\x83a\x02\x80\x84\x01a!\xC2V[a\x01@\x82\x01Ra#o\x83a\x02\xC0\x84\x01a!\xC2V[a\x01`\x82\x01Ra#\x83\x83a\x03\0\x84\x01a!\xC2V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[___\x83\x85\x03a\n\xE0\x81\x12\x15a$\x1BW__\xFD[a\x05\0\x81\x12\x15a$)W__\xFD[Pa$2a!\x9EV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra$M\x86`@\x87\x01a!\xC2V[`@\x82\x01Ra$_\x86`\x80\x87\x01a!\xC2V[``\x82\x01Ra$q\x86`\xC0\x87\x01a!\xC2V[`\x80\x82\x01Ra$\x84\x86a\x01\0\x87\x01a!\xC2V[`\xA0\x82\x01Ra$\x97\x86a\x01@\x87\x01a!\xC2V[`\xC0\x82\x01Ra$\xAA\x86a\x01\x80\x87\x01a!\xC2V[`\xE0\x82\x01Ra$\xBD\x86a\x01\xC0\x87\x01a!\xC2V[a\x01\0\x82\x01Ra$\xD1\x86a\x02\0\x87\x01a!\xC2V[a\x01 \x82\x01Ra$\xE5\x86a\x02@\x87\x01a!\xC2V[a\x01@\x82\x01Ra$\xF9\x86a\x02\x80\x87\x01a!\xC2V[a\x01`\x82\x01Ra%\r\x86a\x02\xC0\x87\x01a!\xC2V[a\x01\x80\x82\x01Ra%!\x86a\x03\0\x87\x01a!\xC2V[a\x01\xA0\x82\x01Ra%5\x86a\x03@\x87\x01a!\xC2V[a\x01\xC0\x82\x01Ra%I\x86a\x03\x80\x87\x01a!\xC2V[a\x01\xE0\x82\x01Ra%]\x86a\x03\xC0\x87\x01a!\xC2V[a\x02\0\x82\x01Ra%q\x86a\x04\0\x87\x01a!\xC2V[a\x02 \x82\x01Ra%\x85\x86a\x04@\x87\x01a!\xC2V[a\x02@\x82\x01Ra%\x99\x86a\x04\x80\x87\x01a!\xC2V[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa%\xC7\x85a\x05\0\x86\x01a\"\x0FV[\x91Pa%\xD7\x85a\x06`\x86\x01a\"|V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a \xDBWcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a&AWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\xA1dsolcC\0\x08\x1C\0\n",
2751    );
2752    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2753    /**Custom error with signature `InvalidPlonkArgs()` and selector `0xfd9a2d1b`.
2754    ```solidity
2755    error InvalidPlonkArgs();
2756    ```*/
2757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2758    #[derive(Clone)]
2759    pub struct InvalidPlonkArgs {}
2760    #[allow(
2761        non_camel_case_types,
2762        non_snake_case,
2763        clippy::pub_underscore_fields,
2764        clippy::style
2765    )]
2766    const _: () = {
2767        use alloy::sol_types as alloy_sol_types;
2768        #[doc(hidden)]
2769        type UnderlyingSolTuple<'a> = ();
2770        #[doc(hidden)]
2771        type UnderlyingRustTuple<'a> = ();
2772        #[cfg(test)]
2773        #[allow(dead_code, unreachable_patterns)]
2774        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2775            match _t {
2776                alloy_sol_types::private::AssertTypeEq::<
2777                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2778                >(_) => {},
2779            }
2780        }
2781        #[automatically_derived]
2782        #[doc(hidden)]
2783        impl ::core::convert::From<InvalidPlonkArgs> for UnderlyingRustTuple<'_> {
2784            fn from(value: InvalidPlonkArgs) -> Self {
2785                ()
2786            }
2787        }
2788        #[automatically_derived]
2789        #[doc(hidden)]
2790        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPlonkArgs {
2791            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2792                Self {}
2793            }
2794        }
2795        #[automatically_derived]
2796        impl alloy_sol_types::SolError for InvalidPlonkArgs {
2797            type Parameters<'a> = UnderlyingSolTuple<'a>;
2798            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2799            const SIGNATURE: &'static str = "InvalidPlonkArgs()";
2800            const SELECTOR: [u8; 4] = [253u8, 154u8, 45u8, 27u8];
2801            #[inline]
2802            fn new<'a>(
2803                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2804            ) -> Self {
2805                tuple.into()
2806            }
2807            #[inline]
2808            fn tokenize(&self) -> Self::Token<'_> {
2809                ()
2810            }
2811        }
2812    };
2813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2814    /**Custom error with signature `UnsupportedDegree()` and selector `0xe2ef09e5`.
2815    ```solidity
2816    error UnsupportedDegree();
2817    ```*/
2818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2819    #[derive(Clone)]
2820    pub struct UnsupportedDegree {}
2821    #[allow(
2822        non_camel_case_types,
2823        non_snake_case,
2824        clippy::pub_underscore_fields,
2825        clippy::style
2826    )]
2827    const _: () = {
2828        use alloy::sol_types as alloy_sol_types;
2829        #[doc(hidden)]
2830        type UnderlyingSolTuple<'a> = ();
2831        #[doc(hidden)]
2832        type UnderlyingRustTuple<'a> = ();
2833        #[cfg(test)]
2834        #[allow(dead_code, unreachable_patterns)]
2835        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2836            match _t {
2837                alloy_sol_types::private::AssertTypeEq::<
2838                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2839                >(_) => {},
2840            }
2841        }
2842        #[automatically_derived]
2843        #[doc(hidden)]
2844        impl ::core::convert::From<UnsupportedDegree> for UnderlyingRustTuple<'_> {
2845            fn from(value: UnsupportedDegree) -> Self {
2846                ()
2847            }
2848        }
2849        #[automatically_derived]
2850        #[doc(hidden)]
2851        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UnsupportedDegree {
2852            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2853                Self {}
2854            }
2855        }
2856        #[automatically_derived]
2857        impl alloy_sol_types::SolError for UnsupportedDegree {
2858            type Parameters<'a> = UnderlyingSolTuple<'a>;
2859            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2860            const SIGNATURE: &'static str = "UnsupportedDegree()";
2861            const SELECTOR: [u8; 4] = [226u8, 239u8, 9u8, 229u8];
2862            #[inline]
2863            fn new<'a>(
2864                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2865            ) -> Self {
2866                tuple.into()
2867            }
2868            #[inline]
2869            fn tokenize(&self) -> Self::Token<'_> {
2870                ()
2871            }
2872        }
2873    };
2874    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2875    /**Custom error with signature `WrongPlonkVK()` and selector `0x41f53b12`.
2876    ```solidity
2877    error WrongPlonkVK();
2878    ```*/
2879    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2880    #[derive(Clone)]
2881    pub struct WrongPlonkVK {}
2882    #[allow(
2883        non_camel_case_types,
2884        non_snake_case,
2885        clippy::pub_underscore_fields,
2886        clippy::style
2887    )]
2888    const _: () = {
2889        use alloy::sol_types as alloy_sol_types;
2890        #[doc(hidden)]
2891        type UnderlyingSolTuple<'a> = ();
2892        #[doc(hidden)]
2893        type UnderlyingRustTuple<'a> = ();
2894        #[cfg(test)]
2895        #[allow(dead_code, unreachable_patterns)]
2896        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2897            match _t {
2898                alloy_sol_types::private::AssertTypeEq::<
2899                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2900                >(_) => {},
2901            }
2902        }
2903        #[automatically_derived]
2904        #[doc(hidden)]
2905        impl ::core::convert::From<WrongPlonkVK> for UnderlyingRustTuple<'_> {
2906            fn from(value: WrongPlonkVK) -> Self {
2907                ()
2908            }
2909        }
2910        #[automatically_derived]
2911        #[doc(hidden)]
2912        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongPlonkVK {
2913            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2914                Self {}
2915            }
2916        }
2917        #[automatically_derived]
2918        impl alloy_sol_types::SolError for WrongPlonkVK {
2919            type Parameters<'a> = UnderlyingSolTuple<'a>;
2920            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2921            const SIGNATURE: &'static str = "WrongPlonkVK()";
2922            const SELECTOR: [u8; 4] = [65u8, 245u8, 59u8, 18u8];
2923            #[inline]
2924            fn new<'a>(
2925                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2926            ) -> Self {
2927                tuple.into()
2928            }
2929            #[inline]
2930            fn tokenize(&self) -> Self::Token<'_> {
2931                ()
2932            }
2933        }
2934    };
2935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2936    /**Function with signature `BETA_H_X0()` and selector `0x834c452a`.
2937    ```solidity
2938    function BETA_H_X0() external view returns (uint256);
2939    ```*/
2940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2941    #[derive(Clone)]
2942    pub struct BETA_H_X0Call {}
2943    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2944    ///Container type for the return parameters of the [`BETA_H_X0()`](BETA_H_X0Call) function.
2945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2946    #[derive(Clone)]
2947    pub struct BETA_H_X0Return {
2948        #[allow(missing_docs)]
2949        pub _0: alloy::sol_types::private::primitives::aliases::U256,
2950    }
2951    #[allow(
2952        non_camel_case_types,
2953        non_snake_case,
2954        clippy::pub_underscore_fields,
2955        clippy::style
2956    )]
2957    const _: () = {
2958        use alloy::sol_types as alloy_sol_types;
2959        {
2960            #[doc(hidden)]
2961            type UnderlyingSolTuple<'a> = ();
2962            #[doc(hidden)]
2963            type UnderlyingRustTuple<'a> = ();
2964            #[cfg(test)]
2965            #[allow(dead_code, unreachable_patterns)]
2966            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2967                match _t {
2968                    alloy_sol_types::private::AssertTypeEq::<
2969                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2970                    >(_) => {},
2971                }
2972            }
2973            #[automatically_derived]
2974            #[doc(hidden)]
2975            impl ::core::convert::From<BETA_H_X0Call> for UnderlyingRustTuple<'_> {
2976                fn from(value: BETA_H_X0Call) -> Self {
2977                    ()
2978                }
2979            }
2980            #[automatically_derived]
2981            #[doc(hidden)]
2982            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X0Call {
2983                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2984                    Self {}
2985                }
2986            }
2987        }
2988        {
2989            #[doc(hidden)]
2990            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
2991            #[doc(hidden)]
2992            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
2993            #[cfg(test)]
2994            #[allow(dead_code, unreachable_patterns)]
2995            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2996                match _t {
2997                    alloy_sol_types::private::AssertTypeEq::<
2998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2999                    >(_) => {},
3000                }
3001            }
3002            #[automatically_derived]
3003            #[doc(hidden)]
3004            impl ::core::convert::From<BETA_H_X0Return> for UnderlyingRustTuple<'_> {
3005                fn from(value: BETA_H_X0Return) -> Self {
3006                    (value._0,)
3007                }
3008            }
3009            #[automatically_derived]
3010            #[doc(hidden)]
3011            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X0Return {
3012                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3013                    Self { _0: tuple.0 }
3014                }
3015            }
3016        }
3017        #[automatically_derived]
3018        impl alloy_sol_types::SolCall for BETA_H_X0Call {
3019            type Parameters<'a> = ();
3020            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3021            type Return = BETA_H_X0Return;
3022            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3023            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3024            const SIGNATURE: &'static str = "BETA_H_X0()";
3025            const SELECTOR: [u8; 4] = [131u8, 76u8, 69u8, 42u8];
3026            #[inline]
3027            fn new<'a>(
3028                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3029            ) -> Self {
3030                tuple.into()
3031            }
3032            #[inline]
3033            fn tokenize(&self) -> Self::Token<'_> {
3034                ()
3035            }
3036            #[inline]
3037            fn abi_decode_returns(
3038                data: &[u8],
3039                validate: bool,
3040            ) -> alloy_sol_types::Result<Self::Return> {
3041                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3042                    data, validate,
3043                )
3044                .map(Into::into)
3045            }
3046        }
3047    };
3048    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3049    /**Function with signature `BETA_H_X1()` and selector `0xaf196ba2`.
3050    ```solidity
3051    function BETA_H_X1() external view returns (uint256);
3052    ```*/
3053    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3054    #[derive(Clone)]
3055    pub struct BETA_H_X1Call {}
3056    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3057    ///Container type for the return parameters of the [`BETA_H_X1()`](BETA_H_X1Call) function.
3058    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3059    #[derive(Clone)]
3060    pub struct BETA_H_X1Return {
3061        #[allow(missing_docs)]
3062        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3063    }
3064    #[allow(
3065        non_camel_case_types,
3066        non_snake_case,
3067        clippy::pub_underscore_fields,
3068        clippy::style
3069    )]
3070    const _: () = {
3071        use alloy::sol_types as alloy_sol_types;
3072        {
3073            #[doc(hidden)]
3074            type UnderlyingSolTuple<'a> = ();
3075            #[doc(hidden)]
3076            type UnderlyingRustTuple<'a> = ();
3077            #[cfg(test)]
3078            #[allow(dead_code, unreachable_patterns)]
3079            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3080                match _t {
3081                    alloy_sol_types::private::AssertTypeEq::<
3082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3083                    >(_) => {},
3084                }
3085            }
3086            #[automatically_derived]
3087            #[doc(hidden)]
3088            impl ::core::convert::From<BETA_H_X1Call> for UnderlyingRustTuple<'_> {
3089                fn from(value: BETA_H_X1Call) -> Self {
3090                    ()
3091                }
3092            }
3093            #[automatically_derived]
3094            #[doc(hidden)]
3095            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X1Call {
3096                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3097                    Self {}
3098                }
3099            }
3100        }
3101        {
3102            #[doc(hidden)]
3103            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3104            #[doc(hidden)]
3105            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
3106            #[cfg(test)]
3107            #[allow(dead_code, unreachable_patterns)]
3108            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3109                match _t {
3110                    alloy_sol_types::private::AssertTypeEq::<
3111                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3112                    >(_) => {},
3113                }
3114            }
3115            #[automatically_derived]
3116            #[doc(hidden)]
3117            impl ::core::convert::From<BETA_H_X1Return> for UnderlyingRustTuple<'_> {
3118                fn from(value: BETA_H_X1Return) -> Self {
3119                    (value._0,)
3120                }
3121            }
3122            #[automatically_derived]
3123            #[doc(hidden)]
3124            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X1Return {
3125                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3126                    Self { _0: tuple.0 }
3127                }
3128            }
3129        }
3130        #[automatically_derived]
3131        impl alloy_sol_types::SolCall for BETA_H_X1Call {
3132            type Parameters<'a> = ();
3133            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3134            type Return = BETA_H_X1Return;
3135            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3136            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3137            const SIGNATURE: &'static str = "BETA_H_X1()";
3138            const SELECTOR: [u8; 4] = [175u8, 25u8, 107u8, 162u8];
3139            #[inline]
3140            fn new<'a>(
3141                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3142            ) -> Self {
3143                tuple.into()
3144            }
3145            #[inline]
3146            fn tokenize(&self) -> Self::Token<'_> {
3147                ()
3148            }
3149            #[inline]
3150            fn abi_decode_returns(
3151                data: &[u8],
3152                validate: bool,
3153            ) -> alloy_sol_types::Result<Self::Return> {
3154                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3155                    data, validate,
3156                )
3157                .map(Into::into)
3158            }
3159        }
3160    };
3161    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3162    /**Function with signature `BETA_H_Y0()` and selector `0xf5144326`.
3163    ```solidity
3164    function BETA_H_Y0() external view returns (uint256);
3165    ```*/
3166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3167    #[derive(Clone)]
3168    pub struct BETA_H_Y0Call {}
3169    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3170    ///Container type for the return parameters of the [`BETA_H_Y0()`](BETA_H_Y0Call) function.
3171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3172    #[derive(Clone)]
3173    pub struct BETA_H_Y0Return {
3174        #[allow(missing_docs)]
3175        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3176    }
3177    #[allow(
3178        non_camel_case_types,
3179        non_snake_case,
3180        clippy::pub_underscore_fields,
3181        clippy::style
3182    )]
3183    const _: () = {
3184        use alloy::sol_types as alloy_sol_types;
3185        {
3186            #[doc(hidden)]
3187            type UnderlyingSolTuple<'a> = ();
3188            #[doc(hidden)]
3189            type UnderlyingRustTuple<'a> = ();
3190            #[cfg(test)]
3191            #[allow(dead_code, unreachable_patterns)]
3192            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3193                match _t {
3194                    alloy_sol_types::private::AssertTypeEq::<
3195                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3196                    >(_) => {},
3197                }
3198            }
3199            #[automatically_derived]
3200            #[doc(hidden)]
3201            impl ::core::convert::From<BETA_H_Y0Call> for UnderlyingRustTuple<'_> {
3202                fn from(value: BETA_H_Y0Call) -> Self {
3203                    ()
3204                }
3205            }
3206            #[automatically_derived]
3207            #[doc(hidden)]
3208            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y0Call {
3209                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3210                    Self {}
3211                }
3212            }
3213        }
3214        {
3215            #[doc(hidden)]
3216            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3217            #[doc(hidden)]
3218            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
3219            #[cfg(test)]
3220            #[allow(dead_code, unreachable_patterns)]
3221            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3222                match _t {
3223                    alloy_sol_types::private::AssertTypeEq::<
3224                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3225                    >(_) => {},
3226                }
3227            }
3228            #[automatically_derived]
3229            #[doc(hidden)]
3230            impl ::core::convert::From<BETA_H_Y0Return> for UnderlyingRustTuple<'_> {
3231                fn from(value: BETA_H_Y0Return) -> Self {
3232                    (value._0,)
3233                }
3234            }
3235            #[automatically_derived]
3236            #[doc(hidden)]
3237            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y0Return {
3238                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3239                    Self { _0: tuple.0 }
3240                }
3241            }
3242        }
3243        #[automatically_derived]
3244        impl alloy_sol_types::SolCall for BETA_H_Y0Call {
3245            type Parameters<'a> = ();
3246            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3247            type Return = BETA_H_Y0Return;
3248            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3249            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3250            const SIGNATURE: &'static str = "BETA_H_Y0()";
3251            const SELECTOR: [u8; 4] = [245u8, 20u8, 67u8, 38u8];
3252            #[inline]
3253            fn new<'a>(
3254                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3255            ) -> Self {
3256                tuple.into()
3257            }
3258            #[inline]
3259            fn tokenize(&self) -> Self::Token<'_> {
3260                ()
3261            }
3262            #[inline]
3263            fn abi_decode_returns(
3264                data: &[u8],
3265                validate: bool,
3266            ) -> alloy_sol_types::Result<Self::Return> {
3267                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3268                    data, validate,
3269                )
3270                .map(Into::into)
3271            }
3272        }
3273    };
3274    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3275    /**Function with signature `BETA_H_Y1()` and selector `0x4b4734e3`.
3276    ```solidity
3277    function BETA_H_Y1() external view returns (uint256);
3278    ```*/
3279    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3280    #[derive(Clone)]
3281    pub struct BETA_H_Y1Call {}
3282    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3283    ///Container type for the return parameters of the [`BETA_H_Y1()`](BETA_H_Y1Call) function.
3284    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3285    #[derive(Clone)]
3286    pub struct BETA_H_Y1Return {
3287        #[allow(missing_docs)]
3288        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3289    }
3290    #[allow(
3291        non_camel_case_types,
3292        non_snake_case,
3293        clippy::pub_underscore_fields,
3294        clippy::style
3295    )]
3296    const _: () = {
3297        use alloy::sol_types as alloy_sol_types;
3298        {
3299            #[doc(hidden)]
3300            type UnderlyingSolTuple<'a> = ();
3301            #[doc(hidden)]
3302            type UnderlyingRustTuple<'a> = ();
3303            #[cfg(test)]
3304            #[allow(dead_code, unreachable_patterns)]
3305            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3306                match _t {
3307                    alloy_sol_types::private::AssertTypeEq::<
3308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3309                    >(_) => {},
3310                }
3311            }
3312            #[automatically_derived]
3313            #[doc(hidden)]
3314            impl ::core::convert::From<BETA_H_Y1Call> for UnderlyingRustTuple<'_> {
3315                fn from(value: BETA_H_Y1Call) -> Self {
3316                    ()
3317                }
3318            }
3319            #[automatically_derived]
3320            #[doc(hidden)]
3321            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y1Call {
3322                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3323                    Self {}
3324                }
3325            }
3326        }
3327        {
3328            #[doc(hidden)]
3329            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3330            #[doc(hidden)]
3331            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
3332            #[cfg(test)]
3333            #[allow(dead_code, unreachable_patterns)]
3334            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3335                match _t {
3336                    alloy_sol_types::private::AssertTypeEq::<
3337                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3338                    >(_) => {},
3339                }
3340            }
3341            #[automatically_derived]
3342            #[doc(hidden)]
3343            impl ::core::convert::From<BETA_H_Y1Return> for UnderlyingRustTuple<'_> {
3344                fn from(value: BETA_H_Y1Return) -> Self {
3345                    (value._0,)
3346                }
3347            }
3348            #[automatically_derived]
3349            #[doc(hidden)]
3350            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y1Return {
3351                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3352                    Self { _0: tuple.0 }
3353                }
3354            }
3355        }
3356        #[automatically_derived]
3357        impl alloy_sol_types::SolCall for BETA_H_Y1Call {
3358            type Parameters<'a> = ();
3359            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3360            type Return = BETA_H_Y1Return;
3361            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3362            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3363            const SIGNATURE: &'static str = "BETA_H_Y1()";
3364            const SELECTOR: [u8; 4] = [75u8, 71u8, 52u8, 227u8];
3365            #[inline]
3366            fn new<'a>(
3367                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3368            ) -> Self {
3369                tuple.into()
3370            }
3371            #[inline]
3372            fn tokenize(&self) -> Self::Token<'_> {
3373                ()
3374            }
3375            #[inline]
3376            fn abi_decode_returns(
3377                data: &[u8],
3378                validate: bool,
3379            ) -> alloy_sol_types::Result<Self::Return> {
3380                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3381                    data, validate,
3382                )
3383                .map(Into::into)
3384            }
3385        }
3386    };
3387    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3388    /**Function with signature `COSET_K1()` and selector `0xe3512d56`.
3389    ```solidity
3390    function COSET_K1() external view returns (uint256);
3391    ```*/
3392    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3393    #[derive(Clone)]
3394    pub struct COSET_K1Call {}
3395    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3396    ///Container type for the return parameters of the [`COSET_K1()`](COSET_K1Call) function.
3397    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3398    #[derive(Clone)]
3399    pub struct COSET_K1Return {
3400        #[allow(missing_docs)]
3401        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3402    }
3403    #[allow(
3404        non_camel_case_types,
3405        non_snake_case,
3406        clippy::pub_underscore_fields,
3407        clippy::style
3408    )]
3409    const _: () = {
3410        use alloy::sol_types as alloy_sol_types;
3411        {
3412            #[doc(hidden)]
3413            type UnderlyingSolTuple<'a> = ();
3414            #[doc(hidden)]
3415            type UnderlyingRustTuple<'a> = ();
3416            #[cfg(test)]
3417            #[allow(dead_code, unreachable_patterns)]
3418            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3419                match _t {
3420                    alloy_sol_types::private::AssertTypeEq::<
3421                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3422                    >(_) => {},
3423                }
3424            }
3425            #[automatically_derived]
3426            #[doc(hidden)]
3427            impl ::core::convert::From<COSET_K1Call> for UnderlyingRustTuple<'_> {
3428                fn from(value: COSET_K1Call) -> Self {
3429                    ()
3430                }
3431            }
3432            #[automatically_derived]
3433            #[doc(hidden)]
3434            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K1Call {
3435                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3436                    Self {}
3437                }
3438            }
3439        }
3440        {
3441            #[doc(hidden)]
3442            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3443            #[doc(hidden)]
3444            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
3445            #[cfg(test)]
3446            #[allow(dead_code, unreachable_patterns)]
3447            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3448                match _t {
3449                    alloy_sol_types::private::AssertTypeEq::<
3450                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3451                    >(_) => {},
3452                }
3453            }
3454            #[automatically_derived]
3455            #[doc(hidden)]
3456            impl ::core::convert::From<COSET_K1Return> for UnderlyingRustTuple<'_> {
3457                fn from(value: COSET_K1Return) -> Self {
3458                    (value._0,)
3459                }
3460            }
3461            #[automatically_derived]
3462            #[doc(hidden)]
3463            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K1Return {
3464                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3465                    Self { _0: tuple.0 }
3466                }
3467            }
3468        }
3469        #[automatically_derived]
3470        impl alloy_sol_types::SolCall for COSET_K1Call {
3471            type Parameters<'a> = ();
3472            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3473            type Return = COSET_K1Return;
3474            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3475            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3476            const SIGNATURE: &'static str = "COSET_K1()";
3477            const SELECTOR: [u8; 4] = [227u8, 81u8, 45u8, 86u8];
3478            #[inline]
3479            fn new<'a>(
3480                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3481            ) -> Self {
3482                tuple.into()
3483            }
3484            #[inline]
3485            fn tokenize(&self) -> Self::Token<'_> {
3486                ()
3487            }
3488            #[inline]
3489            fn abi_decode_returns(
3490                data: &[u8],
3491                validate: bool,
3492            ) -> alloy_sol_types::Result<Self::Return> {
3493                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3494                    data, validate,
3495                )
3496                .map(Into::into)
3497            }
3498        }
3499    };
3500    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3501    /**Function with signature `COSET_K2()` and selector `0x0c551f3f`.
3502    ```solidity
3503    function COSET_K2() external view returns (uint256);
3504    ```*/
3505    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3506    #[derive(Clone)]
3507    pub struct COSET_K2Call {}
3508    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3509    ///Container type for the return parameters of the [`COSET_K2()`](COSET_K2Call) function.
3510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3511    #[derive(Clone)]
3512    pub struct COSET_K2Return {
3513        #[allow(missing_docs)]
3514        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3515    }
3516    #[allow(
3517        non_camel_case_types,
3518        non_snake_case,
3519        clippy::pub_underscore_fields,
3520        clippy::style
3521    )]
3522    const _: () = {
3523        use alloy::sol_types as alloy_sol_types;
3524        {
3525            #[doc(hidden)]
3526            type UnderlyingSolTuple<'a> = ();
3527            #[doc(hidden)]
3528            type UnderlyingRustTuple<'a> = ();
3529            #[cfg(test)]
3530            #[allow(dead_code, unreachable_patterns)]
3531            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3532                match _t {
3533                    alloy_sol_types::private::AssertTypeEq::<
3534                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3535                    >(_) => {},
3536                }
3537            }
3538            #[automatically_derived]
3539            #[doc(hidden)]
3540            impl ::core::convert::From<COSET_K2Call> for UnderlyingRustTuple<'_> {
3541                fn from(value: COSET_K2Call) -> Self {
3542                    ()
3543                }
3544            }
3545            #[automatically_derived]
3546            #[doc(hidden)]
3547            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K2Call {
3548                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3549                    Self {}
3550                }
3551            }
3552        }
3553        {
3554            #[doc(hidden)]
3555            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3556            #[doc(hidden)]
3557            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
3558            #[cfg(test)]
3559            #[allow(dead_code, unreachable_patterns)]
3560            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3561                match _t {
3562                    alloy_sol_types::private::AssertTypeEq::<
3563                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3564                    >(_) => {},
3565                }
3566            }
3567            #[automatically_derived]
3568            #[doc(hidden)]
3569            impl ::core::convert::From<COSET_K2Return> for UnderlyingRustTuple<'_> {
3570                fn from(value: COSET_K2Return) -> Self {
3571                    (value._0,)
3572                }
3573            }
3574            #[automatically_derived]
3575            #[doc(hidden)]
3576            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K2Return {
3577                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3578                    Self { _0: tuple.0 }
3579                }
3580            }
3581        }
3582        #[automatically_derived]
3583        impl alloy_sol_types::SolCall for COSET_K2Call {
3584            type Parameters<'a> = ();
3585            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3586            type Return = COSET_K2Return;
3587            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3588            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3589            const SIGNATURE: &'static str = "COSET_K2()";
3590            const SELECTOR: [u8; 4] = [12u8, 85u8, 31u8, 63u8];
3591            #[inline]
3592            fn new<'a>(
3593                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3594            ) -> Self {
3595                tuple.into()
3596            }
3597            #[inline]
3598            fn tokenize(&self) -> Self::Token<'_> {
3599                ()
3600            }
3601            #[inline]
3602            fn abi_decode_returns(
3603                data: &[u8],
3604                validate: bool,
3605            ) -> alloy_sol_types::Result<Self::Return> {
3606                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3607                    data, validate,
3608                )
3609                .map(Into::into)
3610            }
3611        }
3612    };
3613    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3614    /**Function with signature `COSET_K3()` and selector `0x5a14c0fe`.
3615    ```solidity
3616    function COSET_K3() external view returns (uint256);
3617    ```*/
3618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3619    #[derive(Clone)]
3620    pub struct COSET_K3Call {}
3621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3622    ///Container type for the return parameters of the [`COSET_K3()`](COSET_K3Call) function.
3623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3624    #[derive(Clone)]
3625    pub struct COSET_K3Return {
3626        #[allow(missing_docs)]
3627        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3628    }
3629    #[allow(
3630        non_camel_case_types,
3631        non_snake_case,
3632        clippy::pub_underscore_fields,
3633        clippy::style
3634    )]
3635    const _: () = {
3636        use alloy::sol_types as alloy_sol_types;
3637        {
3638            #[doc(hidden)]
3639            type UnderlyingSolTuple<'a> = ();
3640            #[doc(hidden)]
3641            type UnderlyingRustTuple<'a> = ();
3642            #[cfg(test)]
3643            #[allow(dead_code, unreachable_patterns)]
3644            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3645                match _t {
3646                    alloy_sol_types::private::AssertTypeEq::<
3647                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3648                    >(_) => {},
3649                }
3650            }
3651            #[automatically_derived]
3652            #[doc(hidden)]
3653            impl ::core::convert::From<COSET_K3Call> for UnderlyingRustTuple<'_> {
3654                fn from(value: COSET_K3Call) -> Self {
3655                    ()
3656                }
3657            }
3658            #[automatically_derived]
3659            #[doc(hidden)]
3660            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K3Call {
3661                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3662                    Self {}
3663                }
3664            }
3665        }
3666        {
3667            #[doc(hidden)]
3668            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3669            #[doc(hidden)]
3670            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
3671            #[cfg(test)]
3672            #[allow(dead_code, unreachable_patterns)]
3673            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3674                match _t {
3675                    alloy_sol_types::private::AssertTypeEq::<
3676                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3677                    >(_) => {},
3678                }
3679            }
3680            #[automatically_derived]
3681            #[doc(hidden)]
3682            impl ::core::convert::From<COSET_K3Return> for UnderlyingRustTuple<'_> {
3683                fn from(value: COSET_K3Return) -> Self {
3684                    (value._0,)
3685                }
3686            }
3687            #[automatically_derived]
3688            #[doc(hidden)]
3689            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K3Return {
3690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3691                    Self { _0: tuple.0 }
3692                }
3693            }
3694        }
3695        #[automatically_derived]
3696        impl alloy_sol_types::SolCall for COSET_K3Call {
3697            type Parameters<'a> = ();
3698            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3699            type Return = COSET_K3Return;
3700            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3701            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3702            const SIGNATURE: &'static str = "COSET_K3()";
3703            const SELECTOR: [u8; 4] = [90u8, 20u8, 192u8, 254u8];
3704            #[inline]
3705            fn new<'a>(
3706                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3707            ) -> Self {
3708                tuple.into()
3709            }
3710            #[inline]
3711            fn tokenize(&self) -> Self::Token<'_> {
3712                ()
3713            }
3714            #[inline]
3715            fn abi_decode_returns(
3716                data: &[u8],
3717                validate: bool,
3718            ) -> alloy_sol_types::Result<Self::Return> {
3719                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3720                    data, validate,
3721                )
3722                .map(Into::into)
3723            }
3724        }
3725    };
3726    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3727    /**Function with signature `COSET_K4()` and selector `0xde24ac0f`.
3728    ```solidity
3729    function COSET_K4() external view returns (uint256);
3730    ```*/
3731    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3732    #[derive(Clone)]
3733    pub struct COSET_K4Call {}
3734    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3735    ///Container type for the return parameters of the [`COSET_K4()`](COSET_K4Call) function.
3736    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3737    #[derive(Clone)]
3738    pub struct COSET_K4Return {
3739        #[allow(missing_docs)]
3740        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3741    }
3742    #[allow(
3743        non_camel_case_types,
3744        non_snake_case,
3745        clippy::pub_underscore_fields,
3746        clippy::style
3747    )]
3748    const _: () = {
3749        use alloy::sol_types as alloy_sol_types;
3750        {
3751            #[doc(hidden)]
3752            type UnderlyingSolTuple<'a> = ();
3753            #[doc(hidden)]
3754            type UnderlyingRustTuple<'a> = ();
3755            #[cfg(test)]
3756            #[allow(dead_code, unreachable_patterns)]
3757            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3758                match _t {
3759                    alloy_sol_types::private::AssertTypeEq::<
3760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3761                    >(_) => {},
3762                }
3763            }
3764            #[automatically_derived]
3765            #[doc(hidden)]
3766            impl ::core::convert::From<COSET_K4Call> for UnderlyingRustTuple<'_> {
3767                fn from(value: COSET_K4Call) -> Self {
3768                    ()
3769                }
3770            }
3771            #[automatically_derived]
3772            #[doc(hidden)]
3773            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K4Call {
3774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3775                    Self {}
3776                }
3777            }
3778        }
3779        {
3780            #[doc(hidden)]
3781            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3782            #[doc(hidden)]
3783            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
3784            #[cfg(test)]
3785            #[allow(dead_code, unreachable_patterns)]
3786            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3787                match _t {
3788                    alloy_sol_types::private::AssertTypeEq::<
3789                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3790                    >(_) => {},
3791                }
3792            }
3793            #[automatically_derived]
3794            #[doc(hidden)]
3795            impl ::core::convert::From<COSET_K4Return> for UnderlyingRustTuple<'_> {
3796                fn from(value: COSET_K4Return) -> Self {
3797                    (value._0,)
3798                }
3799            }
3800            #[automatically_derived]
3801            #[doc(hidden)]
3802            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K4Return {
3803                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3804                    Self { _0: tuple.0 }
3805                }
3806            }
3807        }
3808        #[automatically_derived]
3809        impl alloy_sol_types::SolCall for COSET_K4Call {
3810            type Parameters<'a> = ();
3811            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3812            type Return = COSET_K4Return;
3813            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3814            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3815            const SIGNATURE: &'static str = "COSET_K4()";
3816            const SELECTOR: [u8; 4] = [222u8, 36u8, 172u8, 15u8];
3817            #[inline]
3818            fn new<'a>(
3819                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3820            ) -> Self {
3821                tuple.into()
3822            }
3823            #[inline]
3824            fn tokenize(&self) -> Self::Token<'_> {
3825                ()
3826            }
3827            #[inline]
3828            fn abi_decode_returns(
3829                data: &[u8],
3830                validate: bool,
3831            ) -> alloy_sol_types::Result<Self::Return> {
3832                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3833                    data, validate,
3834                )
3835                .map(Into::into)
3836            }
3837        }
3838    };
3839    #[derive()]
3840    /**Function with signature `verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[11],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(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 `0xab959ee3`.
3841    ```solidity
3842    function verify(IPlonkVerifier.VerifyingKey memory verifyingKey, uint256[11] memory publicInput, IPlonkVerifier.PlonkProof memory proof) external view returns (bool);
3843    ```*/
3844    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3845    #[derive(Clone)]
3846    pub struct verifyCall {
3847        #[allow(missing_docs)]
3848        pub verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
3849        #[allow(missing_docs)]
3850        pub publicInput: [alloy::sol_types::private::primitives::aliases::U256; 11usize],
3851        #[allow(missing_docs)]
3852        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
3853    }
3854    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3855    ///Container type for the return parameters of the [`verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[11],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](verifyCall) function.
3856    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3857    #[derive(Clone)]
3858    pub struct verifyReturn {
3859        #[allow(missing_docs)]
3860        pub _0: bool,
3861    }
3862    #[allow(
3863        non_camel_case_types,
3864        non_snake_case,
3865        clippy::pub_underscore_fields,
3866        clippy::style
3867    )]
3868    const _: () = {
3869        use alloy::sol_types as alloy_sol_types;
3870        {
3871            #[doc(hidden)]
3872            type UnderlyingSolTuple<'a> = (
3873                IPlonkVerifier::VerifyingKey,
3874                alloy::sol_types::sol_data::FixedArray<
3875                    alloy::sol_types::sol_data::Uint<256>,
3876                    11usize,
3877                >,
3878                IPlonkVerifier::PlonkProof,
3879            );
3880            #[doc(hidden)]
3881            type UnderlyingRustTuple<'a> = (
3882                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
3883                [alloy::sol_types::private::primitives::aliases::U256; 11usize],
3884                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
3885            );
3886            #[cfg(test)]
3887            #[allow(dead_code, unreachable_patterns)]
3888            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3889                match _t {
3890                    alloy_sol_types::private::AssertTypeEq::<
3891                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3892                    >(_) => {},
3893                }
3894            }
3895            #[automatically_derived]
3896            #[doc(hidden)]
3897            impl ::core::convert::From<verifyCall> for UnderlyingRustTuple<'_> {
3898                fn from(value: verifyCall) -> Self {
3899                    (value.verifyingKey, value.publicInput, value.proof)
3900                }
3901            }
3902            #[automatically_derived]
3903            #[doc(hidden)]
3904            impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyCall {
3905                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3906                    Self {
3907                        verifyingKey: tuple.0,
3908                        publicInput: tuple.1,
3909                        proof: tuple.2,
3910                    }
3911                }
3912            }
3913        }
3914        {
3915            #[doc(hidden)]
3916            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
3917            #[doc(hidden)]
3918            type UnderlyingRustTuple<'a> = (bool,);
3919            #[cfg(test)]
3920            #[allow(dead_code, unreachable_patterns)]
3921            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3922                match _t {
3923                    alloy_sol_types::private::AssertTypeEq::<
3924                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3925                    >(_) => {},
3926                }
3927            }
3928            #[automatically_derived]
3929            #[doc(hidden)]
3930            impl ::core::convert::From<verifyReturn> for UnderlyingRustTuple<'_> {
3931                fn from(value: verifyReturn) -> Self {
3932                    (value._0,)
3933                }
3934            }
3935            #[automatically_derived]
3936            #[doc(hidden)]
3937            impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyReturn {
3938                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3939                    Self { _0: tuple.0 }
3940                }
3941            }
3942        }
3943        #[automatically_derived]
3944        impl alloy_sol_types::SolCall for verifyCall {
3945            type Parameters<'a> = (
3946                IPlonkVerifier::VerifyingKey,
3947                alloy::sol_types::sol_data::FixedArray<
3948                    alloy::sol_types::sol_data::Uint<256>,
3949                    11usize,
3950                >,
3951                IPlonkVerifier::PlonkProof,
3952            );
3953            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3954            type Return = verifyReturn;
3955            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
3956            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3957            const SIGNATURE: &'static str = "verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[11],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
3958            const SELECTOR: [u8; 4] = [171u8, 149u8, 158u8, 227u8];
3959            #[inline]
3960            fn new<'a>(
3961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3962            ) -> Self {
3963                tuple.into()
3964            }
3965            #[inline]
3966            fn tokenize(&self) -> Self::Token<'_> {
3967                (
3968                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
3969                        &self.verifyingKey,
3970                    ),
3971                    <alloy::sol_types::sol_data::FixedArray<
3972                        alloy::sol_types::sol_data::Uint<256>,
3973                        11usize,
3974                    > as alloy_sol_types::SolType>::tokenize(&self.publicInput),
3975                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self.proof),
3976                )
3977            }
3978            #[inline]
3979            fn abi_decode_returns(
3980                data: &[u8],
3981                validate: bool,
3982            ) -> alloy_sol_types::Result<Self::Return> {
3983                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3984                    data, validate,
3985                )
3986                .map(Into::into)
3987            }
3988        }
3989    };
3990    ///Container for all the [`PlonkVerifierV2`](self) function calls.
3991    #[derive()]
3992    pub enum PlonkVerifierV2Calls {
3993        #[allow(missing_docs)]
3994        BETA_H_X0(BETA_H_X0Call),
3995        #[allow(missing_docs)]
3996        BETA_H_X1(BETA_H_X1Call),
3997        #[allow(missing_docs)]
3998        BETA_H_Y0(BETA_H_Y0Call),
3999        #[allow(missing_docs)]
4000        BETA_H_Y1(BETA_H_Y1Call),
4001        #[allow(missing_docs)]
4002        COSET_K1(COSET_K1Call),
4003        #[allow(missing_docs)]
4004        COSET_K2(COSET_K2Call),
4005        #[allow(missing_docs)]
4006        COSET_K3(COSET_K3Call),
4007        #[allow(missing_docs)]
4008        COSET_K4(COSET_K4Call),
4009        #[allow(missing_docs)]
4010        verify(verifyCall),
4011    }
4012    #[automatically_derived]
4013    impl PlonkVerifierV2Calls {
4014        /// All the selectors of this enum.
4015        ///
4016        /// Note that the selectors might not be in the same order as the variants.
4017        /// No guarantees are made about the order of the selectors.
4018        ///
4019        /// Prefer using `SolInterface` methods instead.
4020        pub const SELECTORS: &'static [[u8; 4usize]] = &[
4021            [12u8, 85u8, 31u8, 63u8],
4022            [75u8, 71u8, 52u8, 227u8],
4023            [90u8, 20u8, 192u8, 254u8],
4024            [131u8, 76u8, 69u8, 42u8],
4025            [171u8, 149u8, 158u8, 227u8],
4026            [175u8, 25u8, 107u8, 162u8],
4027            [222u8, 36u8, 172u8, 15u8],
4028            [227u8, 81u8, 45u8, 86u8],
4029            [245u8, 20u8, 67u8, 38u8],
4030        ];
4031    }
4032    #[automatically_derived]
4033    impl alloy_sol_types::SolInterface for PlonkVerifierV2Calls {
4034        const NAME: &'static str = "PlonkVerifierV2Calls";
4035        const MIN_DATA_LENGTH: usize = 0usize;
4036        const COUNT: usize = 9usize;
4037        #[inline]
4038        fn selector(&self) -> [u8; 4] {
4039            match self {
4040                Self::BETA_H_X0(_) => <BETA_H_X0Call as alloy_sol_types::SolCall>::SELECTOR,
4041                Self::BETA_H_X1(_) => <BETA_H_X1Call as alloy_sol_types::SolCall>::SELECTOR,
4042                Self::BETA_H_Y0(_) => <BETA_H_Y0Call as alloy_sol_types::SolCall>::SELECTOR,
4043                Self::BETA_H_Y1(_) => <BETA_H_Y1Call as alloy_sol_types::SolCall>::SELECTOR,
4044                Self::COSET_K1(_) => <COSET_K1Call as alloy_sol_types::SolCall>::SELECTOR,
4045                Self::COSET_K2(_) => <COSET_K2Call as alloy_sol_types::SolCall>::SELECTOR,
4046                Self::COSET_K3(_) => <COSET_K3Call as alloy_sol_types::SolCall>::SELECTOR,
4047                Self::COSET_K4(_) => <COSET_K4Call as alloy_sol_types::SolCall>::SELECTOR,
4048                Self::verify(_) => <verifyCall as alloy_sol_types::SolCall>::SELECTOR,
4049            }
4050        }
4051        #[inline]
4052        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
4053            Self::SELECTORS.get(i).copied()
4054        }
4055        #[inline]
4056        fn valid_selector(selector: [u8; 4]) -> bool {
4057            Self::SELECTORS.binary_search(&selector).is_ok()
4058        }
4059        #[inline]
4060        #[allow(non_snake_case)]
4061        fn abi_decode_raw(
4062            selector: [u8; 4],
4063            data: &[u8],
4064            validate: bool,
4065        ) -> alloy_sol_types::Result<Self> {
4066            static DECODE_SHIMS: &[fn(
4067                &[u8],
4068                bool,
4069            )
4070                -> alloy_sol_types::Result<PlonkVerifierV2Calls>] = &[
4071                {
4072                    fn COSET_K2(
4073                        data: &[u8],
4074                        validate: bool,
4075                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
4076                        <COSET_K2Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
4077                            .map(PlonkVerifierV2Calls::COSET_K2)
4078                    }
4079                    COSET_K2
4080                },
4081                {
4082                    fn BETA_H_Y1(
4083                        data: &[u8],
4084                        validate: bool,
4085                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
4086                        <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
4087                            .map(PlonkVerifierV2Calls::BETA_H_Y1)
4088                    }
4089                    BETA_H_Y1
4090                },
4091                {
4092                    fn COSET_K3(
4093                        data: &[u8],
4094                        validate: bool,
4095                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
4096                        <COSET_K3Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
4097                            .map(PlonkVerifierV2Calls::COSET_K3)
4098                    }
4099                    COSET_K3
4100                },
4101                {
4102                    fn BETA_H_X0(
4103                        data: &[u8],
4104                        validate: bool,
4105                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
4106                        <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
4107                            .map(PlonkVerifierV2Calls::BETA_H_X0)
4108                    }
4109                    BETA_H_X0
4110                },
4111                {
4112                    fn verify(
4113                        data: &[u8],
4114                        validate: bool,
4115                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
4116                        <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
4117                            .map(PlonkVerifierV2Calls::verify)
4118                    }
4119                    verify
4120                },
4121                {
4122                    fn BETA_H_X1(
4123                        data: &[u8],
4124                        validate: bool,
4125                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
4126                        <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
4127                            .map(PlonkVerifierV2Calls::BETA_H_X1)
4128                    }
4129                    BETA_H_X1
4130                },
4131                {
4132                    fn COSET_K4(
4133                        data: &[u8],
4134                        validate: bool,
4135                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
4136                        <COSET_K4Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
4137                            .map(PlonkVerifierV2Calls::COSET_K4)
4138                    }
4139                    COSET_K4
4140                },
4141                {
4142                    fn COSET_K1(
4143                        data: &[u8],
4144                        validate: bool,
4145                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
4146                        <COSET_K1Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
4147                            .map(PlonkVerifierV2Calls::COSET_K1)
4148                    }
4149                    COSET_K1
4150                },
4151                {
4152                    fn BETA_H_Y0(
4153                        data: &[u8],
4154                        validate: bool,
4155                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
4156                        <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
4157                            .map(PlonkVerifierV2Calls::BETA_H_Y0)
4158                    }
4159                    BETA_H_Y0
4160                },
4161            ];
4162            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
4163                return Err(alloy_sol_types::Error::unknown_selector(
4164                    <Self as alloy_sol_types::SolInterface>::NAME,
4165                    selector,
4166                ));
4167            };
4168            DECODE_SHIMS[idx](data, validate)
4169        }
4170        #[inline]
4171        fn abi_encoded_size(&self) -> usize {
4172            match self {
4173                Self::BETA_H_X0(inner) => {
4174                    <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4175                },
4176                Self::BETA_H_X1(inner) => {
4177                    <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4178                },
4179                Self::BETA_H_Y0(inner) => {
4180                    <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4181                },
4182                Self::BETA_H_Y1(inner) => {
4183                    <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4184                },
4185                Self::COSET_K1(inner) => {
4186                    <COSET_K1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4187                },
4188                Self::COSET_K2(inner) => {
4189                    <COSET_K2Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4190                },
4191                Self::COSET_K3(inner) => {
4192                    <COSET_K3Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4193                },
4194                Self::COSET_K4(inner) => {
4195                    <COSET_K4Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4196                },
4197                Self::verify(inner) => {
4198                    <verifyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
4199                },
4200            }
4201        }
4202        #[inline]
4203        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
4204            match self {
4205                Self::BETA_H_X0(inner) => {
4206                    <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4207                },
4208                Self::BETA_H_X1(inner) => {
4209                    <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4210                },
4211                Self::BETA_H_Y0(inner) => {
4212                    <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4213                },
4214                Self::BETA_H_Y1(inner) => {
4215                    <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4216                },
4217                Self::COSET_K1(inner) => {
4218                    <COSET_K1Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4219                },
4220                Self::COSET_K2(inner) => {
4221                    <COSET_K2Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4222                },
4223                Self::COSET_K3(inner) => {
4224                    <COSET_K3Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4225                },
4226                Self::COSET_K4(inner) => {
4227                    <COSET_K4Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4228                },
4229                Self::verify(inner) => {
4230                    <verifyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
4231                },
4232            }
4233        }
4234    }
4235    ///Container for all the [`PlonkVerifierV2`](self) custom errors.
4236    #[derive(Debug, PartialEq, Eq, Hash)]
4237    pub enum PlonkVerifierV2Errors {
4238        #[allow(missing_docs)]
4239        InvalidPlonkArgs(InvalidPlonkArgs),
4240        #[allow(missing_docs)]
4241        UnsupportedDegree(UnsupportedDegree),
4242        #[allow(missing_docs)]
4243        WrongPlonkVK(WrongPlonkVK),
4244    }
4245    #[automatically_derived]
4246    impl PlonkVerifierV2Errors {
4247        /// All the selectors of this enum.
4248        ///
4249        /// Note that the selectors might not be in the same order as the variants.
4250        /// No guarantees are made about the order of the selectors.
4251        ///
4252        /// Prefer using `SolInterface` methods instead.
4253        pub const SELECTORS: &'static [[u8; 4usize]] = &[
4254            [65u8, 245u8, 59u8, 18u8],
4255            [226u8, 239u8, 9u8, 229u8],
4256            [253u8, 154u8, 45u8, 27u8],
4257        ];
4258    }
4259    #[automatically_derived]
4260    impl alloy_sol_types::SolInterface for PlonkVerifierV2Errors {
4261        const NAME: &'static str = "PlonkVerifierV2Errors";
4262        const MIN_DATA_LENGTH: usize = 0usize;
4263        const COUNT: usize = 3usize;
4264        #[inline]
4265        fn selector(&self) -> [u8; 4] {
4266            match self {
4267                Self::InvalidPlonkArgs(_) => {
4268                    <InvalidPlonkArgs as alloy_sol_types::SolError>::SELECTOR
4269                },
4270                Self::UnsupportedDegree(_) => {
4271                    <UnsupportedDegree as alloy_sol_types::SolError>::SELECTOR
4272                },
4273                Self::WrongPlonkVK(_) => <WrongPlonkVK as alloy_sol_types::SolError>::SELECTOR,
4274            }
4275        }
4276        #[inline]
4277        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
4278            Self::SELECTORS.get(i).copied()
4279        }
4280        #[inline]
4281        fn valid_selector(selector: [u8; 4]) -> bool {
4282            Self::SELECTORS.binary_search(&selector).is_ok()
4283        }
4284        #[inline]
4285        #[allow(non_snake_case)]
4286        fn abi_decode_raw(
4287            selector: [u8; 4],
4288            data: &[u8],
4289            validate: bool,
4290        ) -> alloy_sol_types::Result<Self> {
4291            static DECODE_SHIMS: &[fn(
4292                &[u8],
4293                bool,
4294            )
4295                -> alloy_sol_types::Result<PlonkVerifierV2Errors>] = &[
4296                {
4297                    fn WrongPlonkVK(
4298                        data: &[u8],
4299                        validate: bool,
4300                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
4301                        <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
4302                            .map(PlonkVerifierV2Errors::WrongPlonkVK)
4303                    }
4304                    WrongPlonkVK
4305                },
4306                {
4307                    fn UnsupportedDegree(
4308                        data: &[u8],
4309                        validate: bool,
4310                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
4311                        <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw(
4312                            data, validate,
4313                        )
4314                        .map(PlonkVerifierV2Errors::UnsupportedDegree)
4315                    }
4316                    UnsupportedDegree
4317                },
4318                {
4319                    fn InvalidPlonkArgs(
4320                        data: &[u8],
4321                        validate: bool,
4322                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
4323                        <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw(
4324                            data, validate,
4325                        )
4326                        .map(PlonkVerifierV2Errors::InvalidPlonkArgs)
4327                    }
4328                    InvalidPlonkArgs
4329                },
4330            ];
4331            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
4332                return Err(alloy_sol_types::Error::unknown_selector(
4333                    <Self as alloy_sol_types::SolInterface>::NAME,
4334                    selector,
4335                ));
4336            };
4337            DECODE_SHIMS[idx](data, validate)
4338        }
4339        #[inline]
4340        fn abi_encoded_size(&self) -> usize {
4341            match self {
4342                Self::InvalidPlonkArgs(inner) => {
4343                    <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
4344                },
4345                Self::UnsupportedDegree(inner) => {
4346                    <UnsupportedDegree as alloy_sol_types::SolError>::abi_encoded_size(inner)
4347                },
4348                Self::WrongPlonkVK(inner) => {
4349                    <WrongPlonkVK as alloy_sol_types::SolError>::abi_encoded_size(inner)
4350                },
4351            }
4352        }
4353        #[inline]
4354        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
4355            match self {
4356                Self::InvalidPlonkArgs(inner) => {
4357                    <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
4358                },
4359                Self::UnsupportedDegree(inner) => {
4360                    <UnsupportedDegree as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
4361                },
4362                Self::WrongPlonkVK(inner) => {
4363                    <WrongPlonkVK as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
4364                },
4365            }
4366        }
4367    }
4368    use alloy::contract as alloy_contract;
4369    /**Creates a new wrapper around an on-chain [`PlonkVerifierV2`](self) contract instance.
4370
4371    See the [wrapper's documentation](`PlonkVerifierV2Instance`) for more details.*/
4372    #[inline]
4373    pub const fn new<
4374        T: alloy_contract::private::Transport + ::core::clone::Clone,
4375        P: alloy_contract::private::Provider<T, N>,
4376        N: alloy_contract::private::Network,
4377    >(
4378        address: alloy_sol_types::private::Address,
4379        provider: P,
4380    ) -> PlonkVerifierV2Instance<T, P, N> {
4381        PlonkVerifierV2Instance::<T, P, N>::new(address, provider)
4382    }
4383    /**Deploys this contract using the given `provider` and constructor arguments, if any.
4384
4385    Returns a new instance of the contract, if the deployment was successful.
4386
4387    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
4388    #[inline]
4389    pub fn deploy<
4390        T: alloy_contract::private::Transport + ::core::clone::Clone,
4391        P: alloy_contract::private::Provider<T, N>,
4392        N: alloy_contract::private::Network,
4393    >(
4394        provider: P,
4395    ) -> impl ::core::future::Future<Output = alloy_contract::Result<PlonkVerifierV2Instance<T, P, N>>>
4396    {
4397        PlonkVerifierV2Instance::<T, P, N>::deploy(provider)
4398    }
4399    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
4400    and constructor arguments, if any.
4401
4402    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
4403    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
4404    #[inline]
4405    pub fn deploy_builder<
4406        T: alloy_contract::private::Transport + ::core::clone::Clone,
4407        P: alloy_contract::private::Provider<T, N>,
4408        N: alloy_contract::private::Network,
4409    >(
4410        provider: P,
4411    ) -> alloy_contract::RawCallBuilder<T, P, N> {
4412        PlonkVerifierV2Instance::<T, P, N>::deploy_builder(provider)
4413    }
4414    /**A [`PlonkVerifierV2`](self) instance.
4415
4416    Contains type-safe methods for interacting with an on-chain instance of the
4417    [`PlonkVerifierV2`](self) contract located at a given `address`, using a given
4418    provider `P`.
4419
4420    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
4421    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
4422    be used to deploy a new instance of the contract.
4423
4424    See the [module-level documentation](self) for all the available methods.*/
4425    #[derive(Clone)]
4426    pub struct PlonkVerifierV2Instance<T, P, N = alloy_contract::private::Ethereum> {
4427        address: alloy_sol_types::private::Address,
4428        provider: P,
4429        _network_transport: ::core::marker::PhantomData<(N, T)>,
4430    }
4431    #[automatically_derived]
4432    impl<T, P, N> ::core::fmt::Debug for PlonkVerifierV2Instance<T, P, N> {
4433        #[inline]
4434        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4435            f.debug_tuple("PlonkVerifierV2Instance")
4436                .field(&self.address)
4437                .finish()
4438        }
4439    }
4440    /// Instantiation and getters/setters.
4441    #[automatically_derived]
4442    impl<
4443            T: alloy_contract::private::Transport + ::core::clone::Clone,
4444            P: alloy_contract::private::Provider<T, N>,
4445            N: alloy_contract::private::Network,
4446        > PlonkVerifierV2Instance<T, P, N>
4447    {
4448        /**Creates a new wrapper around an on-chain [`PlonkVerifierV2`](self) contract instance.
4449
4450        See the [wrapper's documentation](`PlonkVerifierV2Instance`) for more details.*/
4451        #[inline]
4452        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
4453            Self {
4454                address,
4455                provider,
4456                _network_transport: ::core::marker::PhantomData,
4457            }
4458        }
4459        /**Deploys this contract using the given `provider` and constructor arguments, if any.
4460
4461        Returns a new instance of the contract, if the deployment was successful.
4462
4463        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
4464        #[inline]
4465        pub async fn deploy(
4466            provider: P,
4467        ) -> alloy_contract::Result<PlonkVerifierV2Instance<T, P, N>> {
4468            let call_builder = Self::deploy_builder(provider);
4469            let contract_address = call_builder.deploy().await?;
4470            Ok(Self::new(contract_address, call_builder.provider))
4471        }
4472        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
4473        and constructor arguments, if any.
4474
4475        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
4476        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
4477        #[inline]
4478        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
4479            alloy_contract::RawCallBuilder::new_raw_deploy(
4480                provider,
4481                ::core::clone::Clone::clone(&BYTECODE),
4482            )
4483        }
4484        /// Returns a reference to the address.
4485        #[inline]
4486        pub const fn address(&self) -> &alloy_sol_types::private::Address {
4487            &self.address
4488        }
4489        /// Sets the address.
4490        #[inline]
4491        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
4492            self.address = address;
4493        }
4494        /// Sets the address and returns `self`.
4495        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
4496            self.set_address(address);
4497            self
4498        }
4499        /// Returns a reference to the provider.
4500        #[inline]
4501        pub const fn provider(&self) -> &P {
4502            &self.provider
4503        }
4504    }
4505    impl<T, P: ::core::clone::Clone, N> PlonkVerifierV2Instance<T, &P, N> {
4506        /// Clones the provider and returns a new instance with the cloned provider.
4507        #[inline]
4508        pub fn with_cloned_provider(self) -> PlonkVerifierV2Instance<T, P, N> {
4509            PlonkVerifierV2Instance {
4510                address: self.address,
4511                provider: ::core::clone::Clone::clone(&self.provider),
4512                _network_transport: ::core::marker::PhantomData,
4513            }
4514        }
4515    }
4516    /// Function calls.
4517    #[automatically_derived]
4518    impl<
4519            T: alloy_contract::private::Transport + ::core::clone::Clone,
4520            P: alloy_contract::private::Provider<T, N>,
4521            N: alloy_contract::private::Network,
4522        > PlonkVerifierV2Instance<T, P, N>
4523    {
4524        /// Creates a new call builder using this contract instance's provider and address.
4525        ///
4526        /// Note that the call can be any function call, not just those defined in this
4527        /// contract. Prefer using the other methods for building type-safe contract calls.
4528        pub fn call_builder<C: alloy_sol_types::SolCall>(
4529            &self,
4530            call: &C,
4531        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
4532            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
4533        }
4534        ///Creates a new call builder for the [`BETA_H_X0`] function.
4535        pub fn BETA_H_X0(&self) -> alloy_contract::SolCallBuilder<T, &P, BETA_H_X0Call, N> {
4536            self.call_builder(&BETA_H_X0Call {})
4537        }
4538        ///Creates a new call builder for the [`BETA_H_X1`] function.
4539        pub fn BETA_H_X1(&self) -> alloy_contract::SolCallBuilder<T, &P, BETA_H_X1Call, N> {
4540            self.call_builder(&BETA_H_X1Call {})
4541        }
4542        ///Creates a new call builder for the [`BETA_H_Y0`] function.
4543        pub fn BETA_H_Y0(&self) -> alloy_contract::SolCallBuilder<T, &P, BETA_H_Y0Call, N> {
4544            self.call_builder(&BETA_H_Y0Call {})
4545        }
4546        ///Creates a new call builder for the [`BETA_H_Y1`] function.
4547        pub fn BETA_H_Y1(&self) -> alloy_contract::SolCallBuilder<T, &P, BETA_H_Y1Call, N> {
4548            self.call_builder(&BETA_H_Y1Call {})
4549        }
4550        ///Creates a new call builder for the [`COSET_K1`] function.
4551        pub fn COSET_K1(&self) -> alloy_contract::SolCallBuilder<T, &P, COSET_K1Call, N> {
4552            self.call_builder(&COSET_K1Call {})
4553        }
4554        ///Creates a new call builder for the [`COSET_K2`] function.
4555        pub fn COSET_K2(&self) -> alloy_contract::SolCallBuilder<T, &P, COSET_K2Call, N> {
4556            self.call_builder(&COSET_K2Call {})
4557        }
4558        ///Creates a new call builder for the [`COSET_K3`] function.
4559        pub fn COSET_K3(&self) -> alloy_contract::SolCallBuilder<T, &P, COSET_K3Call, N> {
4560            self.call_builder(&COSET_K3Call {})
4561        }
4562        ///Creates a new call builder for the [`COSET_K4`] function.
4563        pub fn COSET_K4(&self) -> alloy_contract::SolCallBuilder<T, &P, COSET_K4Call, N> {
4564            self.call_builder(&COSET_K4Call {})
4565        }
4566        ///Creates a new call builder for the [`verify`] function.
4567        pub fn verify(
4568            &self,
4569            verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
4570            publicInput: [alloy::sol_types::private::primitives::aliases::U256; 11usize],
4571            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
4572        ) -> alloy_contract::SolCallBuilder<T, &P, verifyCall, N> {
4573            self.call_builder(&verifyCall {
4574                verifyingKey,
4575                publicInput,
4576                proof,
4577            })
4578        }
4579    }
4580    /// Event filters.
4581    #[automatically_derived]
4582    impl<
4583            T: alloy_contract::private::Transport + ::core::clone::Clone,
4584            P: alloy_contract::private::Provider<T, N>,
4585            N: alloy_contract::private::Network,
4586        > PlonkVerifierV2Instance<T, P, N>
4587    {
4588        /// Creates a new event filter using this contract instance's provider and address.
4589        ///
4590        /// Note that the type can be any event, not just those defined in this contract.
4591        /// Prefer using the other methods for building type-safe event filters.
4592        pub fn event_filter<E: alloy_sol_types::SolEvent>(
4593            &self,
4594        ) -> alloy_contract::Event<T, &P, E, N> {
4595            alloy_contract::Event::new_sol(&self.provider, &self.address)
4596        }
4597    }
4598}