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