hotshot_contract_adapter/bindings/
stake_table.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    struct G1Point { BaseField x; BaseField y; }
8    struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    /**```solidity
168struct G1Point { BaseField x; BaseField y; }
169```*/
170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
171    #[derive(Clone)]
172    pub struct G1Point {
173        #[allow(missing_docs)]
174        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
175        #[allow(missing_docs)]
176        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
177    }
178    #[allow(
179        non_camel_case_types,
180        non_snake_case,
181        clippy::pub_underscore_fields,
182        clippy::style
183    )]
184    const _: () = {
185        use alloy::sol_types as alloy_sol_types;
186        #[doc(hidden)]
187        #[allow(dead_code)]
188        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
189        #[doc(hidden)]
190        type UnderlyingRustTuple<'a> = (
191            <BaseField as alloy::sol_types::SolType>::RustType,
192            <BaseField as alloy::sol_types::SolType>::RustType,
193        );
194        #[cfg(test)]
195        #[allow(dead_code, unreachable_patterns)]
196        fn _type_assertion(
197            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
198        ) {
199            match _t {
200                alloy_sol_types::private::AssertTypeEq::<
201                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
202                >(_) => {}
203            }
204        }
205        #[automatically_derived]
206        #[doc(hidden)]
207        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
208            fn from(value: G1Point) -> Self {
209                (value.x, value.y)
210            }
211        }
212        #[automatically_derived]
213        #[doc(hidden)]
214        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
215            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
216                Self { x: tuple.0, y: tuple.1 }
217            }
218        }
219        #[automatically_derived]
220        impl alloy_sol_types::SolValue for G1Point {
221            type SolType = Self;
222        }
223        #[automatically_derived]
224        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
225            #[inline]
226            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
227                (
228                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
229                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
230                )
231            }
232            #[inline]
233            fn stv_abi_encoded_size(&self) -> usize {
234                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
235                    return size;
236                }
237                let tuple = <UnderlyingRustTuple<
238                    '_,
239                > as ::core::convert::From<Self>>::from(self.clone());
240                <UnderlyingSolTuple<
241                    '_,
242                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
243            }
244            #[inline]
245            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
246                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
247            }
248            #[inline]
249            fn stv_abi_encode_packed_to(
250                &self,
251                out: &mut alloy_sol_types::private::Vec<u8>,
252            ) {
253                let tuple = <UnderlyingRustTuple<
254                    '_,
255                > as ::core::convert::From<Self>>::from(self.clone());
256                <UnderlyingSolTuple<
257                    '_,
258                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
259            }
260            #[inline]
261            fn stv_abi_packed_encoded_size(&self) -> usize {
262                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
263                    return size;
264                }
265                let tuple = <UnderlyingRustTuple<
266                    '_,
267                > as ::core::convert::From<Self>>::from(self.clone());
268                <UnderlyingSolTuple<
269                    '_,
270                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
271            }
272        }
273        #[automatically_derived]
274        impl alloy_sol_types::SolType for G1Point {
275            type RustType = Self;
276            type Token<'a> = <UnderlyingSolTuple<
277                'a,
278            > as alloy_sol_types::SolType>::Token<'a>;
279            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
280            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
281                '_,
282            > as alloy_sol_types::SolType>::ENCODED_SIZE;
283            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
284                '_,
285            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
286            #[inline]
287            fn valid_token(token: &Self::Token<'_>) -> bool {
288                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
289            }
290            #[inline]
291            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
292                let tuple = <UnderlyingSolTuple<
293                    '_,
294                > as alloy_sol_types::SolType>::detokenize(token);
295                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
296            }
297        }
298        #[automatically_derived]
299        impl alloy_sol_types::SolStruct for G1Point {
300            const NAME: &'static str = "G1Point";
301            #[inline]
302            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
303                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
304            }
305            #[inline]
306            fn eip712_components() -> alloy_sol_types::private::Vec<
307                alloy_sol_types::private::Cow<'static, str>,
308            > {
309                alloy_sol_types::private::Vec::new()
310            }
311            #[inline]
312            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
313                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
314            }
315            #[inline]
316            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
317                [
318                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
319                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
320                ]
321                    .concat()
322            }
323        }
324        #[automatically_derived]
325        impl alloy_sol_types::EventTopic for G1Point {
326            #[inline]
327            fn topic_preimage_length(rust: &Self::RustType) -> usize {
328                0usize
329                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
330                        &rust.x,
331                    )
332                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
333                        &rust.y,
334                    )
335            }
336            #[inline]
337            fn encode_topic_preimage(
338                rust: &Self::RustType,
339                out: &mut alloy_sol_types::private::Vec<u8>,
340            ) {
341                out.reserve(
342                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
343                );
344                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
345                    &rust.x,
346                    out,
347                );
348                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
349                    &rust.y,
350                    out,
351                );
352            }
353            #[inline]
354            fn encode_topic(
355                rust: &Self::RustType,
356            ) -> alloy_sol_types::abi::token::WordToken {
357                let mut out = alloy_sol_types::private::Vec::new();
358                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
359                    rust,
360                    &mut out,
361                );
362                alloy_sol_types::abi::token::WordToken(
363                    alloy_sol_types::private::keccak256(out),
364                )
365            }
366        }
367    };
368    #[derive(serde::Serialize, serde::Deserialize)]
369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
370    /**```solidity
371struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
372```*/
373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
374    #[derive(Clone)]
375    pub struct G2Point {
376        #[allow(missing_docs)]
377        pub x0: <BaseField as alloy::sol_types::SolType>::RustType,
378        #[allow(missing_docs)]
379        pub x1: <BaseField as alloy::sol_types::SolType>::RustType,
380        #[allow(missing_docs)]
381        pub y0: <BaseField as alloy::sol_types::SolType>::RustType,
382        #[allow(missing_docs)]
383        pub y1: <BaseField as alloy::sol_types::SolType>::RustType,
384    }
385    #[allow(
386        non_camel_case_types,
387        non_snake_case,
388        clippy::pub_underscore_fields,
389        clippy::style
390    )]
391    const _: () = {
392        use alloy::sol_types as alloy_sol_types;
393        #[doc(hidden)]
394        #[allow(dead_code)]
395        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
396        #[doc(hidden)]
397        type UnderlyingRustTuple<'a> = (
398            <BaseField as alloy::sol_types::SolType>::RustType,
399            <BaseField as alloy::sol_types::SolType>::RustType,
400            <BaseField as alloy::sol_types::SolType>::RustType,
401            <BaseField as alloy::sol_types::SolType>::RustType,
402        );
403        #[cfg(test)]
404        #[allow(dead_code, unreachable_patterns)]
405        fn _type_assertion(
406            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
407        ) {
408            match _t {
409                alloy_sol_types::private::AssertTypeEq::<
410                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
411                >(_) => {}
412            }
413        }
414        #[automatically_derived]
415        #[doc(hidden)]
416        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
417            fn from(value: G2Point) -> Self {
418                (value.x0, value.x1, value.y0, value.y1)
419            }
420        }
421        #[automatically_derived]
422        #[doc(hidden)]
423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
425                Self {
426                    x0: tuple.0,
427                    x1: tuple.1,
428                    y0: tuple.2,
429                    y1: tuple.3,
430                }
431            }
432        }
433        #[automatically_derived]
434        impl alloy_sol_types::SolValue for G2Point {
435            type SolType = Self;
436        }
437        #[automatically_derived]
438        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
439            #[inline]
440            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
441                (
442                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
443                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
444                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
445                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
446                )
447            }
448            #[inline]
449            fn stv_abi_encoded_size(&self) -> usize {
450                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
451                    return size;
452                }
453                let tuple = <UnderlyingRustTuple<
454                    '_,
455                > as ::core::convert::From<Self>>::from(self.clone());
456                <UnderlyingSolTuple<
457                    '_,
458                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
459            }
460            #[inline]
461            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
462                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
463            }
464            #[inline]
465            fn stv_abi_encode_packed_to(
466                &self,
467                out: &mut alloy_sol_types::private::Vec<u8>,
468            ) {
469                let tuple = <UnderlyingRustTuple<
470                    '_,
471                > as ::core::convert::From<Self>>::from(self.clone());
472                <UnderlyingSolTuple<
473                    '_,
474                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
475            }
476            #[inline]
477            fn stv_abi_packed_encoded_size(&self) -> usize {
478                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
479                    return size;
480                }
481                let tuple = <UnderlyingRustTuple<
482                    '_,
483                > as ::core::convert::From<Self>>::from(self.clone());
484                <UnderlyingSolTuple<
485                    '_,
486                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
487            }
488        }
489        #[automatically_derived]
490        impl alloy_sol_types::SolType for G2Point {
491            type RustType = Self;
492            type Token<'a> = <UnderlyingSolTuple<
493                'a,
494            > as alloy_sol_types::SolType>::Token<'a>;
495            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
496            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
497                '_,
498            > as alloy_sol_types::SolType>::ENCODED_SIZE;
499            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
500                '_,
501            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
502            #[inline]
503            fn valid_token(token: &Self::Token<'_>) -> bool {
504                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
505            }
506            #[inline]
507            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
508                let tuple = <UnderlyingSolTuple<
509                    '_,
510                > as alloy_sol_types::SolType>::detokenize(token);
511                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
512            }
513        }
514        #[automatically_derived]
515        impl alloy_sol_types::SolStruct for G2Point {
516            const NAME: &'static str = "G2Point";
517            #[inline]
518            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
519                alloy_sol_types::private::Cow::Borrowed(
520                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
521                )
522            }
523            #[inline]
524            fn eip712_components() -> alloy_sol_types::private::Vec<
525                alloy_sol_types::private::Cow<'static, str>,
526            > {
527                alloy_sol_types::private::Vec::new()
528            }
529            #[inline]
530            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
531                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
532            }
533            #[inline]
534            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
535                [
536                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0)
537                        .0,
538                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1)
539                        .0,
540                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0)
541                        .0,
542                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
543                ]
544                    .concat()
545            }
546        }
547        #[automatically_derived]
548        impl alloy_sol_types::EventTopic for G2Point {
549            #[inline]
550            fn topic_preimage_length(rust: &Self::RustType) -> usize {
551                0usize
552                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
553                        &rust.x0,
554                    )
555                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
556                        &rust.x1,
557                    )
558                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
559                        &rust.y0,
560                    )
561                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
562                        &rust.y1,
563                    )
564            }
565            #[inline]
566            fn encode_topic_preimage(
567                rust: &Self::RustType,
568                out: &mut alloy_sol_types::private::Vec<u8>,
569            ) {
570                out.reserve(
571                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
572                );
573                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
574                    &rust.x0,
575                    out,
576                );
577                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
578                    &rust.x1,
579                    out,
580                );
581                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
582                    &rust.y0,
583                    out,
584                );
585                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
586                    &rust.y1,
587                    out,
588                );
589            }
590            #[inline]
591            fn encode_topic(
592                rust: &Self::RustType,
593            ) -> alloy_sol_types::abi::token::WordToken {
594                let mut out = alloy_sol_types::private::Vec::new();
595                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
596                    rust,
597                    &mut out,
598                );
599                alloy_sol_types::abi::token::WordToken(
600                    alloy_sol_types::private::keccak256(out),
601                )
602            }
603        }
604    };
605    use alloy::contract as alloy_contract;
606    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
607
608See the [wrapper's documentation](`BN254Instance`) for more details.*/
609    #[inline]
610    pub const fn new<
611        P: alloy_contract::private::Provider<N>,
612        N: alloy_contract::private::Network,
613    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
614        BN254Instance::<P, N>::new(address, __provider)
615    }
616    /**A [`BN254`](self) instance.
617
618Contains type-safe methods for interacting with an on-chain instance of the
619[`BN254`](self) contract located at a given `address`, using a given
620provider `P`.
621
622If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
623documentation on how to provide it), the `deploy` and `deploy_builder` methods can
624be used to deploy a new instance of the contract.
625
626See the [module-level documentation](self) for all the available methods.*/
627    #[derive(Clone)]
628    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
629        address: alloy_sol_types::private::Address,
630        provider: P,
631        _network: ::core::marker::PhantomData<N>,
632    }
633    #[automatically_derived]
634    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
635        #[inline]
636        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
637            f.debug_tuple("BN254Instance").field(&self.address).finish()
638        }
639    }
640    /// Instantiation and getters/setters.
641    impl<
642        P: alloy_contract::private::Provider<N>,
643        N: alloy_contract::private::Network,
644    > BN254Instance<P, N> {
645        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
646
647See the [wrapper's documentation](`BN254Instance`) for more details.*/
648        #[inline]
649        pub const fn new(
650            address: alloy_sol_types::private::Address,
651            __provider: P,
652        ) -> Self {
653            Self {
654                address,
655                provider: __provider,
656                _network: ::core::marker::PhantomData,
657            }
658        }
659        /// Returns a reference to the address.
660        #[inline]
661        pub const fn address(&self) -> &alloy_sol_types::private::Address {
662            &self.address
663        }
664        /// Sets the address.
665        #[inline]
666        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
667            self.address = address;
668        }
669        /// Sets the address and returns `self`.
670        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
671            self.set_address(address);
672            self
673        }
674        /// Returns a reference to the provider.
675        #[inline]
676        pub const fn provider(&self) -> &P {
677            &self.provider
678        }
679    }
680    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
681        /// Clones the provider and returns a new instance with the cloned provider.
682        #[inline]
683        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
684            BN254Instance {
685                address: self.address,
686                provider: ::core::clone::Clone::clone(&self.provider),
687                _network: ::core::marker::PhantomData,
688            }
689        }
690    }
691    /// Function calls.
692    impl<
693        P: alloy_contract::private::Provider<N>,
694        N: alloy_contract::private::Network,
695    > BN254Instance<P, N> {
696        /// Creates a new call builder using this contract instance's provider and address.
697        ///
698        /// Note that the call can be any function call, not just those defined in this
699        /// contract. Prefer using the other methods for building type-safe contract calls.
700        pub fn call_builder<C: alloy_sol_types::SolCall>(
701            &self,
702            call: &C,
703        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
704            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
705        }
706    }
707    /// Event filters.
708    impl<
709        P: alloy_contract::private::Provider<N>,
710        N: alloy_contract::private::Network,
711    > BN254Instance<P, N> {
712        /// Creates a new event filter using this contract instance's provider and address.
713        ///
714        /// Note that the type can be any event, not just those defined in this contract.
715        /// Prefer using the other methods for building type-safe event filters.
716        pub fn event_filter<E: alloy_sol_types::SolEvent>(
717            &self,
718        ) -> alloy_contract::Event<&P, E, N> {
719            alloy_contract::Event::new_sol(&self.provider, &self.address)
720        }
721    }
722}
723///Module containing a contract's types and functions.
724/**
725
726```solidity
727library EdOnBN254 {
728    struct EdOnBN254Point { uint256 x; uint256 y; }
729}
730```*/
731#[allow(
732    non_camel_case_types,
733    non_snake_case,
734    clippy::pub_underscore_fields,
735    clippy::style,
736    clippy::empty_structs_with_brackets
737)]
738pub mod EdOnBN254 {
739    use super::*;
740    use alloy::sol_types as alloy_sol_types;
741    #[derive(serde::Serialize, serde::Deserialize)]
742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
743    /**```solidity
744struct EdOnBN254Point { uint256 x; uint256 y; }
745```*/
746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
747    #[derive(Clone)]
748    pub struct EdOnBN254Point {
749        #[allow(missing_docs)]
750        pub x: alloy::sol_types::private::primitives::aliases::U256,
751        #[allow(missing_docs)]
752        pub y: alloy::sol_types::private::primitives::aliases::U256,
753    }
754    #[allow(
755        non_camel_case_types,
756        non_snake_case,
757        clippy::pub_underscore_fields,
758        clippy::style
759    )]
760    const _: () = {
761        use alloy::sol_types as alloy_sol_types;
762        #[doc(hidden)]
763        #[allow(dead_code)]
764        type UnderlyingSolTuple<'a> = (
765            alloy::sol_types::sol_data::Uint<256>,
766            alloy::sol_types::sol_data::Uint<256>,
767        );
768        #[doc(hidden)]
769        type UnderlyingRustTuple<'a> = (
770            alloy::sol_types::private::primitives::aliases::U256,
771            alloy::sol_types::private::primitives::aliases::U256,
772        );
773        #[cfg(test)]
774        #[allow(dead_code, unreachable_patterns)]
775        fn _type_assertion(
776            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
777        ) {
778            match _t {
779                alloy_sol_types::private::AssertTypeEq::<
780                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
781                >(_) => {}
782            }
783        }
784        #[automatically_derived]
785        #[doc(hidden)]
786        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
787            fn from(value: EdOnBN254Point) -> Self {
788                (value.x, value.y)
789            }
790        }
791        #[automatically_derived]
792        #[doc(hidden)]
793        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
794            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
795                Self { x: tuple.0, y: tuple.1 }
796            }
797        }
798        #[automatically_derived]
799        impl alloy_sol_types::SolValue for EdOnBN254Point {
800            type SolType = Self;
801        }
802        #[automatically_derived]
803        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
804            #[inline]
805            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
806                (
807                    <alloy::sol_types::sol_data::Uint<
808                        256,
809                    > as alloy_sol_types::SolType>::tokenize(&self.x),
810                    <alloy::sol_types::sol_data::Uint<
811                        256,
812                    > as alloy_sol_types::SolType>::tokenize(&self.y),
813                )
814            }
815            #[inline]
816            fn stv_abi_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
818                    return size;
819                }
820                let tuple = <UnderlyingRustTuple<
821                    '_,
822                > as ::core::convert::From<Self>>::from(self.clone());
823                <UnderlyingSolTuple<
824                    '_,
825                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
826            }
827            #[inline]
828            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
829                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
830            }
831            #[inline]
832            fn stv_abi_encode_packed_to(
833                &self,
834                out: &mut alloy_sol_types::private::Vec<u8>,
835            ) {
836                let tuple = <UnderlyingRustTuple<
837                    '_,
838                > as ::core::convert::From<Self>>::from(self.clone());
839                <UnderlyingSolTuple<
840                    '_,
841                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
842            }
843            #[inline]
844            fn stv_abi_packed_encoded_size(&self) -> usize {
845                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
846                    return size;
847                }
848                let tuple = <UnderlyingRustTuple<
849                    '_,
850                > as ::core::convert::From<Self>>::from(self.clone());
851                <UnderlyingSolTuple<
852                    '_,
853                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
854            }
855        }
856        #[automatically_derived]
857        impl alloy_sol_types::SolType for EdOnBN254Point {
858            type RustType = Self;
859            type Token<'a> = <UnderlyingSolTuple<
860                'a,
861            > as alloy_sol_types::SolType>::Token<'a>;
862            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
863            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
864                '_,
865            > as alloy_sol_types::SolType>::ENCODED_SIZE;
866            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
867                '_,
868            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
869            #[inline]
870            fn valid_token(token: &Self::Token<'_>) -> bool {
871                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
872            }
873            #[inline]
874            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
875                let tuple = <UnderlyingSolTuple<
876                    '_,
877                > as alloy_sol_types::SolType>::detokenize(token);
878                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
879            }
880        }
881        #[automatically_derived]
882        impl alloy_sol_types::SolStruct for EdOnBN254Point {
883            const NAME: &'static str = "EdOnBN254Point";
884            #[inline]
885            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
886                alloy_sol_types::private::Cow::Borrowed(
887                    "EdOnBN254Point(uint256 x,uint256 y)",
888                )
889            }
890            #[inline]
891            fn eip712_components() -> alloy_sol_types::private::Vec<
892                alloy_sol_types::private::Cow<'static, str>,
893            > {
894                alloy_sol_types::private::Vec::new()
895            }
896            #[inline]
897            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
898                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
899            }
900            #[inline]
901            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
902                [
903                    <alloy::sol_types::sol_data::Uint<
904                        256,
905                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
906                        .0,
907                    <alloy::sol_types::sol_data::Uint<
908                        256,
909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
910                        .0,
911                ]
912                    .concat()
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::EventTopic for EdOnBN254Point {
917            #[inline]
918            fn topic_preimage_length(rust: &Self::RustType) -> usize {
919                0usize
920                    + <alloy::sol_types::sol_data::Uint<
921                        256,
922                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
923                    + <alloy::sol_types::sol_data::Uint<
924                        256,
925                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
926            }
927            #[inline]
928            fn encode_topic_preimage(
929                rust: &Self::RustType,
930                out: &mut alloy_sol_types::private::Vec<u8>,
931            ) {
932                out.reserve(
933                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
934                );
935                <alloy::sol_types::sol_data::Uint<
936                    256,
937                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
938                <alloy::sol_types::sol_data::Uint<
939                    256,
940                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
941            }
942            #[inline]
943            fn encode_topic(
944                rust: &Self::RustType,
945            ) -> alloy_sol_types::abi::token::WordToken {
946                let mut out = alloy_sol_types::private::Vec::new();
947                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
948                    rust,
949                    &mut out,
950                );
951                alloy_sol_types::abi::token::WordToken(
952                    alloy_sol_types::private::keccak256(out),
953                )
954            }
955        }
956    };
957    use alloy::contract as alloy_contract;
958    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
959
960See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
961    #[inline]
962    pub const fn new<
963        P: alloy_contract::private::Provider<N>,
964        N: alloy_contract::private::Network,
965    >(
966        address: alloy_sol_types::private::Address,
967        __provider: P,
968    ) -> EdOnBN254Instance<P, N> {
969        EdOnBN254Instance::<P, N>::new(address, __provider)
970    }
971    /**A [`EdOnBN254`](self) instance.
972
973Contains type-safe methods for interacting with an on-chain instance of the
974[`EdOnBN254`](self) contract located at a given `address`, using a given
975provider `P`.
976
977If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
978documentation on how to provide it), the `deploy` and `deploy_builder` methods can
979be used to deploy a new instance of the contract.
980
981See the [module-level documentation](self) for all the available methods.*/
982    #[derive(Clone)]
983    pub struct EdOnBN254Instance<P, N = alloy_contract::private::Ethereum> {
984        address: alloy_sol_types::private::Address,
985        provider: P,
986        _network: ::core::marker::PhantomData<N>,
987    }
988    #[automatically_derived]
989    impl<P, N> ::core::fmt::Debug for EdOnBN254Instance<P, N> {
990        #[inline]
991        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
992            f.debug_tuple("EdOnBN254Instance").field(&self.address).finish()
993        }
994    }
995    /// Instantiation and getters/setters.
996    impl<
997        P: alloy_contract::private::Provider<N>,
998        N: alloy_contract::private::Network,
999    > EdOnBN254Instance<P, N> {
1000        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
1001
1002See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
1003        #[inline]
1004        pub const fn new(
1005            address: alloy_sol_types::private::Address,
1006            __provider: P,
1007        ) -> Self {
1008            Self {
1009                address,
1010                provider: __provider,
1011                _network: ::core::marker::PhantomData,
1012            }
1013        }
1014        /// Returns a reference to the address.
1015        #[inline]
1016        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1017            &self.address
1018        }
1019        /// Sets the address.
1020        #[inline]
1021        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1022            self.address = address;
1023        }
1024        /// Sets the address and returns `self`.
1025        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1026            self.set_address(address);
1027            self
1028        }
1029        /// Returns a reference to the provider.
1030        #[inline]
1031        pub const fn provider(&self) -> &P {
1032            &self.provider
1033        }
1034    }
1035    impl<P: ::core::clone::Clone, N> EdOnBN254Instance<&P, N> {
1036        /// Clones the provider and returns a new instance with the cloned provider.
1037        #[inline]
1038        pub fn with_cloned_provider(self) -> EdOnBN254Instance<P, N> {
1039            EdOnBN254Instance {
1040                address: self.address,
1041                provider: ::core::clone::Clone::clone(&self.provider),
1042                _network: ::core::marker::PhantomData,
1043            }
1044        }
1045    }
1046    /// Function calls.
1047    impl<
1048        P: alloy_contract::private::Provider<N>,
1049        N: alloy_contract::private::Network,
1050    > EdOnBN254Instance<P, N> {
1051        /// Creates a new call builder using this contract instance's provider and address.
1052        ///
1053        /// Note that the call can be any function call, not just those defined in this
1054        /// contract. Prefer using the other methods for building type-safe contract calls.
1055        pub fn call_builder<C: alloy_sol_types::SolCall>(
1056            &self,
1057            call: &C,
1058        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1059            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1060        }
1061    }
1062    /// Event filters.
1063    impl<
1064        P: alloy_contract::private::Provider<N>,
1065        N: alloy_contract::private::Network,
1066    > EdOnBN254Instance<P, N> {
1067        /// Creates a new event filter using this contract instance's provider and address.
1068        ///
1069        /// Note that the type can be any event, not just those defined in this contract.
1070        /// Prefer using the other methods for building type-safe event filters.
1071        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1072            &self,
1073        ) -> alloy_contract::Event<&P, E, N> {
1074            alloy_contract::Event::new_sol(&self.provider, &self.address)
1075        }
1076    }
1077}
1078/**
1079
1080Generated by the following Solidity interface...
1081```solidity
1082library BN254 {
1083    type BaseField is uint256;
1084    struct G1Point {
1085        BaseField x;
1086        BaseField y;
1087    }
1088    struct G2Point {
1089        BaseField x0;
1090        BaseField x1;
1091        BaseField y0;
1092        BaseField y1;
1093    }
1094}
1095
1096library EdOnBN254 {
1097    struct EdOnBN254Point {
1098        uint256 x;
1099        uint256 y;
1100    }
1101}
1102
1103interface StakeTable {
1104    type ValidatorStatus is uint8;
1105
1106    error AddressEmptyCode(address target);
1107    error BLSSigVerificationFailed();
1108    error BN254PairingProdFailed();
1109    error BlsKeyAlreadyUsed();
1110    error ERC1967InvalidImplementation(address implementation);
1111    error ERC1967NonPayable();
1112    error ExitEscrowPeriodInvalid();
1113    error FailedInnerCall();
1114    error InsufficientAllowance(uint256, uint256);
1115    error InsufficientBalance(uint256);
1116    error InvalidCommission();
1117    error InvalidG1();
1118    error InvalidInitialization();
1119    error InvalidSchnorrVK();
1120    error NotInitializing();
1121    error NothingToWithdraw();
1122    error OwnableInvalidOwner(address owner);
1123    error OwnableUnauthorizedAccount(address account);
1124    error OwnershipCannotBeRenounced();
1125    error PowPrecompileFailed();
1126    error PrematureWithdrawal();
1127    error UUPSUnauthorizedCallContext();
1128    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1129    error UndelegationAlreadyExists();
1130    error ValidatorAlreadyExited();
1131    error ValidatorAlreadyRegistered();
1132    error ValidatorInactive();
1133    error ValidatorNotExited();
1134    error ZeroAddress();
1135    error ZeroAmount();
1136
1137    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1138    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1139    event Initialized(uint64 version);
1140    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1141    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1142    event Upgraded(address indexed implementation);
1143    event ValidatorExit(address indexed validator);
1144    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1145    event Withdrawal(address indexed account, uint256 amount);
1146
1147    constructor();
1148
1149    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1150    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1151    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1152    function claimValidatorExit(address validator) external;
1153    function claimWithdrawal(address validator) external;
1154    function delegate(address validator, uint256 amount) external;
1155    function delegations(address validator, address delegator) external view returns (uint256 amount);
1156    function deregisterValidator() external;
1157    function exitEscrowPeriod() external view returns (uint256);
1158    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1159    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1160    function initializedAtBlock() external view returns (uint256);
1161    function lightClient() external view returns (address);
1162    function owner() external view returns (address);
1163    function proxiableUUID() external view returns (bytes32);
1164    function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
1165    function renounceOwnership() external;
1166    function token() external view returns (address);
1167    function transferOwnership(address newOwner) external;
1168    function undelegate(address validator, uint256 amount) external;
1169    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1170    function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
1171    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1172    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1173    function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
1174}
1175```
1176
1177...which was generated by the following JSON ABI:
1178```json
1179[
1180  {
1181    "type": "constructor",
1182    "inputs": [],
1183    "stateMutability": "nonpayable"
1184  },
1185  {
1186    "type": "function",
1187    "name": "UPGRADE_INTERFACE_VERSION",
1188    "inputs": [],
1189    "outputs": [
1190      {
1191        "name": "",
1192        "type": "string",
1193        "internalType": "string"
1194      }
1195    ],
1196    "stateMutability": "view"
1197  },
1198  {
1199    "type": "function",
1200    "name": "_hashBlsKey",
1201    "inputs": [
1202      {
1203        "name": "blsVK",
1204        "type": "tuple",
1205        "internalType": "struct BN254.G2Point",
1206        "components": [
1207          {
1208            "name": "x0",
1209            "type": "uint256",
1210            "internalType": "BN254.BaseField"
1211          },
1212          {
1213            "name": "x1",
1214            "type": "uint256",
1215            "internalType": "BN254.BaseField"
1216          },
1217          {
1218            "name": "y0",
1219            "type": "uint256",
1220            "internalType": "BN254.BaseField"
1221          },
1222          {
1223            "name": "y1",
1224            "type": "uint256",
1225            "internalType": "BN254.BaseField"
1226          }
1227        ]
1228      }
1229    ],
1230    "outputs": [
1231      {
1232        "name": "",
1233        "type": "bytes32",
1234        "internalType": "bytes32"
1235      }
1236    ],
1237    "stateMutability": "pure"
1238  },
1239  {
1240    "type": "function",
1241    "name": "blsKeys",
1242    "inputs": [
1243      {
1244        "name": "blsKeyHash",
1245        "type": "bytes32",
1246        "internalType": "bytes32"
1247      }
1248    ],
1249    "outputs": [
1250      {
1251        "name": "used",
1252        "type": "bool",
1253        "internalType": "bool"
1254      }
1255    ],
1256    "stateMutability": "view"
1257  },
1258  {
1259    "type": "function",
1260    "name": "claimValidatorExit",
1261    "inputs": [
1262      {
1263        "name": "validator",
1264        "type": "address",
1265        "internalType": "address"
1266      }
1267    ],
1268    "outputs": [],
1269    "stateMutability": "nonpayable"
1270  },
1271  {
1272    "type": "function",
1273    "name": "claimWithdrawal",
1274    "inputs": [
1275      {
1276        "name": "validator",
1277        "type": "address",
1278        "internalType": "address"
1279      }
1280    ],
1281    "outputs": [],
1282    "stateMutability": "nonpayable"
1283  },
1284  {
1285    "type": "function",
1286    "name": "delegate",
1287    "inputs": [
1288      {
1289        "name": "validator",
1290        "type": "address",
1291        "internalType": "address"
1292      },
1293      {
1294        "name": "amount",
1295        "type": "uint256",
1296        "internalType": "uint256"
1297      }
1298    ],
1299    "outputs": [],
1300    "stateMutability": "nonpayable"
1301  },
1302  {
1303    "type": "function",
1304    "name": "delegations",
1305    "inputs": [
1306      {
1307        "name": "validator",
1308        "type": "address",
1309        "internalType": "address"
1310      },
1311      {
1312        "name": "delegator",
1313        "type": "address",
1314        "internalType": "address"
1315      }
1316    ],
1317    "outputs": [
1318      {
1319        "name": "amount",
1320        "type": "uint256",
1321        "internalType": "uint256"
1322      }
1323    ],
1324    "stateMutability": "view"
1325  },
1326  {
1327    "type": "function",
1328    "name": "deregisterValidator",
1329    "inputs": [],
1330    "outputs": [],
1331    "stateMutability": "nonpayable"
1332  },
1333  {
1334    "type": "function",
1335    "name": "exitEscrowPeriod",
1336    "inputs": [],
1337    "outputs": [
1338      {
1339        "name": "",
1340        "type": "uint256",
1341        "internalType": "uint256"
1342      }
1343    ],
1344    "stateMutability": "view"
1345  },
1346  {
1347    "type": "function",
1348    "name": "getVersion",
1349    "inputs": [],
1350    "outputs": [
1351      {
1352        "name": "majorVersion",
1353        "type": "uint8",
1354        "internalType": "uint8"
1355      },
1356      {
1357        "name": "minorVersion",
1358        "type": "uint8",
1359        "internalType": "uint8"
1360      },
1361      {
1362        "name": "patchVersion",
1363        "type": "uint8",
1364        "internalType": "uint8"
1365      }
1366    ],
1367    "stateMutability": "pure"
1368  },
1369  {
1370    "type": "function",
1371    "name": "initialize",
1372    "inputs": [
1373      {
1374        "name": "_tokenAddress",
1375        "type": "address",
1376        "internalType": "address"
1377      },
1378      {
1379        "name": "_lightClientAddress",
1380        "type": "address",
1381        "internalType": "address"
1382      },
1383      {
1384        "name": "_exitEscrowPeriod",
1385        "type": "uint256",
1386        "internalType": "uint256"
1387      },
1388      {
1389        "name": "_timelock",
1390        "type": "address",
1391        "internalType": "address"
1392      }
1393    ],
1394    "outputs": [],
1395    "stateMutability": "nonpayable"
1396  },
1397  {
1398    "type": "function",
1399    "name": "initializedAtBlock",
1400    "inputs": [],
1401    "outputs": [
1402      {
1403        "name": "",
1404        "type": "uint256",
1405        "internalType": "uint256"
1406      }
1407    ],
1408    "stateMutability": "view"
1409  },
1410  {
1411    "type": "function",
1412    "name": "lightClient",
1413    "inputs": [],
1414    "outputs": [
1415      {
1416        "name": "",
1417        "type": "address",
1418        "internalType": "contract ILightClient"
1419      }
1420    ],
1421    "stateMutability": "view"
1422  },
1423  {
1424    "type": "function",
1425    "name": "owner",
1426    "inputs": [],
1427    "outputs": [
1428      {
1429        "name": "",
1430        "type": "address",
1431        "internalType": "address"
1432      }
1433    ],
1434    "stateMutability": "view"
1435  },
1436  {
1437    "type": "function",
1438    "name": "proxiableUUID",
1439    "inputs": [],
1440    "outputs": [
1441      {
1442        "name": "",
1443        "type": "bytes32",
1444        "internalType": "bytes32"
1445      }
1446    ],
1447    "stateMutability": "view"
1448  },
1449  {
1450    "type": "function",
1451    "name": "registerValidator",
1452    "inputs": [
1453      {
1454        "name": "blsVK",
1455        "type": "tuple",
1456        "internalType": "struct BN254.G2Point",
1457        "components": [
1458          {
1459            "name": "x0",
1460            "type": "uint256",
1461            "internalType": "BN254.BaseField"
1462          },
1463          {
1464            "name": "x1",
1465            "type": "uint256",
1466            "internalType": "BN254.BaseField"
1467          },
1468          {
1469            "name": "y0",
1470            "type": "uint256",
1471            "internalType": "BN254.BaseField"
1472          },
1473          {
1474            "name": "y1",
1475            "type": "uint256",
1476            "internalType": "BN254.BaseField"
1477          }
1478        ]
1479      },
1480      {
1481        "name": "schnorrVK",
1482        "type": "tuple",
1483        "internalType": "struct EdOnBN254.EdOnBN254Point",
1484        "components": [
1485          {
1486            "name": "x",
1487            "type": "uint256",
1488            "internalType": "uint256"
1489          },
1490          {
1491            "name": "y",
1492            "type": "uint256",
1493            "internalType": "uint256"
1494          }
1495        ]
1496      },
1497      {
1498        "name": "blsSig",
1499        "type": "tuple",
1500        "internalType": "struct BN254.G1Point",
1501        "components": [
1502          {
1503            "name": "x",
1504            "type": "uint256",
1505            "internalType": "BN254.BaseField"
1506          },
1507          {
1508            "name": "y",
1509            "type": "uint256",
1510            "internalType": "BN254.BaseField"
1511          }
1512        ]
1513      },
1514      {
1515        "name": "commission",
1516        "type": "uint16",
1517        "internalType": "uint16"
1518      }
1519    ],
1520    "outputs": [],
1521    "stateMutability": "nonpayable"
1522  },
1523  {
1524    "type": "function",
1525    "name": "renounceOwnership",
1526    "inputs": [],
1527    "outputs": [],
1528    "stateMutability": "nonpayable"
1529  },
1530  {
1531    "type": "function",
1532    "name": "token",
1533    "inputs": [],
1534    "outputs": [
1535      {
1536        "name": "",
1537        "type": "address",
1538        "internalType": "contract ERC20"
1539      }
1540    ],
1541    "stateMutability": "view"
1542  },
1543  {
1544    "type": "function",
1545    "name": "transferOwnership",
1546    "inputs": [
1547      {
1548        "name": "newOwner",
1549        "type": "address",
1550        "internalType": "address"
1551      }
1552    ],
1553    "outputs": [],
1554    "stateMutability": "nonpayable"
1555  },
1556  {
1557    "type": "function",
1558    "name": "undelegate",
1559    "inputs": [
1560      {
1561        "name": "validator",
1562        "type": "address",
1563        "internalType": "address"
1564      },
1565      {
1566        "name": "amount",
1567        "type": "uint256",
1568        "internalType": "uint256"
1569      }
1570    ],
1571    "outputs": [],
1572    "stateMutability": "nonpayable"
1573  },
1574  {
1575    "type": "function",
1576    "name": "undelegations",
1577    "inputs": [
1578      {
1579        "name": "validator",
1580        "type": "address",
1581        "internalType": "address"
1582      },
1583      {
1584        "name": "delegator",
1585        "type": "address",
1586        "internalType": "address"
1587      }
1588    ],
1589    "outputs": [
1590      {
1591        "name": "amount",
1592        "type": "uint256",
1593        "internalType": "uint256"
1594      },
1595      {
1596        "name": "unlocksAt",
1597        "type": "uint256",
1598        "internalType": "uint256"
1599      }
1600    ],
1601    "stateMutability": "view"
1602  },
1603  {
1604    "type": "function",
1605    "name": "updateConsensusKeys",
1606    "inputs": [
1607      {
1608        "name": "newBlsVK",
1609        "type": "tuple",
1610        "internalType": "struct BN254.G2Point",
1611        "components": [
1612          {
1613            "name": "x0",
1614            "type": "uint256",
1615            "internalType": "BN254.BaseField"
1616          },
1617          {
1618            "name": "x1",
1619            "type": "uint256",
1620            "internalType": "BN254.BaseField"
1621          },
1622          {
1623            "name": "y0",
1624            "type": "uint256",
1625            "internalType": "BN254.BaseField"
1626          },
1627          {
1628            "name": "y1",
1629            "type": "uint256",
1630            "internalType": "BN254.BaseField"
1631          }
1632        ]
1633      },
1634      {
1635        "name": "newSchnorrVK",
1636        "type": "tuple",
1637        "internalType": "struct EdOnBN254.EdOnBN254Point",
1638        "components": [
1639          {
1640            "name": "x",
1641            "type": "uint256",
1642            "internalType": "uint256"
1643          },
1644          {
1645            "name": "y",
1646            "type": "uint256",
1647            "internalType": "uint256"
1648          }
1649        ]
1650      },
1651      {
1652        "name": "newBlsSig",
1653        "type": "tuple",
1654        "internalType": "struct BN254.G1Point",
1655        "components": [
1656          {
1657            "name": "x",
1658            "type": "uint256",
1659            "internalType": "BN254.BaseField"
1660          },
1661          {
1662            "name": "y",
1663            "type": "uint256",
1664            "internalType": "BN254.BaseField"
1665          }
1666        ]
1667      }
1668    ],
1669    "outputs": [],
1670    "stateMutability": "nonpayable"
1671  },
1672  {
1673    "type": "function",
1674    "name": "upgradeToAndCall",
1675    "inputs": [
1676      {
1677        "name": "newImplementation",
1678        "type": "address",
1679        "internalType": "address"
1680      },
1681      {
1682        "name": "data",
1683        "type": "bytes",
1684        "internalType": "bytes"
1685      }
1686    ],
1687    "outputs": [],
1688    "stateMutability": "payable"
1689  },
1690  {
1691    "type": "function",
1692    "name": "validatorExits",
1693    "inputs": [
1694      {
1695        "name": "validator",
1696        "type": "address",
1697        "internalType": "address"
1698      }
1699    ],
1700    "outputs": [
1701      {
1702        "name": "unlocksAt",
1703        "type": "uint256",
1704        "internalType": "uint256"
1705      }
1706    ],
1707    "stateMutability": "view"
1708  },
1709  {
1710    "type": "function",
1711    "name": "validators",
1712    "inputs": [
1713      {
1714        "name": "account",
1715        "type": "address",
1716        "internalType": "address"
1717      }
1718    ],
1719    "outputs": [
1720      {
1721        "name": "delegatedAmount",
1722        "type": "uint256",
1723        "internalType": "uint256"
1724      },
1725      {
1726        "name": "status",
1727        "type": "uint8",
1728        "internalType": "enum StakeTable.ValidatorStatus"
1729      }
1730    ],
1731    "stateMutability": "view"
1732  },
1733  {
1734    "type": "event",
1735    "name": "ConsensusKeysUpdated",
1736    "inputs": [
1737      {
1738        "name": "account",
1739        "type": "address",
1740        "indexed": true,
1741        "internalType": "address"
1742      },
1743      {
1744        "name": "blsVK",
1745        "type": "tuple",
1746        "indexed": false,
1747        "internalType": "struct BN254.G2Point",
1748        "components": [
1749          {
1750            "name": "x0",
1751            "type": "uint256",
1752            "internalType": "BN254.BaseField"
1753          },
1754          {
1755            "name": "x1",
1756            "type": "uint256",
1757            "internalType": "BN254.BaseField"
1758          },
1759          {
1760            "name": "y0",
1761            "type": "uint256",
1762            "internalType": "BN254.BaseField"
1763          },
1764          {
1765            "name": "y1",
1766            "type": "uint256",
1767            "internalType": "BN254.BaseField"
1768          }
1769        ]
1770      },
1771      {
1772        "name": "schnorrVK",
1773        "type": "tuple",
1774        "indexed": false,
1775        "internalType": "struct EdOnBN254.EdOnBN254Point",
1776        "components": [
1777          {
1778            "name": "x",
1779            "type": "uint256",
1780            "internalType": "uint256"
1781          },
1782          {
1783            "name": "y",
1784            "type": "uint256",
1785            "internalType": "uint256"
1786          }
1787        ]
1788      }
1789    ],
1790    "anonymous": false
1791  },
1792  {
1793    "type": "event",
1794    "name": "Delegated",
1795    "inputs": [
1796      {
1797        "name": "delegator",
1798        "type": "address",
1799        "indexed": true,
1800        "internalType": "address"
1801      },
1802      {
1803        "name": "validator",
1804        "type": "address",
1805        "indexed": true,
1806        "internalType": "address"
1807      },
1808      {
1809        "name": "amount",
1810        "type": "uint256",
1811        "indexed": false,
1812        "internalType": "uint256"
1813      }
1814    ],
1815    "anonymous": false
1816  },
1817  {
1818    "type": "event",
1819    "name": "Initialized",
1820    "inputs": [
1821      {
1822        "name": "version",
1823        "type": "uint64",
1824        "indexed": false,
1825        "internalType": "uint64"
1826      }
1827    ],
1828    "anonymous": false
1829  },
1830  {
1831    "type": "event",
1832    "name": "OwnershipTransferred",
1833    "inputs": [
1834      {
1835        "name": "previousOwner",
1836        "type": "address",
1837        "indexed": true,
1838        "internalType": "address"
1839      },
1840      {
1841        "name": "newOwner",
1842        "type": "address",
1843        "indexed": true,
1844        "internalType": "address"
1845      }
1846    ],
1847    "anonymous": false
1848  },
1849  {
1850    "type": "event",
1851    "name": "Undelegated",
1852    "inputs": [
1853      {
1854        "name": "delegator",
1855        "type": "address",
1856        "indexed": true,
1857        "internalType": "address"
1858      },
1859      {
1860        "name": "validator",
1861        "type": "address",
1862        "indexed": true,
1863        "internalType": "address"
1864      },
1865      {
1866        "name": "amount",
1867        "type": "uint256",
1868        "indexed": false,
1869        "internalType": "uint256"
1870      }
1871    ],
1872    "anonymous": false
1873  },
1874  {
1875    "type": "event",
1876    "name": "Upgraded",
1877    "inputs": [
1878      {
1879        "name": "implementation",
1880        "type": "address",
1881        "indexed": true,
1882        "internalType": "address"
1883      }
1884    ],
1885    "anonymous": false
1886  },
1887  {
1888    "type": "event",
1889    "name": "ValidatorExit",
1890    "inputs": [
1891      {
1892        "name": "validator",
1893        "type": "address",
1894        "indexed": true,
1895        "internalType": "address"
1896      }
1897    ],
1898    "anonymous": false
1899  },
1900  {
1901    "type": "event",
1902    "name": "ValidatorRegistered",
1903    "inputs": [
1904      {
1905        "name": "account",
1906        "type": "address",
1907        "indexed": true,
1908        "internalType": "address"
1909      },
1910      {
1911        "name": "blsVk",
1912        "type": "tuple",
1913        "indexed": false,
1914        "internalType": "struct BN254.G2Point",
1915        "components": [
1916          {
1917            "name": "x0",
1918            "type": "uint256",
1919            "internalType": "BN254.BaseField"
1920          },
1921          {
1922            "name": "x1",
1923            "type": "uint256",
1924            "internalType": "BN254.BaseField"
1925          },
1926          {
1927            "name": "y0",
1928            "type": "uint256",
1929            "internalType": "BN254.BaseField"
1930          },
1931          {
1932            "name": "y1",
1933            "type": "uint256",
1934            "internalType": "BN254.BaseField"
1935          }
1936        ]
1937      },
1938      {
1939        "name": "schnorrVk",
1940        "type": "tuple",
1941        "indexed": false,
1942        "internalType": "struct EdOnBN254.EdOnBN254Point",
1943        "components": [
1944          {
1945            "name": "x",
1946            "type": "uint256",
1947            "internalType": "uint256"
1948          },
1949          {
1950            "name": "y",
1951            "type": "uint256",
1952            "internalType": "uint256"
1953          }
1954        ]
1955      },
1956      {
1957        "name": "commission",
1958        "type": "uint16",
1959        "indexed": false,
1960        "internalType": "uint16"
1961      }
1962    ],
1963    "anonymous": false
1964  },
1965  {
1966    "type": "event",
1967    "name": "Withdrawal",
1968    "inputs": [
1969      {
1970        "name": "account",
1971        "type": "address",
1972        "indexed": true,
1973        "internalType": "address"
1974      },
1975      {
1976        "name": "amount",
1977        "type": "uint256",
1978        "indexed": false,
1979        "internalType": "uint256"
1980      }
1981    ],
1982    "anonymous": false
1983  },
1984  {
1985    "type": "error",
1986    "name": "AddressEmptyCode",
1987    "inputs": [
1988      {
1989        "name": "target",
1990        "type": "address",
1991        "internalType": "address"
1992      }
1993    ]
1994  },
1995  {
1996    "type": "error",
1997    "name": "BLSSigVerificationFailed",
1998    "inputs": []
1999  },
2000  {
2001    "type": "error",
2002    "name": "BN254PairingProdFailed",
2003    "inputs": []
2004  },
2005  {
2006    "type": "error",
2007    "name": "BlsKeyAlreadyUsed",
2008    "inputs": []
2009  },
2010  {
2011    "type": "error",
2012    "name": "ERC1967InvalidImplementation",
2013    "inputs": [
2014      {
2015        "name": "implementation",
2016        "type": "address",
2017        "internalType": "address"
2018      }
2019    ]
2020  },
2021  {
2022    "type": "error",
2023    "name": "ERC1967NonPayable",
2024    "inputs": []
2025  },
2026  {
2027    "type": "error",
2028    "name": "ExitEscrowPeriodInvalid",
2029    "inputs": []
2030  },
2031  {
2032    "type": "error",
2033    "name": "FailedInnerCall",
2034    "inputs": []
2035  },
2036  {
2037    "type": "error",
2038    "name": "InsufficientAllowance",
2039    "inputs": [
2040      {
2041        "name": "",
2042        "type": "uint256",
2043        "internalType": "uint256"
2044      },
2045      {
2046        "name": "",
2047        "type": "uint256",
2048        "internalType": "uint256"
2049      }
2050    ]
2051  },
2052  {
2053    "type": "error",
2054    "name": "InsufficientBalance",
2055    "inputs": [
2056      {
2057        "name": "",
2058        "type": "uint256",
2059        "internalType": "uint256"
2060      }
2061    ]
2062  },
2063  {
2064    "type": "error",
2065    "name": "InvalidCommission",
2066    "inputs": []
2067  },
2068  {
2069    "type": "error",
2070    "name": "InvalidG1",
2071    "inputs": []
2072  },
2073  {
2074    "type": "error",
2075    "name": "InvalidInitialization",
2076    "inputs": []
2077  },
2078  {
2079    "type": "error",
2080    "name": "InvalidSchnorrVK",
2081    "inputs": []
2082  },
2083  {
2084    "type": "error",
2085    "name": "NotInitializing",
2086    "inputs": []
2087  },
2088  {
2089    "type": "error",
2090    "name": "NothingToWithdraw",
2091    "inputs": []
2092  },
2093  {
2094    "type": "error",
2095    "name": "OwnableInvalidOwner",
2096    "inputs": [
2097      {
2098        "name": "owner",
2099        "type": "address",
2100        "internalType": "address"
2101      }
2102    ]
2103  },
2104  {
2105    "type": "error",
2106    "name": "OwnableUnauthorizedAccount",
2107    "inputs": [
2108      {
2109        "name": "account",
2110        "type": "address",
2111        "internalType": "address"
2112      }
2113    ]
2114  },
2115  {
2116    "type": "error",
2117    "name": "OwnershipCannotBeRenounced",
2118    "inputs": []
2119  },
2120  {
2121    "type": "error",
2122    "name": "PowPrecompileFailed",
2123    "inputs": []
2124  },
2125  {
2126    "type": "error",
2127    "name": "PrematureWithdrawal",
2128    "inputs": []
2129  },
2130  {
2131    "type": "error",
2132    "name": "UUPSUnauthorizedCallContext",
2133    "inputs": []
2134  },
2135  {
2136    "type": "error",
2137    "name": "UUPSUnsupportedProxiableUUID",
2138    "inputs": [
2139      {
2140        "name": "slot",
2141        "type": "bytes32",
2142        "internalType": "bytes32"
2143      }
2144    ]
2145  },
2146  {
2147    "type": "error",
2148    "name": "UndelegationAlreadyExists",
2149    "inputs": []
2150  },
2151  {
2152    "type": "error",
2153    "name": "ValidatorAlreadyExited",
2154    "inputs": []
2155  },
2156  {
2157    "type": "error",
2158    "name": "ValidatorAlreadyRegistered",
2159    "inputs": []
2160  },
2161  {
2162    "type": "error",
2163    "name": "ValidatorInactive",
2164    "inputs": []
2165  },
2166  {
2167    "type": "error",
2168    "name": "ValidatorNotExited",
2169    "inputs": []
2170  },
2171  {
2172    "type": "error",
2173    "name": "ZeroAddress",
2174    "inputs": []
2175  },
2176  {
2177    "type": "error",
2178    "name": "ZeroAmount",
2179    "inputs": []
2180  }
2181]
2182```*/
2183#[allow(
2184    non_camel_case_types,
2185    non_snake_case,
2186    clippy::pub_underscore_fields,
2187    clippy::style,
2188    clippy::empty_structs_with_brackets
2189)]
2190pub mod StakeTable {
2191    use super::*;
2192    use alloy::sol_types as alloy_sol_types;
2193    /// The creation / init bytecode of the contract.
2194    ///
2195    /// ```text
2196    ///0x60a060405230608052348015610013575f5ffd5b5061001c610029565b610024610029565b6100db565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100795760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612a486101015f395f81816112d90152818161130201526114480152612a485ff3fe608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004612346565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d036600461246c565b6106d6565b3480156101e0575f5ffd5b506101846101ef3660046124ca565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b50610184610230366004612346565b61098a565b6101846102433660046124e3565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612588565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d3660046125cc565b610cee565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b506103646103413660046125e6565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b506101846103933660046124ca565b610d48565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad9190612617565b3480156103e0575f5ffd5b506104036103ef36600461264c565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c3660046124ca565b60056020525f908152604090205481565b348015610468575f5ffd5b50610184610477366004612663565b610e58565b348015610487575f5ffd5b506102086104963660046125e6565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc3660046124ca565b610f84565b3480156104dc575f5ffd5b506105066104eb3660046124ca565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad9291906126c1565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fc1565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d091906126f1565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611042565b6001600160a01b0384165f908152600360205260408120805485929061064190849061271c565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c90849061271c565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110e6565b6106e984611133565b6106f28561116e565b604080516001600160a01b03831660208201525f910160405160208183030381529060405290506107248185886111aa565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610cee565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a06126ad565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e66126ad565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f90815260066020908152604080832087851684529091528120556002546109419116848361123f565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fc1565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a7790849061272f565b92505081905550604051806040016040528084815260200160085442610a9d919061271c565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af090849061272f565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b446112ce565b610b4d82611374565b610b57828261137c565b5050565b5f610b6461143d565b505f516020612a1c5f395f51905f5290565b33610b8081610fc1565b610b8983611133565b610b928461116e565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc48184876111aa565b600160045f610bd288610cee565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c30929190612742565b60405180910390a25050505050565b33610c4981610fc1565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b904261271c565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611486565b6040516317d5c96560e11b815260040160405180910390fd5b5f815f0151826020015183604001518460600151604051602001610d2b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d8d57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dd557604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e109116838361123f565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e4b91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e9d5750825b90505f8267ffffffffffffffff166001148015610eb95750303b155b905081158015610ec7575080155b15610ee55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0f57845460ff60401b1916600160401b1785555b610f18866114e1565b610f206114f2565b610f286114fa565b610f33898989611600565b8315610f7957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f8c611486565b6001600160a01b038116610fb557604051631e4fbdf760e01b81525f60048201526024016105f9565b610fbe816116ab565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610ff257610ff26126ad565b036110105760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611024576110246126ad565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561109b5750833b153d17155b806110df5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115611115576111156126ad565b14610fbe5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f8082526020820152611150828261171b565b15610b57576040516306cf438f60e01b815260040160405180910390fd5b60045f61117a83610cee565b815260208101919091526040015f205460ff1615610fbe5760405162da8a5760e11b815260040160405180910390fd5b6111b38261173e565b5f6040518060600160405280602481526020016129d86024913990505f84826040516020016111e3929190612793565b60405160208183030381529060405290505f6111fe826117a5565b905061121b818561120e88611892565b611216611909565b6119d6565b6112375760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156112895750823b153d17155b806112c85760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061135457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113485f516020612a1c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113725760405163703e46dd60e11b815260040160405180910390fd5b565b610fbe611486565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113d6575060408051601f3d908101601f191682019092526113d3918101906126f1565b60015b6113fe57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612a1c5f395f51905f52811461142e57604051632a87526960e21b8152600481018290526024016105f9565b6114388383611a85565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113725760405163703e46dd60e11b815260040160405180910390fd5b336114b87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113725760405163118cdaa760e01b81523360048201526024016105f9565b6114e9611ada565b610fbe81611b23565b611372611ada565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561153f5750825b90505f8267ffffffffffffffff16600114801561155b5750303b155b905081158015611569575080155b156115875760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156115b157845460ff60401b1916600160401b1785555b435f5583156110df57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116275760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821661164e5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156116a35760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b805182515f91148015611735575081602001518360200151145b90505b92915050565b805160208201515f915f5160206129fc5f395f51905f5291159015161561176457505050565b8251602084015182600384858586098509088382830914838210848410161693505050816114385760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f6117c283611b2b565b90505f5160206129fc5f395f51905f5260035f82848509905082806117e9576117e96127af565b848209905082806117fc576117fc6127af565b82820890505f5f61180c83611d34565b925090505b80611875578480611824576118246127af565b6001870895508480611838576118386127af565b8687099250848061184b5761184b6127af565b8684099250848061185e5761185e6127af565b848408925061186c83611d34565b92509050611811565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f80825260208201528151602083015115901516156118b9575090565b6040518060400160405280835f015181526020015f5160206129fc5f395f51905f5284602001516118ea91906127c3565b611901905f5160206129fc5f395f51905f5261272f565b905292915050565b61193060405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611a795760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b611a8e82611dfc565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ad2576114388282611e5f565b610b57611ed1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661137257604051631afcd79f60e31b815260040160405180910390fd5b610f8c611ada565b5f5f611b3683611ef0565b805190915060308114611b4b57611b4b6127e2565b5f8167ffffffffffffffff811115611b6557611b6561236e565b6040519080825280601f01601f191660200182016040528015611b8f576020820181803683370190505b5090505f5b82811015611bfe57836001611ba9838661272f565b611bb3919061272f565b81518110611bc357611bc36127f6565b602001015160f81c60f81b828281518110611be057611be06127f6565b60200101906001600160f81b03191690815f1a905350600101611b94565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611c8e578381611c3a858861272f565b611c44919061271c565b81518110611c5457611c546127f6565b602001015160f81c60f81b60f81c828281518110611c7457611c746127f6565b60ff90921660209283029190910190910152600101611c26565b505f611c998261223c565b90506101005f5160206129fc5f395f51905f525f611cb7868961272f565b90505f5b81811015611d24575f886001611cd1848661272f565b611cdb919061272f565b81518110611ceb57611ceb6127f6565b016020015160f81c90508380611d0357611d036127af565b85870995508380611d1657611d166127af565b818708955050600101611cbb565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206129fc5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611dc257604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115611ddb57611dd8838261272f565b92505b8080611de957611de96127af565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611e3157604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612a1c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611e7b919061280a565b5f60405180830381855af49150503d805f8114611eb3576040519150601f19603f3d011682016040523d82523d5f602084013e611eb8565b606091505b5091509150611ec88583836122a3565b95945050505050565b34156113725760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611f30929190612793565b6040516020818303038152906040529050808460f81b604051602001611f57929190612815565b604051602081830303815290604052905080604051602001611f79919061283f565b60408051601f1981840301815290829052915061010160f01b90611fa39083908390602001612857565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff8111156120135761201361236e565b6040519080825280601f01601f19166020018201604052801561203d576020820181803683370190505b5090505f8260405160200161205491815260200190565b60408051601f1981840301815291905290505f5b81518110156120be57818181518110612083576120836127f6565b602001015160f81c60f81b8382815181106120a0576120a06127f6565b60200101906001600160f81b03191690815f1a905350600101612068565b505f846040516020016120d391815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612165575f83828151811061210c5761210c6127f6565b602001015160f81c60f81b838381518110612129576121296127f6565b602001015160f81c60f81b189050888160405160200161214a92919061287b565b60408051601f198184030181529190529850506001016120f1565b5086888760405160200161217b9392919061289f565b604051602081830303815290604052965086805190602001209350836040516020016121a991815260200190565b60408051601f1981840301815291905291505f5b6121ca8a60ff8d1661272f565b81101561222b578281815181106121e3576121e36127f6565b01602001516001600160f81b031916846121fd838d61271c565b8151811061220d5761220d6127f6565b60200101906001600160f81b03191690815f1a9053506001016121bd565b50919b9a5050505050505050505050565b5f80805b835181101561229c5783818151811061225b5761225b6127f6565b602002602001015160ff1681600861227391906128d2565b61227e9060026129cc565b61228891906128d2565b612292908361271c565b9150600101612240565b5092915050565b6060826122b8576122b382612302565b6122fb565b81511580156122cf57506001600160a01b0384163b155b156122f857604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b8051156123125780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114612341575f5ffd5b919050565b5f5f60408385031215612357575f5ffd5b6123608361232b565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156123a5576123a561236e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156123d4576123d461236e565b604052919050565b5f608082840312156123ec575f5ffd5b6040516080810167ffffffffffffffff8111828210171561240f5761240f61236e565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561244d575f5ffd5b612455612382565b823581526020928301359281019290925250919050565b5f5f5f5f6101208587031215612480575f5ffd5b61248a86866123dc565b9350612499866080870161243d565b92506124a88660c0870161243d565b915061010085013561ffff811681146124bf575f5ffd5b939692955090935050565b5f602082840312156124da575f5ffd5b6117358261232b565b5f5f604083850312156124f4575f5ffd5b6124fd8361232b565b9150602083013567ffffffffffffffff811115612518575f5ffd5b8301601f81018513612528575f5ffd5b803567ffffffffffffffff8111156125425761254261236e565b612555601f8201601f19166020016123ab565b818152866020838501011115612569575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f610100848603121561259b575f5ffd5b6125a585856123dc565b92506125b4856080860161243d565b91506125c38560c0860161243d565b90509250925092565b5f608082840312156125dc575f5ffd5b61173583836123dc565b5f5f604083850312156125f7575f5ffd5b6126008361232b565b915061260e6020840161232b565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561265c575f5ffd5b5035919050565b5f5f5f5f60808587031215612676575f5ffd5b61267f8561232b565b935061268d6020860161232b565b9250604085013591506126a26060860161232b565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106126e457634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215612701575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561173857611738612708565b8181038181111561173857611738612708565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c081016122fb565b5f81518060208401855e5f93019283525090919050565b5f6127a76127a1838661277c565b8461277c565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f826127dd57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611735828461277c565b5f612820828561277c565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61284a828461277c565b5f81526001019392505050565b5f612862828561277c565b6001600160f01b03199390931683525050600201919050565b5f612886828561277c565b6001600160f81b03199390931683525050600101919050565b5f6128aa828661277c565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b808202811582820484141761173857611738612708565b6001815b60018411156129245780850481111561290857612908612708565b600184161561291657908102905b60019390931c9280026128ed565b935093915050565b5f8261293a57506001611738565b8161294657505f611738565b816001811461295c576002811461296657612982565b6001915050611738565b60ff84111561297757612977612708565b50506001821b611738565b5060208310610133831016604e8410600b84101617156129a5575081810a611738565b6129b15f1984846128e9565b805f19048211156129c4576129c4612708565b029392505050565b5f611735838361292c56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
2197    /// ```
2198    #[rustfmt::skip]
2199    #[allow(clippy::all)]
2200    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2201        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0)V[a\0$a\0)V[a\0\xDBV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0yW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD8W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa*Ha\x01\x01_9_\x81\x81a\x12\xD9\x01R\x81\x81a\x13\x02\x01Ra\x14H\x01Ra*H_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80c\x9B0\xA5\xE6\x11a\0\xCDW\x80c\xB5p\x0Eh\x11a\0\x87W\x80c\xC6H\x14\xDD\x11a\0bW\x80c\xC6H\x14\xDD\x14a\x04|W\x80c\xF2\xFD\xE3\x8B\x14a\x04\xB2W\x80c\xFAR\xC7\xD8\x14a\x04\xD1W\x80c\xFC\x0CTj\x14a\x05\x14W__\xFD[\x80c\xB5p\x0Eh\x14a\x04\x13W\x80c\xB5\xEC\xB3D\x14a\x042W\x80c\xBE 0\x94\x14a\x04]W__\xFD[\x80c\x9B0\xA5\xE6\x14a\x02\xF3W\x80c\x9E\x9A\x8F1\x14a\x03\x12W\x80c\xA2\xD7\x8D\xD5\x14a\x03'W\x80c\xA3\x06j\xAB\x14a\x03yW\x80c\xAD<\xB1\xCC\x14a\x03\x98W\x80c\xB3\xE6\xEB\xD5\x14a\x03\xD5W__\xFD[\x80cO\x1E\xF2\x86\x11a\x01\x1EW\x80cO\x1E\xF2\x86\x14a\x025W\x80cR\xD1\x90-\x14a\x02HW\x80cUD\xC2\xF1\x14a\x02\\W\x80cj\x91\x1C\xCF\x14a\x02{W\x80cqP\x18\xA6\x14a\x02\x8FW\x80c\x8D\xA5\xCB[\x14a\x02\xA3W__\xFD[\x80c\x02n@+\x14a\x01eW\x80c\r\x8En,\x14a\x01\x86W\x80c\x13\xB9\x05z\x14a\x01\xB6W\x80c!@\xFE\xCD\x14a\x01\xD5W\x80c>\x9D\xF9\xB5\x14a\x01\xF4W\x80cM\x99\xDD\x16\x14a\x02\x16W[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a#FV[a\x053V[\0[4\x80\x15a\x01\x91W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC1W__\xFD[Pa\x01\x84a\x01\xD06`\x04a$lV[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a$\xCAV[a\x08iV[4\x80\x15a\x01\xFFW__\xFD[Pa\x02\x08_T\x81V[`@Q\x90\x81R` \x01a\x01\xADV[4\x80\x15a\x02!W__\xFD[Pa\x01\x84a\x0206`\x04a#FV[a\t\x8AV[a\x01\x84a\x02C6`\x04a$\xE3V[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a%\x88V[a\x0BvV[4\x80\x15a\x02\x86W__\xFD[Pa\x01\x84a\x0C?V[4\x80\x15a\x02\x9AW__\xFD[Pa\x01\x84a\x0C\xCDV[4\x80\x15a\x02\xAEW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xADV[4\x80\x15a\x02\xFEW__\xFD[Pa\x02\x08a\x03\r6`\x04a%\xCCV[a\x0C\xEEV[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a%\xE6V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x01\xADV[4\x80\x15a\x03\x84W__\xFD[Pa\x01\x84a\x03\x936`\x04a$\xCAV[a\rHV[4\x80\x15a\x03\xA3W__\xFD[Pa\x03\xC8`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xAD\x91\x90a&\x17V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&LV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\xADV[4\x80\x15a\x04\x1EW__\xFD[P`\x01Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04=W__\xFD[Pa\x02\x08a\x04L6`\x04a$\xCAV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a&cV[a\x0EXV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a%\xE6V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x01\x84a\x04\xCC6`\x04a$\xCAV[a\x0F\x84V[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a$\xCAV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a&\xC1V[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xC1V[3_\x82\x90\x03a\x05^W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xACW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xD0\x91\x90a&\xF1V[\x90P\x82\x81\x10\x15a\x06\x02W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x06\x1A\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x10BV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\x1CV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x06|\x90\x84\x90a'\x1CV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\x06\xC8\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[3a\x06\xE0\x81a\x10\xE6V[a\x06\xE9\x84a\x113V[a\x06\xF2\x85a\x11nV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x07$\x81\x85\x88a\x11\xAAV[a'\x10\x83a\xFF\xFF\x16\x11\x15a\x07KW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x07Y\x89a\x0C\xEEV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x07\xA0Wa\x07\xA0a&\xADV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x07\xE6Wa\x07\xE6a&\xADV[\x02\x17\x90UPP`@\x80Q\x88Q\x81R` \x80\x8A\x01Q\x81\x83\x01R\x89\x83\x01Q\x82\x84\x01R``\x80\x8B\x01Q\x90\x83\x01R\x88Q`\x80\x83\x01R\x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x86\x16`\xC0\x82\x01R\x90Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x92P\x7F\xF6\xE85\x9CWR\x0BF\x964sk\xFC;\xB7\xEC\\\xBD\x1A\x0B\xD2\x8B\x10\xA8'W\x93\xBBs\x0By\x7F\x91\x81\x90\x03`\xE0\x01\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x08\xA3W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x08\xC4W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\t\x0CW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x87\x85\x16\x84R\x90\x91R\x81 U`\x02Ta\tA\x91\x16\x84\x83a\x12?V[\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\t|\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\t\x93\x82a\x0F\xC1V[3_\x82\x90\x03a\t\xB5W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\t\xF8W`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\nAW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\nw\x90\x84\x90a'/V[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\x1CV[\x90R`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x81\x81R`\x07` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x85Q\x81U\x94\x81\x01Q`\x01\x90\x95\x01\x94\x90\x94U\x90\x81R`\x03\x90\x92R\x81 \x80T\x85\x92\x90a\n\xF0\x90\x84\x90a'/V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7FM\x10\xBD\x04\x97u\xC7{\xD7\xF2U\x19Z\xFB\xA5\x08\x80(\xEC\xB3\xC7\xC2w\xD3\x93\xCC\xFFy4\xF2\xF9,\x85`@Qa\x06\xC8\x91\x81R` \x01\x90V[a\x0BDa\x12\xCEV[a\x0BM\x82a\x13tV[a\x0BW\x82\x82a\x13|V[PPV[_a\x0Bda\x14=V[P_Q` a*\x1C_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xC1V[a\x0B\x89\x83a\x113V[a\x0B\x92\x84a\x11nV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0B\xC4\x81\x84\x87a\x11\xAAV[`\x01`\x04_a\x0B\xD2\x88a\x0C\xEEV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x80\xD8\xA4\xA1f3(\xA9\x98\xD4U[\xA2\x1D\x8B\xBAn\xF1Wj\x8C^\x9D'\xF9\xC5E\xF1\xA3\xD5+\x1D\x86\x86`@Qa\x0C0\x92\x91\x90a'BV[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xC1V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\x1CV[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x94\x90\x94U`\x03\x90R\x82\x81 \x81\x90U\x91Q\x90\x91\x7F\xFB$0ST\xC8wb\xD5WHz\xE4\xA5d\xE8\xD0>\xCB\xB9\xA9}\xD8\xAF\xFF\x8E\x1Fo\xCA\xF0\xDD\x16\x91\xA2PV[a\x0C\xD5a\x14\x86V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r+\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a\r\x8DW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\r\xD5W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x86\x85\x16\x84R\x90\x91R\x81 \x81\x81U`\x01\x01U`\x02Ta\x0E\x10\x91\x16\x83\x83a\x12?V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\x0EK\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x0E\x9DWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xB9WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xC7WP\x80\x15[\x15a\x0E\xE5W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0F\x0FW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\x18\x86a\x14\xE1V[a\x0F a\x14\xF2V[a\x0F(a\x14\xFAV[a\x0F3\x89\x89\x89a\x16\0V[\x83\x15a\x0FyW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x0F\x8Ca\x14\x86V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xB5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xBE\x81a\x16\xABV[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xF2Wa\x0F\xF2a&\xADV[\x03a\x10\x10W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10$Wa\x10$a&\xADV[\x03a\x0BWW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a\x10\x9BWP\x83;\x15=\x17\x15[\x80a\x10\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\x05\xF9V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x11\x15Wa\x11\x15a&\xADV[\x14a\x0F\xBEW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11P\x82\x82a\x17\x1BV[\x15a\x0BWW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11z\x83a\x0C\xEEV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xBEW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x82a\x17>V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a)\xD8`$\x919\x90P_\x84\x82`@Q` \x01a\x11\xE3\x92\x91\x90a'\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x11\xFE\x82a\x17\xA5V[\x90Pa\x12\x1B\x81\x85a\x12\x0E\x88a\x18\x92V[a\x12\x16a\x19\tV[a\x19\xD6V[a\x127W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a\x12\x89WP\x82;\x15=\x17\x15[\x80a\x12\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\x05\xF9V[PPPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x13TWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x13H_Q` a*\x1C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13rW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0F\xBEa\x14\x86V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x13\xD6WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x13\xD3\x91\x81\x01\x90a&\xF1V[`\x01[a\x13\xFEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x1C_9_Q\x90_R\x81\x14a\x14.W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x148\x83\x83a\x1A\x85V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x13rW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x14\xB8\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x13rW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[a\x14\xE9a\x1A\xDAV[a\x0F\xBE\x81a\x1B#V[a\x13ra\x1A\xDAV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x15?WP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x15[WP0;\x15[\x90P\x81\x15\x80\x15a\x15iWP\x80\x15[\x15a\x15\x87W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x15\xB1W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xDFW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16'W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x16NW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a\x16\xA3W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x80Q\x82Q_\x91\x14\x80\x15a\x175WP\x81` \x01Q\x83` \x01Q\x14[\x90P[\x92\x91PPV[\x80Q` \x82\x01Q_\x91_Q` a)\xFC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x17dWPPPV[\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\x148W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x17\xC2\x83a\x1B+V[\x90P_Q` a)\xFC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x17\xE9Wa\x17\xE9a'\xAFV[\x84\x82\t\x90P\x82\x80a\x17\xFCWa\x17\xFCa'\xAFV[\x82\x82\x08\x90P__a\x18\x0C\x83a\x1D4V[\x92P\x90P[\x80a\x18uW\x84\x80a\x18$Wa\x18$a'\xAFV[`\x01\x87\x08\x95P\x84\x80a\x188Wa\x188a'\xAFV[\x86\x87\t\x92P\x84\x80a\x18KWa\x18Ka'\xAFV[\x86\x84\t\x92P\x84\x80a\x18^Wa\x18^a'\xAFV[\x84\x84\x08\x92Pa\x18l\x83a\x1D4V[\x92P\x90Pa\x18\x11V[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x18\xB9WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a)\xFC_9_Q\x90_R\x84` \x01Qa\x18\xEA\x91\x90a'\xC3V[a\x19\x01\x90_Q` a)\xFC_9_Q\x90_Ra'/V[\x90R\x92\x91PPV[a\x190`@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\x1AyW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a\x1A\x8E\x82a\x1D\xFCV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1A\xD2Wa\x148\x82\x82a\x1E_V[a\x0BWa\x1E\xD1V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x13rW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x8Ca\x1A\xDAV[__a\x1B6\x83a\x1E\xF0V[\x80Q\x90\x91P`0\x81\x14a\x1BKWa\x1BKa'\xE2V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1BeWa\x1Bea#nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1B\x8FW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1B\xFEW\x83`\x01a\x1B\xA9\x83\x86a'/V[a\x1B\xB3\x91\x90a'/V[\x81Q\x81\x10a\x1B\xC3Wa\x1B\xC3a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1B\xE0Wa\x1B\xE0a'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1B\x94V[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a\x1C\x8EW\x83\x81a\x1C:\x85\x88a'/V[a\x1CD\x91\x90a'\x1CV[\x81Q\x81\x10a\x1CTWa\x1CTa'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1CtWa\x1Cta'\xF6V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C&V[P_a\x1C\x99\x82a\"<V[\x90Pa\x01\0_Q` a)\xFC_9_Q\x90_R_a\x1C\xB7\x86\x89a'/V[\x90P_[\x81\x81\x10\x15a\x1D$W_\x88`\x01a\x1C\xD1\x84\x86a'/V[a\x1C\xDB\x91\x90a'/V[\x81Q\x81\x10a\x1C\xEBWa\x1C\xEBa'\xF6V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1D\x03Wa\x1D\x03a'\xAFV[\x85\x87\t\x95P\x83\x80a\x1D\x16Wa\x1D\x16a'\xAFV[\x81\x87\x08\x95PP`\x01\x01a\x1C\xBBV[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` a)\xFC_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a\x1D\xC2W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a\x1D\xDBWa\x1D\xD8\x83\x82a'/V[\x92P[\x80\x80a\x1D\xE9Wa\x1D\xE9a'\xAFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x1C_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1E{\x91\x90a(\nV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1E\xB3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\xB8V[``\x91P[P\x91P\x91Pa\x1E\xC8\x85\x83\x83a\"\xA3V[\x95\x94PPPPPV[4\x15a\x13rW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a\x1F0\x92\x91\x90a'\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a\x1FW\x92\x91\x90a(\x15V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a\x1Fy\x91\x90a(?V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a\x1F\xA3\x90\x83\x90\x83\x90` \x01a(WV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x13Wa \x13a#nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a =W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a T\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a \xBEW\x81\x81\x81Q\x81\x10a \x83Wa \x83a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a \xA0Wa \xA0a'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a hV[P_\x84`@Q` \x01a \xD3\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a!eW_\x83\x82\x81Q\x81\x10a!\x0CWa!\x0Ca'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!)Wa!)a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!J\x92\x91\x90a({V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a \xF1V[P\x86\x88\x87`@Q` \x01a!{\x93\x92\x91\x90a(\x9FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a!\xA9\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a!\xCA\x8A`\xFF\x8D\x16a'/V[\x81\x10\x15a\"+W\x82\x81\x81Q\x81\x10a!\xE3Wa!\xE3a'\xF6V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a!\xFD\x83\x8Da'\x1CV[\x81Q\x81\x10a\"\rWa\"\ra'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a!\xBDV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\"\x9CW\x83\x81\x81Q\x81\x10a\"[Wa\"[a'\xF6V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a\"s\x91\x90a(\xD2V[a\"~\x90`\x02a)\xCCV[a\"\x88\x91\x90a(\xD2V[a\"\x92\x90\x83a'\x1CV[\x91P`\x01\x01a\"@V[P\x92\x91PPV[``\x82a\"\xB8Wa\"\xB3\x82a#\x02V[a\"\xFBV[\x81Q\x15\x80\x15a\"\xCFWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\"\xF8W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x05\xF9V[P\x80[\x93\x92PPPV[\x80Q\x15a#\x12W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a#AW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a#WW__\xFD[a#`\x83a#+V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xA5Wa#\xA5a#nV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xD4Wa#\xD4a#nV[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a#\xECW__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\x0FWa$\x0Fa#nV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15a$MW__\xFD[a$Ua#\x82V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a$\x80W__\xFD[a$\x8A\x86\x86a#\xDCV[\x93Pa$\x99\x86`\x80\x87\x01a$=V[\x92Pa$\xA8\x86`\xC0\x87\x01a$=V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a$\xBFW__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a$\xDAW__\xFD[a\x175\x82a#+V[__`@\x83\x85\x03\x12\x15a$\xF4W__\xFD[a$\xFD\x83a#+V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%(W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%BWa%Ba#nV[a%U`\x1F\x82\x01`\x1F\x19\x16` \x01a#\xABV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%iW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a%\x9BW__\xFD[a%\xA5\x85\x85a#\xDCV[\x92Pa%\xB4\x85`\x80\x86\x01a$=V[\x91Pa%\xC3\x85`\xC0\x86\x01a$=V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a%\xDCW__\xFD[a\x175\x83\x83a#\xDCV[__`@\x83\x85\x03\x12\x15a%\xF7W__\xFD[a&\0\x83a#+V[\x91Pa&\x0E` \x84\x01a#+V[\x90P\x92P\x92\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a&\\W__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a&vW__\xFD[a&\x7F\x85a#+V[\x93Pa&\x8D` \x86\x01a#+V[\x92P`@\x85\x015\x91Pa&\xA2``\x86\x01a#+V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a&\xE4WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a'\x01W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x178Wa\x178a'\x08V[\x81\x81\x03\x81\x81\x11\x15a\x178Wa\x178a'\x08V[\x82Q\x81R` \x80\x84\x01Q\x81\x83\x01R`@\x80\x85\x01Q\x90\x83\x01R``\x80\x85\x01Q\x90\x83\x01R\x82Q`\x80\x83\x01R\x82\x01Q`\xA0\x82\x01R`\xC0\x81\x01a\"\xFBV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a'\xA7a'\xA1\x83\x86a'|V[\x84a'|V[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a'\xDDWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_a\x175\x82\x84a'|V[_a( \x82\x85a'|V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(J\x82\x84a'|V[_\x81R`\x01\x01\x93\x92PPPV[_a(b\x82\x85a'|V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a(\x86\x82\x85a'|V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a(\xAA\x82\x86a'|V[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x178Wa\x178a'\x08V[`\x01\x81[`\x01\x84\x11\x15a)$W\x80\x85\x04\x81\x11\x15a)\x08Wa)\x08a'\x08V[`\x01\x84\x16\x15a)\x16W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a(\xEDV[\x93P\x93\x91PPV[_\x82a):WP`\x01a\x178V[\x81a)FWP_a\x178V[\x81`\x01\x81\x14a)\\W`\x02\x81\x14a)fWa)\x82V[`\x01\x91PPa\x178V[`\xFF\x84\x11\x15a)wWa)wa'\x08V[PP`\x01\x82\x1Ba\x178V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a)\xA5WP\x81\x81\na\x178V[a)\xB1_\x19\x84\x84a(\xE9V[\x80_\x19\x04\x82\x11\x15a)\xC4Wa)\xC4a'\x08V[\x02\x93\x92PPPV[_a\x175\x83\x83a),V\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
2202    );
2203    /// The runtime bytecode of the contract, as deployed on the network.
2204    ///
2205    /// ```text
2206    ///0x608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004612346565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d036600461246c565b6106d6565b3480156101e0575f5ffd5b506101846101ef3660046124ca565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b50610184610230366004612346565b61098a565b6101846102433660046124e3565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612588565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d3660046125cc565b610cee565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b506103646103413660046125e6565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b506101846103933660046124ca565b610d48565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad9190612617565b3480156103e0575f5ffd5b506104036103ef36600461264c565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c3660046124ca565b60056020525f908152604090205481565b348015610468575f5ffd5b50610184610477366004612663565b610e58565b348015610487575f5ffd5b506102086104963660046125e6565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc3660046124ca565b610f84565b3480156104dc575f5ffd5b506105066104eb3660046124ca565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad9291906126c1565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fc1565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d091906126f1565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611042565b6001600160a01b0384165f908152600360205260408120805485929061064190849061271c565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c90849061271c565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110e6565b6106e984611133565b6106f28561116e565b604080516001600160a01b03831660208201525f910160405160208183030381529060405290506107248185886111aa565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610cee565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a06126ad565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e66126ad565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f90815260066020908152604080832087851684529091528120556002546109419116848361123f565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fc1565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a7790849061272f565b92505081905550604051806040016040528084815260200160085442610a9d919061271c565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af090849061272f565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b446112ce565b610b4d82611374565b610b57828261137c565b5050565b5f610b6461143d565b505f516020612a1c5f395f51905f5290565b33610b8081610fc1565b610b8983611133565b610b928461116e565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc48184876111aa565b600160045f610bd288610cee565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c30929190612742565b60405180910390a25050505050565b33610c4981610fc1565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b904261271c565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611486565b6040516317d5c96560e11b815260040160405180910390fd5b5f815f0151826020015183604001518460600151604051602001610d2b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d8d57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dd557604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e109116838361123f565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e4b91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e9d5750825b90505f8267ffffffffffffffff166001148015610eb95750303b155b905081158015610ec7575080155b15610ee55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0f57845460ff60401b1916600160401b1785555b610f18866114e1565b610f206114f2565b610f286114fa565b610f33898989611600565b8315610f7957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f8c611486565b6001600160a01b038116610fb557604051631e4fbdf760e01b81525f60048201526024016105f9565b610fbe816116ab565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610ff257610ff26126ad565b036110105760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611024576110246126ad565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561109b5750833b153d17155b806110df5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff166002811115611115576111156126ad565b14610fbe5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f8082526020820152611150828261171b565b15610b57576040516306cf438f60e01b815260040160405180910390fd5b60045f61117a83610cee565b815260208101919091526040015f205460ff1615610fbe5760405162da8a5760e11b815260040160405180910390fd5b6111b38261173e565b5f6040518060600160405280602481526020016129d86024913990505f84826040516020016111e3929190612793565b60405160208183030381529060405290505f6111fe826117a5565b905061121b818561120e88611892565b611216611909565b6119d6565b6112375760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156112895750823b153d17155b806112c85760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061135457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113485f516020612a1c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113725760405163703e46dd60e11b815260040160405180910390fd5b565b610fbe611486565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113d6575060408051601f3d908101601f191682019092526113d3918101906126f1565b60015b6113fe57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612a1c5f395f51905f52811461142e57604051632a87526960e21b8152600481018290526024016105f9565b6114388383611a85565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113725760405163703e46dd60e11b815260040160405180910390fd5b336114b87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113725760405163118cdaa760e01b81523360048201526024016105f9565b6114e9611ada565b610fbe81611b23565b611372611ada565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561153f5750825b90505f8267ffffffffffffffff16600114801561155b5750303b155b905081158015611569575080155b156115875760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156115b157845460ff60401b1916600160401b1785555b435f5583156110df57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116275760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821661164e5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a300808210156116a35760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b805182515f91148015611735575081602001518360200151145b90505b92915050565b805160208201515f915f5160206129fc5f395f51905f5291159015161561176457505050565b8251602084015182600384858586098509088382830914838210848410161693505050816114385760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f6117c283611b2b565b90505f5160206129fc5f395f51905f5260035f82848509905082806117e9576117e96127af565b848209905082806117fc576117fc6127af565b82820890505f5f61180c83611d34565b925090505b80611875578480611824576118246127af565b6001870895508480611838576118386127af565b8687099250848061184b5761184b6127af565b8684099250848061185e5761185e6127af565b848408925061186c83611d34565b92509050611811565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f80825260208201528151602083015115901516156118b9575090565b6040518060400160405280835f015181526020015f5160206129fc5f395f51905f5284602001516118ea91906127c3565b611901905f5160206129fc5f395f51905f5261272f565b905292915050565b61193060405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611a795760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b611a8e82611dfc565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ad2576114388282611e5f565b610b57611ed1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661137257604051631afcd79f60e31b815260040160405180910390fd5b610f8c611ada565b5f5f611b3683611ef0565b805190915060308114611b4b57611b4b6127e2565b5f8167ffffffffffffffff811115611b6557611b6561236e565b6040519080825280601f01601f191660200182016040528015611b8f576020820181803683370190505b5090505f5b82811015611bfe57836001611ba9838661272f565b611bb3919061272f565b81518110611bc357611bc36127f6565b602001015160f81c60f81b828281518110611be057611be06127f6565b60200101906001600160f81b03191690815f1a905350600101611b94565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611c8e578381611c3a858861272f565b611c44919061271c565b81518110611c5457611c546127f6565b602001015160f81c60f81b60f81c828281518110611c7457611c746127f6565b60ff90921660209283029190910190910152600101611c26565b505f611c998261223c565b90506101005f5160206129fc5f395f51905f525f611cb7868961272f565b90505f5b81811015611d24575f886001611cd1848661272f565b611cdb919061272f565b81518110611ceb57611ceb6127f6565b016020015160f81c90508380611d0357611d036127af565b85870995508380611d1657611d166127af565b818708955050600101611cbb565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206129fc5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611dc257604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115611ddb57611dd8838261272f565b92505b8080611de957611de96127af565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611e3157604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612a1c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611e7b919061280a565b5f60405180830381855af49150503d805f8114611eb3576040519150601f19603f3d011682016040523d82523d5f602084013e611eb8565b606091505b5091509150611ec88583836122a3565b95945050505050565b34156113725760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611f30929190612793565b6040516020818303038152906040529050808460f81b604051602001611f57929190612815565b604051602081830303815290604052905080604051602001611f79919061283f565b60408051601f1981840301815290829052915061010160f01b90611fa39083908390602001612857565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff8111156120135761201361236e565b6040519080825280601f01601f19166020018201604052801561203d576020820181803683370190505b5090505f8260405160200161205491815260200190565b60408051601f1981840301815291905290505f5b81518110156120be57818181518110612083576120836127f6565b602001015160f81c60f81b8382815181106120a0576120a06127f6565b60200101906001600160f81b03191690815f1a905350600101612068565b505f846040516020016120d391815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612165575f83828151811061210c5761210c6127f6565b602001015160f81c60f81b838381518110612129576121296127f6565b602001015160f81c60f81b189050888160405160200161214a92919061287b565b60408051601f198184030181529190529850506001016120f1565b5086888760405160200161217b9392919061289f565b604051602081830303815290604052965086805190602001209350836040516020016121a991815260200190565b60408051601f1981840301815291905291505f5b6121ca8a60ff8d1661272f565b81101561222b578281815181106121e3576121e36127f6565b01602001516001600160f81b031916846121fd838d61271c565b8151811061220d5761220d6127f6565b60200101906001600160f81b03191690815f1a9053506001016121bd565b50919b9a5050505050505050505050565b5f80805b835181101561229c5783818151811061225b5761225b6127f6565b602002602001015160ff1681600861227391906128d2565b61227e9060026129cc565b61228891906128d2565b612292908361271c565b9150600101612240565b5092915050565b6060826122b8576122b382612302565b6122fb565b81511580156122cf57506001600160a01b0384163b155b156122f857604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b8051156123125780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114612341575f5ffd5b919050565b5f5f60408385031215612357575f5ffd5b6123608361232b565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156123a5576123a561236e565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156123d4576123d461236e565b604052919050565b5f608082840312156123ec575f5ffd5b6040516080810167ffffffffffffffff8111828210171561240f5761240f61236e565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561244d575f5ffd5b612455612382565b823581526020928301359281019290925250919050565b5f5f5f5f6101208587031215612480575f5ffd5b61248a86866123dc565b9350612499866080870161243d565b92506124a88660c0870161243d565b915061010085013561ffff811681146124bf575f5ffd5b939692955090935050565b5f602082840312156124da575f5ffd5b6117358261232b565b5f5f604083850312156124f4575f5ffd5b6124fd8361232b565b9150602083013567ffffffffffffffff811115612518575f5ffd5b8301601f81018513612528575f5ffd5b803567ffffffffffffffff8111156125425761254261236e565b612555601f8201601f19166020016123ab565b818152866020838501011115612569575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f610100848603121561259b575f5ffd5b6125a585856123dc565b92506125b4856080860161243d565b91506125c38560c0860161243d565b90509250925092565b5f608082840312156125dc575f5ffd5b61173583836123dc565b5f5f604083850312156125f7575f5ffd5b6126008361232b565b915061260e6020840161232b565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561265c575f5ffd5b5035919050565b5f5f5f5f60808587031215612676575f5ffd5b61267f8561232b565b935061268d6020860161232b565b9250604085013591506126a26060860161232b565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106126e457634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215612701575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561173857611738612708565b8181038181111561173857611738612708565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c081016122fb565b5f81518060208401855e5f93019283525090919050565b5f6127a76127a1838661277c565b8461277c565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f826127dd57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611735828461277c565b5f612820828561277c565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61284a828461277c565b5f81526001019392505050565b5f612862828561277c565b6001600160f01b03199390931683525050600201919050565b5f612886828561277c565b6001600160f81b03199390931683525050600101919050565b5f6128aa828661277c565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b808202811582820484141761173857611738612708565b6001815b60018411156129245780850481111561290857612908612708565b600184161561291657908102905b60019390931c9280026128ed565b935093915050565b5f8261293a57506001611738565b8161294657505f611738565b816001811461295c576002811461296657612982565b6001915050611738565b60ff84111561297757612977612708565b50506001821b611738565b5060208310610133831016604e8410600b84101617156129a5575081810a611738565b6129b15f1984846128e9565b805f19048211156129c4576129c4612708565b029392505050565b5f611735838361292c56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
2207    /// ```
2208    #[rustfmt::skip]
2209    #[allow(clippy::all)]
2210    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2211        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80c\x9B0\xA5\xE6\x11a\0\xCDW\x80c\xB5p\x0Eh\x11a\0\x87W\x80c\xC6H\x14\xDD\x11a\0bW\x80c\xC6H\x14\xDD\x14a\x04|W\x80c\xF2\xFD\xE3\x8B\x14a\x04\xB2W\x80c\xFAR\xC7\xD8\x14a\x04\xD1W\x80c\xFC\x0CTj\x14a\x05\x14W__\xFD[\x80c\xB5p\x0Eh\x14a\x04\x13W\x80c\xB5\xEC\xB3D\x14a\x042W\x80c\xBE 0\x94\x14a\x04]W__\xFD[\x80c\x9B0\xA5\xE6\x14a\x02\xF3W\x80c\x9E\x9A\x8F1\x14a\x03\x12W\x80c\xA2\xD7\x8D\xD5\x14a\x03'W\x80c\xA3\x06j\xAB\x14a\x03yW\x80c\xAD<\xB1\xCC\x14a\x03\x98W\x80c\xB3\xE6\xEB\xD5\x14a\x03\xD5W__\xFD[\x80cO\x1E\xF2\x86\x11a\x01\x1EW\x80cO\x1E\xF2\x86\x14a\x025W\x80cR\xD1\x90-\x14a\x02HW\x80cUD\xC2\xF1\x14a\x02\\W\x80cj\x91\x1C\xCF\x14a\x02{W\x80cqP\x18\xA6\x14a\x02\x8FW\x80c\x8D\xA5\xCB[\x14a\x02\xA3W__\xFD[\x80c\x02n@+\x14a\x01eW\x80c\r\x8En,\x14a\x01\x86W\x80c\x13\xB9\x05z\x14a\x01\xB6W\x80c!@\xFE\xCD\x14a\x01\xD5W\x80c>\x9D\xF9\xB5\x14a\x01\xF4W\x80cM\x99\xDD\x16\x14a\x02\x16W[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a#FV[a\x053V[\0[4\x80\x15a\x01\x91W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC1W__\xFD[Pa\x01\x84a\x01\xD06`\x04a$lV[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a$\xCAV[a\x08iV[4\x80\x15a\x01\xFFW__\xFD[Pa\x02\x08_T\x81V[`@Q\x90\x81R` \x01a\x01\xADV[4\x80\x15a\x02!W__\xFD[Pa\x01\x84a\x0206`\x04a#FV[a\t\x8AV[a\x01\x84a\x02C6`\x04a$\xE3V[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a%\x88V[a\x0BvV[4\x80\x15a\x02\x86W__\xFD[Pa\x01\x84a\x0C?V[4\x80\x15a\x02\x9AW__\xFD[Pa\x01\x84a\x0C\xCDV[4\x80\x15a\x02\xAEW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xADV[4\x80\x15a\x02\xFEW__\xFD[Pa\x02\x08a\x03\r6`\x04a%\xCCV[a\x0C\xEEV[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a%\xE6V[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x01\xADV[4\x80\x15a\x03\x84W__\xFD[Pa\x01\x84a\x03\x936`\x04a$\xCAV[a\rHV[4\x80\x15a\x03\xA3W__\xFD[Pa\x03\xC8`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xAD\x91\x90a&\x17V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&LV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01\xADV[4\x80\x15a\x04\x1EW__\xFD[P`\x01Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04=W__\xFD[Pa\x02\x08a\x04L6`\x04a$\xCAV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a&cV[a\x0EXV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a%\xE6V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x01\x84a\x04\xCC6`\x04a$\xCAV[a\x0F\x84V[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a$\xCAV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a&\xC1V[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xC1V[3_\x82\x90\x03a\x05^W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xACW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xD0\x91\x90a&\xF1V[\x90P\x82\x81\x10\x15a\x06\x02W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x06\x1A\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a\x10BV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\x1CV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x06|\x90\x84\x90a'\x1CV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\x06\xC8\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[3a\x06\xE0\x81a\x10\xE6V[a\x06\xE9\x84a\x113V[a\x06\xF2\x85a\x11nV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x07$\x81\x85\x88a\x11\xAAV[a'\x10\x83a\xFF\xFF\x16\x11\x15a\x07KW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x07Y\x89a\x0C\xEEV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x07\xA0Wa\x07\xA0a&\xADV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x07\xE6Wa\x07\xE6a&\xADV[\x02\x17\x90UPP`@\x80Q\x88Q\x81R` \x80\x8A\x01Q\x81\x83\x01R\x89\x83\x01Q\x82\x84\x01R``\x80\x8B\x01Q\x90\x83\x01R\x88Q`\x80\x83\x01R\x88\x01Q`\xA0\x82\x01Ra\xFF\xFF\x86\x16`\xC0\x82\x01R\x90Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x92P\x7F\xF6\xE85\x9CWR\x0BF\x964sk\xFC;\xB7\xEC\\\xBD\x1A\x0B\xD2\x8B\x10\xA8'W\x93\xBBs\x0By\x7F\x91\x81\x90\x03`\xE0\x01\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x08\xA3W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x08\xC4W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\t\x0CW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x87\x85\x16\x84R\x90\x91R\x81 U`\x02Ta\tA\x91\x16\x84\x83a\x12?V[\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\t|\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[a\t\x93\x82a\x0F\xC1V[3_\x82\x90\x03a\t\xB5W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\t\xF8W`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\nAW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\nw\x90\x84\x90a'/V[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\x1CV[\x90R`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x81\x81R`\x07` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x85Q\x81U\x94\x81\x01Q`\x01\x90\x95\x01\x94\x90\x94U\x90\x81R`\x03\x90\x92R\x81 \x80T\x85\x92\x90a\n\xF0\x90\x84\x90a'/V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7FM\x10\xBD\x04\x97u\xC7{\xD7\xF2U\x19Z\xFB\xA5\x08\x80(\xEC\xB3\xC7\xC2w\xD3\x93\xCC\xFFy4\xF2\xF9,\x85`@Qa\x06\xC8\x91\x81R` \x01\x90V[a\x0BDa\x12\xCEV[a\x0BM\x82a\x13tV[a\x0BW\x82\x82a\x13|V[PPV[_a\x0Bda\x14=V[P_Q` a*\x1C_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xC1V[a\x0B\x89\x83a\x113V[a\x0B\x92\x84a\x11nV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0B\xC4\x81\x84\x87a\x11\xAAV[`\x01`\x04_a\x0B\xD2\x88a\x0C\xEEV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x80\xD8\xA4\xA1f3(\xA9\x98\xD4U[\xA2\x1D\x8B\xBAn\xF1Wj\x8C^\x9D'\xF9\xC5E\xF1\xA3\xD5+\x1D\x86\x86`@Qa\x0C0\x92\x91\x90a'BV[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xC1V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\x1CV[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x94\x90\x94U`\x03\x90R\x82\x81 \x81\x90U\x91Q\x90\x91\x7F\xFB$0ST\xC8wb\xD5WHz\xE4\xA5d\xE8\xD0>\xCB\xB9\xA9}\xD8\xAF\xFF\x8E\x1Fo\xCA\xF0\xDD\x16\x91\xA2PV[a\x0C\xD5a\x14\x86V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r+\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a\r\x8DW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\r\xD5W`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x86\x85\x16\x84R\x90\x91R\x81 \x81\x81U`\x01\x01U`\x02Ta\x0E\x10\x91\x16\x83\x83a\x12?V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x82`@Qa\x0EK\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x0E\x9DWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xB9WP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xC7WP\x80\x15[\x15a\x0E\xE5W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0F\x0FW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\x18\x86a\x14\xE1V[a\x0F a\x14\xF2V[a\x0F(a\x14\xFAV[a\x0F3\x89\x89\x89a\x16\0V[\x83\x15a\x0FyW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x0F\x8Ca\x14\x86V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xB5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xBE\x81a\x16\xABV[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xF2Wa\x0F\xF2a&\xADV[\x03a\x10\x10W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10$Wa\x10$a&\xADV[\x03a\x0BWW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a\x10\x9BWP\x83;\x15=\x17\x15[\x80a\x10\xDFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\x05\xF9V[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x11\x15Wa\x11\x15a&\xADV[\x14a\x0F\xBEW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11P\x82\x82a\x17\x1BV[\x15a\x0BWW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11z\x83a\x0C\xEEV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xBEW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x82a\x17>V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a)\xD8`$\x919\x90P_\x84\x82`@Q` \x01a\x11\xE3\x92\x91\x90a'\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x11\xFE\x82a\x17\xA5V[\x90Pa\x12\x1B\x81\x85a\x12\x0E\x88a\x18\x92V[a\x12\x16a\x19\tV[a\x19\xD6V[a\x127W`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a\x12\x89WP\x82;\x15=\x17\x15[\x80a\x12\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\x05\xF9V[PPPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x13TWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x13H_Q` a*\x1C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13rW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0F\xBEa\x14\x86V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x13\xD6WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x13\xD3\x91\x81\x01\x90a&\xF1V[`\x01[a\x13\xFEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x1C_9_Q\x90_R\x81\x14a\x14.W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x148\x83\x83a\x1A\x85V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x13rW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x14\xB8\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x13rW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[a\x14\xE9a\x1A\xDAV[a\x0F\xBE\x81a\x1B#V[a\x13ra\x1A\xDAV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x15?WP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x15[WP0;\x15[\x90P\x81\x15\x80\x15a\x15iWP\x80\x15[\x15a\x15\x87W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x15\xB1W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xDFW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x16'W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x16NW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a\x16\xA3W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x80Q\x82Q_\x91\x14\x80\x15a\x175WP\x81` \x01Q\x83` \x01Q\x14[\x90P[\x92\x91PPV[\x80Q` \x82\x01Q_\x91_Q` a)\xFC_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x17dWPPPV[\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\x148W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x17\xC2\x83a\x1B+V[\x90P_Q` a)\xFC_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x17\xE9Wa\x17\xE9a'\xAFV[\x84\x82\t\x90P\x82\x80a\x17\xFCWa\x17\xFCa'\xAFV[\x82\x82\x08\x90P__a\x18\x0C\x83a\x1D4V[\x92P\x90P[\x80a\x18uW\x84\x80a\x18$Wa\x18$a'\xAFV[`\x01\x87\x08\x95P\x84\x80a\x188Wa\x188a'\xAFV[\x86\x87\t\x92P\x84\x80a\x18KWa\x18Ka'\xAFV[\x86\x84\t\x92P\x84\x80a\x18^Wa\x18^a'\xAFV[\x84\x84\x08\x92Pa\x18l\x83a\x1D4V[\x92P\x90Pa\x18\x11V[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x18\xB9WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a)\xFC_9_Q\x90_R\x84` \x01Qa\x18\xEA\x91\x90a'\xC3V[a\x19\x01\x90_Q` a)\xFC_9_Q\x90_Ra'/V[\x90R\x92\x91PPV[a\x190`@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\x1AyW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a\x1A\x8E\x82a\x1D\xFCV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1A\xD2Wa\x148\x82\x82a\x1E_V[a\x0BWa\x1E\xD1V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x13rW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\x8Ca\x1A\xDAV[__a\x1B6\x83a\x1E\xF0V[\x80Q\x90\x91P`0\x81\x14a\x1BKWa\x1BKa'\xE2V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1BeWa\x1Bea#nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1B\x8FW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1B\xFEW\x83`\x01a\x1B\xA9\x83\x86a'/V[a\x1B\xB3\x91\x90a'/V[\x81Q\x81\x10a\x1B\xC3Wa\x1B\xC3a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1B\xE0Wa\x1B\xE0a'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1B\x94V[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a\x1C\x8EW\x83\x81a\x1C:\x85\x88a'/V[a\x1CD\x91\x90a'\x1CV[\x81Q\x81\x10a\x1CTWa\x1CTa'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1CtWa\x1Cta'\xF6V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C&V[P_a\x1C\x99\x82a\"<V[\x90Pa\x01\0_Q` a)\xFC_9_Q\x90_R_a\x1C\xB7\x86\x89a'/V[\x90P_[\x81\x81\x10\x15a\x1D$W_\x88`\x01a\x1C\xD1\x84\x86a'/V[a\x1C\xDB\x91\x90a'/V[\x81Q\x81\x10a\x1C\xEBWa\x1C\xEBa'\xF6V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1D\x03Wa\x1D\x03a'\xAFV[\x85\x87\t\x95P\x83\x80a\x1D\x16Wa\x1D\x16a'\xAFV[\x81\x87\x08\x95PP`\x01\x01a\x1C\xBBV[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` a)\xFC_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a\x1D\xC2W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a\x1D\xDBWa\x1D\xD8\x83\x82a'/V[\x92P[\x80\x80a\x1D\xE9Wa\x1D\xE9a'\xAFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\x1C_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1E{\x91\x90a(\nV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1E\xB3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\xB8V[``\x91P[P\x91P\x91Pa\x1E\xC8\x85\x83\x83a\"\xA3V[\x95\x94PPPPPV[4\x15a\x13rW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a\x1F0\x92\x91\x90a'\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a\x1FW\x92\x91\x90a(\x15V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a\x1Fy\x91\x90a(?V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a\x1F\xA3\x90\x83\x90\x83\x90` \x01a(WV[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x13Wa \x13a#nV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a =W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a T\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a \xBEW\x81\x81\x81Q\x81\x10a \x83Wa \x83a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a \xA0Wa \xA0a'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a hV[P_\x84`@Q` \x01a \xD3\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a!eW_\x83\x82\x81Q\x81\x10a!\x0CWa!\x0Ca'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!)Wa!)a'\xF6V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!J\x92\x91\x90a({V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a \xF1V[P\x86\x88\x87`@Q` \x01a!{\x93\x92\x91\x90a(\x9FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a!\xA9\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a!\xCA\x8A`\xFF\x8D\x16a'/V[\x81\x10\x15a\"+W\x82\x81\x81Q\x81\x10a!\xE3Wa!\xE3a'\xF6V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a!\xFD\x83\x8Da'\x1CV[\x81Q\x81\x10a\"\rWa\"\ra'\xF6V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a!\xBDV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\"\x9CW\x83\x81\x81Q\x81\x10a\"[Wa\"[a'\xF6V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a\"s\x91\x90a(\xD2V[a\"~\x90`\x02a)\xCCV[a\"\x88\x91\x90a(\xD2V[a\"\x92\x90\x83a'\x1CV[\x91P`\x01\x01a\"@V[P\x92\x91PPV[``\x82a\"\xB8Wa\"\xB3\x82a#\x02V[a\"\xFBV[\x81Q\x15\x80\x15a\"\xCFWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\"\xF8W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x05\xF9V[P\x80[\x93\x92PPPV[\x80Q\x15a#\x12W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a#AW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a#WW__\xFD[a#`\x83a#+V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xA5Wa#\xA5a#nV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xD4Wa#\xD4a#nV[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a#\xECW__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a$\x0FWa$\x0Fa#nV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15a$MW__\xFD[a$Ua#\x82V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a$\x80W__\xFD[a$\x8A\x86\x86a#\xDCV[\x93Pa$\x99\x86`\x80\x87\x01a$=V[\x92Pa$\xA8\x86`\xC0\x87\x01a$=V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a$\xBFW__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a$\xDAW__\xFD[a\x175\x82a#+V[__`@\x83\x85\x03\x12\x15a$\xF4W__\xFD[a$\xFD\x83a#+V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%(W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%BWa%Ba#nV[a%U`\x1F\x82\x01`\x1F\x19\x16` \x01a#\xABV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%iW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a%\x9BW__\xFD[a%\xA5\x85\x85a#\xDCV[\x92Pa%\xB4\x85`\x80\x86\x01a$=V[\x91Pa%\xC3\x85`\xC0\x86\x01a$=V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a%\xDCW__\xFD[a\x175\x83\x83a#\xDCV[__`@\x83\x85\x03\x12\x15a%\xF7W__\xFD[a&\0\x83a#+V[\x91Pa&\x0E` \x84\x01a#+V[\x90P\x92P\x92\x90PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a&\\W__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a&vW__\xFD[a&\x7F\x85a#+V[\x93Pa&\x8D` \x86\x01a#+V[\x92P`@\x85\x015\x91Pa&\xA2``\x86\x01a#+V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a&\xE4WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a'\x01W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x178Wa\x178a'\x08V[\x81\x81\x03\x81\x81\x11\x15a\x178Wa\x178a'\x08V[\x82Q\x81R` \x80\x84\x01Q\x81\x83\x01R`@\x80\x85\x01Q\x90\x83\x01R``\x80\x85\x01Q\x90\x83\x01R\x82Q`\x80\x83\x01R\x82\x01Q`\xA0\x82\x01R`\xC0\x81\x01a\"\xFBV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a'\xA7a'\xA1\x83\x86a'|V[\x84a'|V[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a'\xDDWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_a\x175\x82\x84a'|V[_a( \x82\x85a'|V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(J\x82\x84a'|V[_\x81R`\x01\x01\x93\x92PPPV[_a(b\x82\x85a'|V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a(\x86\x82\x85a'|V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a(\xAA\x82\x86a'|V[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x178Wa\x178a'\x08V[`\x01\x81[`\x01\x84\x11\x15a)$W\x80\x85\x04\x81\x11\x15a)\x08Wa)\x08a'\x08V[`\x01\x84\x16\x15a)\x16W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a(\xEDV[\x93P\x93\x91PPV[_\x82a):WP`\x01a\x178V[\x81a)FWP_a\x178V[\x81`\x01\x81\x14a)\\W`\x02\x81\x14a)fWa)\x82V[`\x01\x91PPa\x178V[`\xFF\x84\x11\x15a)wWa)wa'\x08V[PP`\x01\x82\x1Ba\x178V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a)\xA5WP\x81\x81\na\x178V[a)\xB1_\x19\x84\x84a(\xE9V[\x80_\x19\x04\x82\x11\x15a)\xC4Wa)\xC4a'\x08V[\x02\x93\x92PPPV[_a\x175\x83\x83a),V\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
2212    );
2213    #[derive(serde::Serialize, serde::Deserialize)]
2214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2216    #[derive(Clone)]
2217    pub struct ValidatorStatus(u8);
2218    const _: () = {
2219        use alloy::sol_types as alloy_sol_types;
2220        #[automatically_derived]
2221        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
2222            #[inline]
2223            fn stv_to_tokens(
2224                &self,
2225            ) -> <alloy::sol_types::sol_data::Uint<
2226                8,
2227            > as alloy_sol_types::SolType>::Token<'_> {
2228                alloy_sol_types::private::SolTypeValue::<
2229                    alloy::sol_types::sol_data::Uint<8>,
2230                >::stv_to_tokens(self)
2231            }
2232            #[inline]
2233            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2234                <alloy::sol_types::sol_data::Uint<
2235                    8,
2236                > as alloy_sol_types::SolType>::tokenize(self)
2237                    .0
2238            }
2239            #[inline]
2240            fn stv_abi_encode_packed_to(
2241                &self,
2242                out: &mut alloy_sol_types::private::Vec<u8>,
2243            ) {
2244                <alloy::sol_types::sol_data::Uint<
2245                    8,
2246                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
2247            }
2248            #[inline]
2249            fn stv_abi_packed_encoded_size(&self) -> usize {
2250                <alloy::sol_types::sol_data::Uint<
2251                    8,
2252                > as alloy_sol_types::SolType>::abi_encoded_size(self)
2253            }
2254        }
2255        impl ValidatorStatus {
2256            /// The Solidity type name.
2257            pub const NAME: &'static str = stringify!(@ name);
2258            /// Convert from the underlying value type.
2259            #[inline]
2260            pub const fn from_underlying(value: u8) -> Self {
2261                Self(value)
2262            }
2263            /// Return the underlying value.
2264            #[inline]
2265            pub const fn into_underlying(self) -> u8 {
2266                self.0
2267            }
2268            /// Return the single encoding of this value, delegating to the
2269            /// underlying type.
2270            #[inline]
2271            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
2272                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
2273            }
2274            /// Return the packed encoding of this value, delegating to the
2275            /// underlying type.
2276            #[inline]
2277            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
2278                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
2279            }
2280        }
2281        #[automatically_derived]
2282        impl From<u8> for ValidatorStatus {
2283            fn from(value: u8) -> Self {
2284                Self::from_underlying(value)
2285            }
2286        }
2287        #[automatically_derived]
2288        impl From<ValidatorStatus> for u8 {
2289            fn from(value: ValidatorStatus) -> Self {
2290                value.into_underlying()
2291            }
2292        }
2293        #[automatically_derived]
2294        impl alloy_sol_types::SolType for ValidatorStatus {
2295            type RustType = u8;
2296            type Token<'a> = <alloy::sol_types::sol_data::Uint<
2297                8,
2298            > as alloy_sol_types::SolType>::Token<'a>;
2299            const SOL_NAME: &'static str = Self::NAME;
2300            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2301                8,
2302            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2303            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2304                8,
2305            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2306            #[inline]
2307            fn valid_token(token: &Self::Token<'_>) -> bool {
2308                Self::type_check(token).is_ok()
2309            }
2310            #[inline]
2311            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
2312                <alloy::sol_types::sol_data::Uint<
2313                    8,
2314                > as alloy_sol_types::SolType>::type_check(token)
2315            }
2316            #[inline]
2317            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2318                <alloy::sol_types::sol_data::Uint<
2319                    8,
2320                > as alloy_sol_types::SolType>::detokenize(token)
2321            }
2322        }
2323        #[automatically_derived]
2324        impl alloy_sol_types::EventTopic for ValidatorStatus {
2325            #[inline]
2326            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2327                <alloy::sol_types::sol_data::Uint<
2328                    8,
2329                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
2330            }
2331            #[inline]
2332            fn encode_topic_preimage(
2333                rust: &Self::RustType,
2334                out: &mut alloy_sol_types::private::Vec<u8>,
2335            ) {
2336                <alloy::sol_types::sol_data::Uint<
2337                    8,
2338                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
2339            }
2340            #[inline]
2341            fn encode_topic(
2342                rust: &Self::RustType,
2343            ) -> alloy_sol_types::abi::token::WordToken {
2344                <alloy::sol_types::sol_data::Uint<
2345                    8,
2346                > as alloy_sol_types::EventTopic>::encode_topic(rust)
2347            }
2348        }
2349    };
2350    #[derive(serde::Serialize, serde::Deserialize)]
2351    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2352    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
2353```solidity
2354error AddressEmptyCode(address target);
2355```*/
2356    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2357    #[derive(Clone)]
2358    pub struct AddressEmptyCode {
2359        #[allow(missing_docs)]
2360        pub target: alloy::sol_types::private::Address,
2361    }
2362    #[allow(
2363        non_camel_case_types,
2364        non_snake_case,
2365        clippy::pub_underscore_fields,
2366        clippy::style
2367    )]
2368    const _: () = {
2369        use alloy::sol_types as alloy_sol_types;
2370        #[doc(hidden)]
2371        #[allow(dead_code)]
2372        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2373        #[doc(hidden)]
2374        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2375        #[cfg(test)]
2376        #[allow(dead_code, unreachable_patterns)]
2377        fn _type_assertion(
2378            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2379        ) {
2380            match _t {
2381                alloy_sol_types::private::AssertTypeEq::<
2382                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2383                >(_) => {}
2384            }
2385        }
2386        #[automatically_derived]
2387        #[doc(hidden)]
2388        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
2389            fn from(value: AddressEmptyCode) -> Self {
2390                (value.target,)
2391            }
2392        }
2393        #[automatically_derived]
2394        #[doc(hidden)]
2395        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
2396            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2397                Self { target: tuple.0 }
2398            }
2399        }
2400        #[automatically_derived]
2401        impl alloy_sol_types::SolError for AddressEmptyCode {
2402            type Parameters<'a> = UnderlyingSolTuple<'a>;
2403            type Token<'a> = <Self::Parameters<
2404                'a,
2405            > as alloy_sol_types::SolType>::Token<'a>;
2406            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
2407            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
2408            #[inline]
2409            fn new<'a>(
2410                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2411            ) -> Self {
2412                tuple.into()
2413            }
2414            #[inline]
2415            fn tokenize(&self) -> Self::Token<'_> {
2416                (
2417                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2418                        &self.target,
2419                    ),
2420                )
2421            }
2422            #[inline]
2423            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2424                <Self::Parameters<
2425                    '_,
2426                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2427                    .map(Self::new)
2428            }
2429        }
2430    };
2431    #[derive(serde::Serialize, serde::Deserialize)]
2432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2433    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
2434```solidity
2435error BLSSigVerificationFailed();
2436```*/
2437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2438    #[derive(Clone)]
2439    pub struct BLSSigVerificationFailed;
2440    #[allow(
2441        non_camel_case_types,
2442        non_snake_case,
2443        clippy::pub_underscore_fields,
2444        clippy::style
2445    )]
2446    const _: () = {
2447        use alloy::sol_types as alloy_sol_types;
2448        #[doc(hidden)]
2449        #[allow(dead_code)]
2450        type UnderlyingSolTuple<'a> = ();
2451        #[doc(hidden)]
2452        type UnderlyingRustTuple<'a> = ();
2453        #[cfg(test)]
2454        #[allow(dead_code, unreachable_patterns)]
2455        fn _type_assertion(
2456            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2457        ) {
2458            match _t {
2459                alloy_sol_types::private::AssertTypeEq::<
2460                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2461                >(_) => {}
2462            }
2463        }
2464        #[automatically_derived]
2465        #[doc(hidden)]
2466        impl ::core::convert::From<BLSSigVerificationFailed>
2467        for UnderlyingRustTuple<'_> {
2468            fn from(value: BLSSigVerificationFailed) -> Self {
2469                ()
2470            }
2471        }
2472        #[automatically_derived]
2473        #[doc(hidden)]
2474        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2475        for BLSSigVerificationFailed {
2476            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2477                Self
2478            }
2479        }
2480        #[automatically_derived]
2481        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
2482            type Parameters<'a> = UnderlyingSolTuple<'a>;
2483            type Token<'a> = <Self::Parameters<
2484                'a,
2485            > as alloy_sol_types::SolType>::Token<'a>;
2486            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
2487            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
2488            #[inline]
2489            fn new<'a>(
2490                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2491            ) -> Self {
2492                tuple.into()
2493            }
2494            #[inline]
2495            fn tokenize(&self) -> Self::Token<'_> {
2496                ()
2497            }
2498            #[inline]
2499            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2500                <Self::Parameters<
2501                    '_,
2502                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2503                    .map(Self::new)
2504            }
2505        }
2506    };
2507    #[derive(serde::Serialize, serde::Deserialize)]
2508    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2509    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
2510```solidity
2511error BN254PairingProdFailed();
2512```*/
2513    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2514    #[derive(Clone)]
2515    pub struct BN254PairingProdFailed;
2516    #[allow(
2517        non_camel_case_types,
2518        non_snake_case,
2519        clippy::pub_underscore_fields,
2520        clippy::style
2521    )]
2522    const _: () = {
2523        use alloy::sol_types as alloy_sol_types;
2524        #[doc(hidden)]
2525        #[allow(dead_code)]
2526        type UnderlyingSolTuple<'a> = ();
2527        #[doc(hidden)]
2528        type UnderlyingRustTuple<'a> = ();
2529        #[cfg(test)]
2530        #[allow(dead_code, unreachable_patterns)]
2531        fn _type_assertion(
2532            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2533        ) {
2534            match _t {
2535                alloy_sol_types::private::AssertTypeEq::<
2536                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2537                >(_) => {}
2538            }
2539        }
2540        #[automatically_derived]
2541        #[doc(hidden)]
2542        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
2543            fn from(value: BN254PairingProdFailed) -> Self {
2544                ()
2545            }
2546        }
2547        #[automatically_derived]
2548        #[doc(hidden)]
2549        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
2550            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2551                Self
2552            }
2553        }
2554        #[automatically_derived]
2555        impl alloy_sol_types::SolError for BN254PairingProdFailed {
2556            type Parameters<'a> = UnderlyingSolTuple<'a>;
2557            type Token<'a> = <Self::Parameters<
2558                'a,
2559            > as alloy_sol_types::SolType>::Token<'a>;
2560            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
2561            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
2562            #[inline]
2563            fn new<'a>(
2564                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2565            ) -> Self {
2566                tuple.into()
2567            }
2568            #[inline]
2569            fn tokenize(&self) -> Self::Token<'_> {
2570                ()
2571            }
2572            #[inline]
2573            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2574                <Self::Parameters<
2575                    '_,
2576                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2577                    .map(Self::new)
2578            }
2579        }
2580    };
2581    #[derive(serde::Serialize, serde::Deserialize)]
2582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2583    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
2584```solidity
2585error BlsKeyAlreadyUsed();
2586```*/
2587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2588    #[derive(Clone)]
2589    pub struct BlsKeyAlreadyUsed;
2590    #[allow(
2591        non_camel_case_types,
2592        non_snake_case,
2593        clippy::pub_underscore_fields,
2594        clippy::style
2595    )]
2596    const _: () = {
2597        use alloy::sol_types as alloy_sol_types;
2598        #[doc(hidden)]
2599        #[allow(dead_code)]
2600        type UnderlyingSolTuple<'a> = ();
2601        #[doc(hidden)]
2602        type UnderlyingRustTuple<'a> = ();
2603        #[cfg(test)]
2604        #[allow(dead_code, unreachable_patterns)]
2605        fn _type_assertion(
2606            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2607        ) {
2608            match _t {
2609                alloy_sol_types::private::AssertTypeEq::<
2610                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2611                >(_) => {}
2612            }
2613        }
2614        #[automatically_derived]
2615        #[doc(hidden)]
2616        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
2617            fn from(value: BlsKeyAlreadyUsed) -> Self {
2618                ()
2619            }
2620        }
2621        #[automatically_derived]
2622        #[doc(hidden)]
2623        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
2624            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2625                Self
2626            }
2627        }
2628        #[automatically_derived]
2629        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
2630            type Parameters<'a> = UnderlyingSolTuple<'a>;
2631            type Token<'a> = <Self::Parameters<
2632                'a,
2633            > as alloy_sol_types::SolType>::Token<'a>;
2634            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
2635            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
2636            #[inline]
2637            fn new<'a>(
2638                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2639            ) -> Self {
2640                tuple.into()
2641            }
2642            #[inline]
2643            fn tokenize(&self) -> Self::Token<'_> {
2644                ()
2645            }
2646            #[inline]
2647            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2648                <Self::Parameters<
2649                    '_,
2650                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2651                    .map(Self::new)
2652            }
2653        }
2654    };
2655    #[derive(serde::Serialize, serde::Deserialize)]
2656    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2657    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
2658```solidity
2659error ERC1967InvalidImplementation(address implementation);
2660```*/
2661    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2662    #[derive(Clone)]
2663    pub struct ERC1967InvalidImplementation {
2664        #[allow(missing_docs)]
2665        pub implementation: alloy::sol_types::private::Address,
2666    }
2667    #[allow(
2668        non_camel_case_types,
2669        non_snake_case,
2670        clippy::pub_underscore_fields,
2671        clippy::style
2672    )]
2673    const _: () = {
2674        use alloy::sol_types as alloy_sol_types;
2675        #[doc(hidden)]
2676        #[allow(dead_code)]
2677        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2678        #[doc(hidden)]
2679        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2680        #[cfg(test)]
2681        #[allow(dead_code, unreachable_patterns)]
2682        fn _type_assertion(
2683            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2684        ) {
2685            match _t {
2686                alloy_sol_types::private::AssertTypeEq::<
2687                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2688                >(_) => {}
2689            }
2690        }
2691        #[automatically_derived]
2692        #[doc(hidden)]
2693        impl ::core::convert::From<ERC1967InvalidImplementation>
2694        for UnderlyingRustTuple<'_> {
2695            fn from(value: ERC1967InvalidImplementation) -> Self {
2696                (value.implementation,)
2697            }
2698        }
2699        #[automatically_derived]
2700        #[doc(hidden)]
2701        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2702        for ERC1967InvalidImplementation {
2703            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2704                Self { implementation: tuple.0 }
2705            }
2706        }
2707        #[automatically_derived]
2708        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
2709            type Parameters<'a> = UnderlyingSolTuple<'a>;
2710            type Token<'a> = <Self::Parameters<
2711                'a,
2712            > as alloy_sol_types::SolType>::Token<'a>;
2713            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
2714            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
2715            #[inline]
2716            fn new<'a>(
2717                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2718            ) -> Self {
2719                tuple.into()
2720            }
2721            #[inline]
2722            fn tokenize(&self) -> Self::Token<'_> {
2723                (
2724                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2725                        &self.implementation,
2726                    ),
2727                )
2728            }
2729            #[inline]
2730            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2731                <Self::Parameters<
2732                    '_,
2733                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2734                    .map(Self::new)
2735            }
2736        }
2737    };
2738    #[derive(serde::Serialize, serde::Deserialize)]
2739    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2740    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
2741```solidity
2742error ERC1967NonPayable();
2743```*/
2744    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2745    #[derive(Clone)]
2746    pub struct ERC1967NonPayable;
2747    #[allow(
2748        non_camel_case_types,
2749        non_snake_case,
2750        clippy::pub_underscore_fields,
2751        clippy::style
2752    )]
2753    const _: () = {
2754        use alloy::sol_types as alloy_sol_types;
2755        #[doc(hidden)]
2756        #[allow(dead_code)]
2757        type UnderlyingSolTuple<'a> = ();
2758        #[doc(hidden)]
2759        type UnderlyingRustTuple<'a> = ();
2760        #[cfg(test)]
2761        #[allow(dead_code, unreachable_patterns)]
2762        fn _type_assertion(
2763            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2764        ) {
2765            match _t {
2766                alloy_sol_types::private::AssertTypeEq::<
2767                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2768                >(_) => {}
2769            }
2770        }
2771        #[automatically_derived]
2772        #[doc(hidden)]
2773        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
2774            fn from(value: ERC1967NonPayable) -> Self {
2775                ()
2776            }
2777        }
2778        #[automatically_derived]
2779        #[doc(hidden)]
2780        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
2781            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2782                Self
2783            }
2784        }
2785        #[automatically_derived]
2786        impl alloy_sol_types::SolError for ERC1967NonPayable {
2787            type Parameters<'a> = UnderlyingSolTuple<'a>;
2788            type Token<'a> = <Self::Parameters<
2789                'a,
2790            > as alloy_sol_types::SolType>::Token<'a>;
2791            const SIGNATURE: &'static str = "ERC1967NonPayable()";
2792            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
2793            #[inline]
2794            fn new<'a>(
2795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2796            ) -> Self {
2797                tuple.into()
2798            }
2799            #[inline]
2800            fn tokenize(&self) -> Self::Token<'_> {
2801                ()
2802            }
2803            #[inline]
2804            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2805                <Self::Parameters<
2806                    '_,
2807                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2808                    .map(Self::new)
2809            }
2810        }
2811    };
2812    #[derive(serde::Serialize, serde::Deserialize)]
2813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2814    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
2815```solidity
2816error ExitEscrowPeriodInvalid();
2817```*/
2818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2819    #[derive(Clone)]
2820    pub struct ExitEscrowPeriodInvalid;
2821    #[allow(
2822        non_camel_case_types,
2823        non_snake_case,
2824        clippy::pub_underscore_fields,
2825        clippy::style
2826    )]
2827    const _: () = {
2828        use alloy::sol_types as alloy_sol_types;
2829        #[doc(hidden)]
2830        #[allow(dead_code)]
2831        type UnderlyingSolTuple<'a> = ();
2832        #[doc(hidden)]
2833        type UnderlyingRustTuple<'a> = ();
2834        #[cfg(test)]
2835        #[allow(dead_code, unreachable_patterns)]
2836        fn _type_assertion(
2837            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2838        ) {
2839            match _t {
2840                alloy_sol_types::private::AssertTypeEq::<
2841                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2842                >(_) => {}
2843            }
2844        }
2845        #[automatically_derived]
2846        #[doc(hidden)]
2847        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
2848            fn from(value: ExitEscrowPeriodInvalid) -> Self {
2849                ()
2850            }
2851        }
2852        #[automatically_derived]
2853        #[doc(hidden)]
2854        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
2855            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2856                Self
2857            }
2858        }
2859        #[automatically_derived]
2860        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
2861            type Parameters<'a> = UnderlyingSolTuple<'a>;
2862            type Token<'a> = <Self::Parameters<
2863                'a,
2864            > as alloy_sol_types::SolType>::Token<'a>;
2865            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
2866            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
2867            #[inline]
2868            fn new<'a>(
2869                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2870            ) -> Self {
2871                tuple.into()
2872            }
2873            #[inline]
2874            fn tokenize(&self) -> Self::Token<'_> {
2875                ()
2876            }
2877            #[inline]
2878            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2879                <Self::Parameters<
2880                    '_,
2881                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2882                    .map(Self::new)
2883            }
2884        }
2885    };
2886    #[derive(serde::Serialize, serde::Deserialize)]
2887    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2888    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
2889```solidity
2890error FailedInnerCall();
2891```*/
2892    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2893    #[derive(Clone)]
2894    pub struct FailedInnerCall;
2895    #[allow(
2896        non_camel_case_types,
2897        non_snake_case,
2898        clippy::pub_underscore_fields,
2899        clippy::style
2900    )]
2901    const _: () = {
2902        use alloy::sol_types as alloy_sol_types;
2903        #[doc(hidden)]
2904        #[allow(dead_code)]
2905        type UnderlyingSolTuple<'a> = ();
2906        #[doc(hidden)]
2907        type UnderlyingRustTuple<'a> = ();
2908        #[cfg(test)]
2909        #[allow(dead_code, unreachable_patterns)]
2910        fn _type_assertion(
2911            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2912        ) {
2913            match _t {
2914                alloy_sol_types::private::AssertTypeEq::<
2915                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2916                >(_) => {}
2917            }
2918        }
2919        #[automatically_derived]
2920        #[doc(hidden)]
2921        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
2922            fn from(value: FailedInnerCall) -> Self {
2923                ()
2924            }
2925        }
2926        #[automatically_derived]
2927        #[doc(hidden)]
2928        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
2929            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2930                Self
2931            }
2932        }
2933        #[automatically_derived]
2934        impl alloy_sol_types::SolError for FailedInnerCall {
2935            type Parameters<'a> = UnderlyingSolTuple<'a>;
2936            type Token<'a> = <Self::Parameters<
2937                'a,
2938            > as alloy_sol_types::SolType>::Token<'a>;
2939            const SIGNATURE: &'static str = "FailedInnerCall()";
2940            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
2941            #[inline]
2942            fn new<'a>(
2943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2944            ) -> Self {
2945                tuple.into()
2946            }
2947            #[inline]
2948            fn tokenize(&self) -> Self::Token<'_> {
2949                ()
2950            }
2951            #[inline]
2952            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2953                <Self::Parameters<
2954                    '_,
2955                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2956                    .map(Self::new)
2957            }
2958        }
2959    };
2960    #[derive(serde::Serialize, serde::Deserialize)]
2961    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2962    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
2963```solidity
2964error InsufficientAllowance(uint256, uint256);
2965```*/
2966    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2967    #[derive(Clone)]
2968    pub struct InsufficientAllowance {
2969        #[allow(missing_docs)]
2970        pub _0: alloy::sol_types::private::primitives::aliases::U256,
2971        #[allow(missing_docs)]
2972        pub _1: alloy::sol_types::private::primitives::aliases::U256,
2973    }
2974    #[allow(
2975        non_camel_case_types,
2976        non_snake_case,
2977        clippy::pub_underscore_fields,
2978        clippy::style
2979    )]
2980    const _: () = {
2981        use alloy::sol_types as alloy_sol_types;
2982        #[doc(hidden)]
2983        #[allow(dead_code)]
2984        type UnderlyingSolTuple<'a> = (
2985            alloy::sol_types::sol_data::Uint<256>,
2986            alloy::sol_types::sol_data::Uint<256>,
2987        );
2988        #[doc(hidden)]
2989        type UnderlyingRustTuple<'a> = (
2990            alloy::sol_types::private::primitives::aliases::U256,
2991            alloy::sol_types::private::primitives::aliases::U256,
2992        );
2993        #[cfg(test)]
2994        #[allow(dead_code, unreachable_patterns)]
2995        fn _type_assertion(
2996            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2997        ) {
2998            match _t {
2999                alloy_sol_types::private::AssertTypeEq::<
3000                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3001                >(_) => {}
3002            }
3003        }
3004        #[automatically_derived]
3005        #[doc(hidden)]
3006        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
3007            fn from(value: InsufficientAllowance) -> Self {
3008                (value._0, value._1)
3009            }
3010        }
3011        #[automatically_derived]
3012        #[doc(hidden)]
3013        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
3014            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3015                Self { _0: tuple.0, _1: tuple.1 }
3016            }
3017        }
3018        #[automatically_derived]
3019        impl alloy_sol_types::SolError for InsufficientAllowance {
3020            type Parameters<'a> = UnderlyingSolTuple<'a>;
3021            type Token<'a> = <Self::Parameters<
3022                'a,
3023            > as alloy_sol_types::SolType>::Token<'a>;
3024            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
3025            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
3026            #[inline]
3027            fn new<'a>(
3028                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3029            ) -> Self {
3030                tuple.into()
3031            }
3032            #[inline]
3033            fn tokenize(&self) -> Self::Token<'_> {
3034                (
3035                    <alloy::sol_types::sol_data::Uint<
3036                        256,
3037                    > as alloy_sol_types::SolType>::tokenize(&self._0),
3038                    <alloy::sol_types::sol_data::Uint<
3039                        256,
3040                    > as alloy_sol_types::SolType>::tokenize(&self._1),
3041                )
3042            }
3043            #[inline]
3044            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3045                <Self::Parameters<
3046                    '_,
3047                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3048                    .map(Self::new)
3049            }
3050        }
3051    };
3052    #[derive(serde::Serialize, serde::Deserialize)]
3053    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3054    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
3055```solidity
3056error InsufficientBalance(uint256);
3057```*/
3058    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3059    #[derive(Clone)]
3060    pub struct InsufficientBalance(
3061        pub alloy::sol_types::private::primitives::aliases::U256,
3062    );
3063    #[allow(
3064        non_camel_case_types,
3065        non_snake_case,
3066        clippy::pub_underscore_fields,
3067        clippy::style
3068    )]
3069    const _: () = {
3070        use alloy::sol_types as alloy_sol_types;
3071        #[doc(hidden)]
3072        #[allow(dead_code)]
3073        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3074        #[doc(hidden)]
3075        type UnderlyingRustTuple<'a> = (
3076            alloy::sol_types::private::primitives::aliases::U256,
3077        );
3078        #[cfg(test)]
3079        #[allow(dead_code, unreachable_patterns)]
3080        fn _type_assertion(
3081            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3082        ) {
3083            match _t {
3084                alloy_sol_types::private::AssertTypeEq::<
3085                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3086                >(_) => {}
3087            }
3088        }
3089        #[automatically_derived]
3090        #[doc(hidden)]
3091        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
3092            fn from(value: InsufficientBalance) -> Self {
3093                (value.0,)
3094            }
3095        }
3096        #[automatically_derived]
3097        #[doc(hidden)]
3098        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
3099            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3100                Self(tuple.0)
3101            }
3102        }
3103        #[automatically_derived]
3104        impl alloy_sol_types::SolError for InsufficientBalance {
3105            type Parameters<'a> = UnderlyingSolTuple<'a>;
3106            type Token<'a> = <Self::Parameters<
3107                'a,
3108            > as alloy_sol_types::SolType>::Token<'a>;
3109            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
3110            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
3111            #[inline]
3112            fn new<'a>(
3113                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3114            ) -> Self {
3115                tuple.into()
3116            }
3117            #[inline]
3118            fn tokenize(&self) -> Self::Token<'_> {
3119                (
3120                    <alloy::sol_types::sol_data::Uint<
3121                        256,
3122                    > as alloy_sol_types::SolType>::tokenize(&self.0),
3123                )
3124            }
3125            #[inline]
3126            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3127                <Self::Parameters<
3128                    '_,
3129                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3130                    .map(Self::new)
3131            }
3132        }
3133    };
3134    #[derive(serde::Serialize, serde::Deserialize)]
3135    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3136    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
3137```solidity
3138error InvalidCommission();
3139```*/
3140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3141    #[derive(Clone)]
3142    pub struct InvalidCommission;
3143    #[allow(
3144        non_camel_case_types,
3145        non_snake_case,
3146        clippy::pub_underscore_fields,
3147        clippy::style
3148    )]
3149    const _: () = {
3150        use alloy::sol_types as alloy_sol_types;
3151        #[doc(hidden)]
3152        #[allow(dead_code)]
3153        type UnderlyingSolTuple<'a> = ();
3154        #[doc(hidden)]
3155        type UnderlyingRustTuple<'a> = ();
3156        #[cfg(test)]
3157        #[allow(dead_code, unreachable_patterns)]
3158        fn _type_assertion(
3159            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3160        ) {
3161            match _t {
3162                alloy_sol_types::private::AssertTypeEq::<
3163                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3164                >(_) => {}
3165            }
3166        }
3167        #[automatically_derived]
3168        #[doc(hidden)]
3169        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
3170            fn from(value: InvalidCommission) -> Self {
3171                ()
3172            }
3173        }
3174        #[automatically_derived]
3175        #[doc(hidden)]
3176        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
3177            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3178                Self
3179            }
3180        }
3181        #[automatically_derived]
3182        impl alloy_sol_types::SolError for InvalidCommission {
3183            type Parameters<'a> = UnderlyingSolTuple<'a>;
3184            type Token<'a> = <Self::Parameters<
3185                'a,
3186            > as alloy_sol_types::SolType>::Token<'a>;
3187            const SIGNATURE: &'static str = "InvalidCommission()";
3188            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
3189            #[inline]
3190            fn new<'a>(
3191                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3192            ) -> Self {
3193                tuple.into()
3194            }
3195            #[inline]
3196            fn tokenize(&self) -> Self::Token<'_> {
3197                ()
3198            }
3199            #[inline]
3200            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3201                <Self::Parameters<
3202                    '_,
3203                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3204                    .map(Self::new)
3205            }
3206        }
3207    };
3208    #[derive(serde::Serialize, serde::Deserialize)]
3209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3210    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
3211```solidity
3212error InvalidG1();
3213```*/
3214    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3215    #[derive(Clone)]
3216    pub struct InvalidG1;
3217    #[allow(
3218        non_camel_case_types,
3219        non_snake_case,
3220        clippy::pub_underscore_fields,
3221        clippy::style
3222    )]
3223    const _: () = {
3224        use alloy::sol_types as alloy_sol_types;
3225        #[doc(hidden)]
3226        #[allow(dead_code)]
3227        type UnderlyingSolTuple<'a> = ();
3228        #[doc(hidden)]
3229        type UnderlyingRustTuple<'a> = ();
3230        #[cfg(test)]
3231        #[allow(dead_code, unreachable_patterns)]
3232        fn _type_assertion(
3233            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3234        ) {
3235            match _t {
3236                alloy_sol_types::private::AssertTypeEq::<
3237                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3238                >(_) => {}
3239            }
3240        }
3241        #[automatically_derived]
3242        #[doc(hidden)]
3243        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
3244            fn from(value: InvalidG1) -> Self {
3245                ()
3246            }
3247        }
3248        #[automatically_derived]
3249        #[doc(hidden)]
3250        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
3251            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3252                Self
3253            }
3254        }
3255        #[automatically_derived]
3256        impl alloy_sol_types::SolError for InvalidG1 {
3257            type Parameters<'a> = UnderlyingSolTuple<'a>;
3258            type Token<'a> = <Self::Parameters<
3259                'a,
3260            > as alloy_sol_types::SolType>::Token<'a>;
3261            const SIGNATURE: &'static str = "InvalidG1()";
3262            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
3263            #[inline]
3264            fn new<'a>(
3265                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3266            ) -> Self {
3267                tuple.into()
3268            }
3269            #[inline]
3270            fn tokenize(&self) -> Self::Token<'_> {
3271                ()
3272            }
3273            #[inline]
3274            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3275                <Self::Parameters<
3276                    '_,
3277                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3278                    .map(Self::new)
3279            }
3280        }
3281    };
3282    #[derive(serde::Serialize, serde::Deserialize)]
3283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3284    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
3285```solidity
3286error InvalidInitialization();
3287```*/
3288    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3289    #[derive(Clone)]
3290    pub struct InvalidInitialization;
3291    #[allow(
3292        non_camel_case_types,
3293        non_snake_case,
3294        clippy::pub_underscore_fields,
3295        clippy::style
3296    )]
3297    const _: () = {
3298        use alloy::sol_types as alloy_sol_types;
3299        #[doc(hidden)]
3300        #[allow(dead_code)]
3301        type UnderlyingSolTuple<'a> = ();
3302        #[doc(hidden)]
3303        type UnderlyingRustTuple<'a> = ();
3304        #[cfg(test)]
3305        #[allow(dead_code, unreachable_patterns)]
3306        fn _type_assertion(
3307            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3308        ) {
3309            match _t {
3310                alloy_sol_types::private::AssertTypeEq::<
3311                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3312                >(_) => {}
3313            }
3314        }
3315        #[automatically_derived]
3316        #[doc(hidden)]
3317        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
3318            fn from(value: InvalidInitialization) -> Self {
3319                ()
3320            }
3321        }
3322        #[automatically_derived]
3323        #[doc(hidden)]
3324        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
3325            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3326                Self
3327            }
3328        }
3329        #[automatically_derived]
3330        impl alloy_sol_types::SolError for InvalidInitialization {
3331            type Parameters<'a> = UnderlyingSolTuple<'a>;
3332            type Token<'a> = <Self::Parameters<
3333                'a,
3334            > as alloy_sol_types::SolType>::Token<'a>;
3335            const SIGNATURE: &'static str = "InvalidInitialization()";
3336            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
3337            #[inline]
3338            fn new<'a>(
3339                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3340            ) -> Self {
3341                tuple.into()
3342            }
3343            #[inline]
3344            fn tokenize(&self) -> Self::Token<'_> {
3345                ()
3346            }
3347            #[inline]
3348            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3349                <Self::Parameters<
3350                    '_,
3351                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3352                    .map(Self::new)
3353            }
3354        }
3355    };
3356    #[derive(serde::Serialize, serde::Deserialize)]
3357    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3358    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
3359```solidity
3360error InvalidSchnorrVK();
3361```*/
3362    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3363    #[derive(Clone)]
3364    pub struct InvalidSchnorrVK;
3365    #[allow(
3366        non_camel_case_types,
3367        non_snake_case,
3368        clippy::pub_underscore_fields,
3369        clippy::style
3370    )]
3371    const _: () = {
3372        use alloy::sol_types as alloy_sol_types;
3373        #[doc(hidden)]
3374        #[allow(dead_code)]
3375        type UnderlyingSolTuple<'a> = ();
3376        #[doc(hidden)]
3377        type UnderlyingRustTuple<'a> = ();
3378        #[cfg(test)]
3379        #[allow(dead_code, unreachable_patterns)]
3380        fn _type_assertion(
3381            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3382        ) {
3383            match _t {
3384                alloy_sol_types::private::AssertTypeEq::<
3385                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3386                >(_) => {}
3387            }
3388        }
3389        #[automatically_derived]
3390        #[doc(hidden)]
3391        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
3392            fn from(value: InvalidSchnorrVK) -> Self {
3393                ()
3394            }
3395        }
3396        #[automatically_derived]
3397        #[doc(hidden)]
3398        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
3399            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3400                Self
3401            }
3402        }
3403        #[automatically_derived]
3404        impl alloy_sol_types::SolError for InvalidSchnorrVK {
3405            type Parameters<'a> = UnderlyingSolTuple<'a>;
3406            type Token<'a> = <Self::Parameters<
3407                'a,
3408            > as alloy_sol_types::SolType>::Token<'a>;
3409            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
3410            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
3411            #[inline]
3412            fn new<'a>(
3413                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3414            ) -> Self {
3415                tuple.into()
3416            }
3417            #[inline]
3418            fn tokenize(&self) -> Self::Token<'_> {
3419                ()
3420            }
3421            #[inline]
3422            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3423                <Self::Parameters<
3424                    '_,
3425                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3426                    .map(Self::new)
3427            }
3428        }
3429    };
3430    #[derive(serde::Serialize, serde::Deserialize)]
3431    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3432    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
3433```solidity
3434error NotInitializing();
3435```*/
3436    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3437    #[derive(Clone)]
3438    pub struct NotInitializing;
3439    #[allow(
3440        non_camel_case_types,
3441        non_snake_case,
3442        clippy::pub_underscore_fields,
3443        clippy::style
3444    )]
3445    const _: () = {
3446        use alloy::sol_types as alloy_sol_types;
3447        #[doc(hidden)]
3448        #[allow(dead_code)]
3449        type UnderlyingSolTuple<'a> = ();
3450        #[doc(hidden)]
3451        type UnderlyingRustTuple<'a> = ();
3452        #[cfg(test)]
3453        #[allow(dead_code, unreachable_patterns)]
3454        fn _type_assertion(
3455            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3456        ) {
3457            match _t {
3458                alloy_sol_types::private::AssertTypeEq::<
3459                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3460                >(_) => {}
3461            }
3462        }
3463        #[automatically_derived]
3464        #[doc(hidden)]
3465        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
3466            fn from(value: NotInitializing) -> Self {
3467                ()
3468            }
3469        }
3470        #[automatically_derived]
3471        #[doc(hidden)]
3472        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
3473            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3474                Self
3475            }
3476        }
3477        #[automatically_derived]
3478        impl alloy_sol_types::SolError for NotInitializing {
3479            type Parameters<'a> = UnderlyingSolTuple<'a>;
3480            type Token<'a> = <Self::Parameters<
3481                'a,
3482            > as alloy_sol_types::SolType>::Token<'a>;
3483            const SIGNATURE: &'static str = "NotInitializing()";
3484            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
3485            #[inline]
3486            fn new<'a>(
3487                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3488            ) -> Self {
3489                tuple.into()
3490            }
3491            #[inline]
3492            fn tokenize(&self) -> Self::Token<'_> {
3493                ()
3494            }
3495            #[inline]
3496            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3497                <Self::Parameters<
3498                    '_,
3499                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3500                    .map(Self::new)
3501            }
3502        }
3503    };
3504    #[derive(serde::Serialize, serde::Deserialize)]
3505    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3506    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
3507```solidity
3508error NothingToWithdraw();
3509```*/
3510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3511    #[derive(Clone)]
3512    pub struct NothingToWithdraw;
3513    #[allow(
3514        non_camel_case_types,
3515        non_snake_case,
3516        clippy::pub_underscore_fields,
3517        clippy::style
3518    )]
3519    const _: () = {
3520        use alloy::sol_types as alloy_sol_types;
3521        #[doc(hidden)]
3522        #[allow(dead_code)]
3523        type UnderlyingSolTuple<'a> = ();
3524        #[doc(hidden)]
3525        type UnderlyingRustTuple<'a> = ();
3526        #[cfg(test)]
3527        #[allow(dead_code, unreachable_patterns)]
3528        fn _type_assertion(
3529            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3530        ) {
3531            match _t {
3532                alloy_sol_types::private::AssertTypeEq::<
3533                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3534                >(_) => {}
3535            }
3536        }
3537        #[automatically_derived]
3538        #[doc(hidden)]
3539        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
3540            fn from(value: NothingToWithdraw) -> Self {
3541                ()
3542            }
3543        }
3544        #[automatically_derived]
3545        #[doc(hidden)]
3546        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
3547            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3548                Self
3549            }
3550        }
3551        #[automatically_derived]
3552        impl alloy_sol_types::SolError for NothingToWithdraw {
3553            type Parameters<'a> = UnderlyingSolTuple<'a>;
3554            type Token<'a> = <Self::Parameters<
3555                'a,
3556            > as alloy_sol_types::SolType>::Token<'a>;
3557            const SIGNATURE: &'static str = "NothingToWithdraw()";
3558            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
3559            #[inline]
3560            fn new<'a>(
3561                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3562            ) -> Self {
3563                tuple.into()
3564            }
3565            #[inline]
3566            fn tokenize(&self) -> Self::Token<'_> {
3567                ()
3568            }
3569            #[inline]
3570            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3571                <Self::Parameters<
3572                    '_,
3573                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3574                    .map(Self::new)
3575            }
3576        }
3577    };
3578    #[derive(serde::Serialize, serde::Deserialize)]
3579    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3580    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
3581```solidity
3582error OwnableInvalidOwner(address owner);
3583```*/
3584    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3585    #[derive(Clone)]
3586    pub struct OwnableInvalidOwner {
3587        #[allow(missing_docs)]
3588        pub owner: alloy::sol_types::private::Address,
3589    }
3590    #[allow(
3591        non_camel_case_types,
3592        non_snake_case,
3593        clippy::pub_underscore_fields,
3594        clippy::style
3595    )]
3596    const _: () = {
3597        use alloy::sol_types as alloy_sol_types;
3598        #[doc(hidden)]
3599        #[allow(dead_code)]
3600        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3601        #[doc(hidden)]
3602        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3603        #[cfg(test)]
3604        #[allow(dead_code, unreachable_patterns)]
3605        fn _type_assertion(
3606            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3607        ) {
3608            match _t {
3609                alloy_sol_types::private::AssertTypeEq::<
3610                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3611                >(_) => {}
3612            }
3613        }
3614        #[automatically_derived]
3615        #[doc(hidden)]
3616        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
3617            fn from(value: OwnableInvalidOwner) -> Self {
3618                (value.owner,)
3619            }
3620        }
3621        #[automatically_derived]
3622        #[doc(hidden)]
3623        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
3624            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3625                Self { owner: tuple.0 }
3626            }
3627        }
3628        #[automatically_derived]
3629        impl alloy_sol_types::SolError for OwnableInvalidOwner {
3630            type Parameters<'a> = UnderlyingSolTuple<'a>;
3631            type Token<'a> = <Self::Parameters<
3632                'a,
3633            > as alloy_sol_types::SolType>::Token<'a>;
3634            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
3635            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
3636            #[inline]
3637            fn new<'a>(
3638                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3639            ) -> Self {
3640                tuple.into()
3641            }
3642            #[inline]
3643            fn tokenize(&self) -> Self::Token<'_> {
3644                (
3645                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3646                        &self.owner,
3647                    ),
3648                )
3649            }
3650            #[inline]
3651            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3652                <Self::Parameters<
3653                    '_,
3654                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3655                    .map(Self::new)
3656            }
3657        }
3658    };
3659    #[derive(serde::Serialize, serde::Deserialize)]
3660    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3661    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
3662```solidity
3663error OwnableUnauthorizedAccount(address account);
3664```*/
3665    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3666    #[derive(Clone)]
3667    pub struct OwnableUnauthorizedAccount {
3668        #[allow(missing_docs)]
3669        pub account: alloy::sol_types::private::Address,
3670    }
3671    #[allow(
3672        non_camel_case_types,
3673        non_snake_case,
3674        clippy::pub_underscore_fields,
3675        clippy::style
3676    )]
3677    const _: () = {
3678        use alloy::sol_types as alloy_sol_types;
3679        #[doc(hidden)]
3680        #[allow(dead_code)]
3681        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3682        #[doc(hidden)]
3683        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3684        #[cfg(test)]
3685        #[allow(dead_code, unreachable_patterns)]
3686        fn _type_assertion(
3687            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3688        ) {
3689            match _t {
3690                alloy_sol_types::private::AssertTypeEq::<
3691                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3692                >(_) => {}
3693            }
3694        }
3695        #[automatically_derived]
3696        #[doc(hidden)]
3697        impl ::core::convert::From<OwnableUnauthorizedAccount>
3698        for UnderlyingRustTuple<'_> {
3699            fn from(value: OwnableUnauthorizedAccount) -> Self {
3700                (value.account,)
3701            }
3702        }
3703        #[automatically_derived]
3704        #[doc(hidden)]
3705        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3706        for OwnableUnauthorizedAccount {
3707            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3708                Self { account: tuple.0 }
3709            }
3710        }
3711        #[automatically_derived]
3712        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
3713            type Parameters<'a> = UnderlyingSolTuple<'a>;
3714            type Token<'a> = <Self::Parameters<
3715                'a,
3716            > as alloy_sol_types::SolType>::Token<'a>;
3717            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
3718            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
3719            #[inline]
3720            fn new<'a>(
3721                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3722            ) -> Self {
3723                tuple.into()
3724            }
3725            #[inline]
3726            fn tokenize(&self) -> Self::Token<'_> {
3727                (
3728                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3729                        &self.account,
3730                    ),
3731                )
3732            }
3733            #[inline]
3734            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3735                <Self::Parameters<
3736                    '_,
3737                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3738                    .map(Self::new)
3739            }
3740        }
3741    };
3742    #[derive(serde::Serialize, serde::Deserialize)]
3743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3744    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
3745```solidity
3746error OwnershipCannotBeRenounced();
3747```*/
3748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3749    #[derive(Clone)]
3750    pub struct OwnershipCannotBeRenounced;
3751    #[allow(
3752        non_camel_case_types,
3753        non_snake_case,
3754        clippy::pub_underscore_fields,
3755        clippy::style
3756    )]
3757    const _: () = {
3758        use alloy::sol_types as alloy_sol_types;
3759        #[doc(hidden)]
3760        #[allow(dead_code)]
3761        type UnderlyingSolTuple<'a> = ();
3762        #[doc(hidden)]
3763        type UnderlyingRustTuple<'a> = ();
3764        #[cfg(test)]
3765        #[allow(dead_code, unreachable_patterns)]
3766        fn _type_assertion(
3767            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3768        ) {
3769            match _t {
3770                alloy_sol_types::private::AssertTypeEq::<
3771                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3772                >(_) => {}
3773            }
3774        }
3775        #[automatically_derived]
3776        #[doc(hidden)]
3777        impl ::core::convert::From<OwnershipCannotBeRenounced>
3778        for UnderlyingRustTuple<'_> {
3779            fn from(value: OwnershipCannotBeRenounced) -> Self {
3780                ()
3781            }
3782        }
3783        #[automatically_derived]
3784        #[doc(hidden)]
3785        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3786        for OwnershipCannotBeRenounced {
3787            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3788                Self
3789            }
3790        }
3791        #[automatically_derived]
3792        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
3793            type Parameters<'a> = UnderlyingSolTuple<'a>;
3794            type Token<'a> = <Self::Parameters<
3795                'a,
3796            > as alloy_sol_types::SolType>::Token<'a>;
3797            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
3798            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
3799            #[inline]
3800            fn new<'a>(
3801                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3802            ) -> Self {
3803                tuple.into()
3804            }
3805            #[inline]
3806            fn tokenize(&self) -> Self::Token<'_> {
3807                ()
3808            }
3809            #[inline]
3810            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3811                <Self::Parameters<
3812                    '_,
3813                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3814                    .map(Self::new)
3815            }
3816        }
3817    };
3818    #[derive(serde::Serialize, serde::Deserialize)]
3819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3820    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
3821```solidity
3822error PowPrecompileFailed();
3823```*/
3824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3825    #[derive(Clone)]
3826    pub struct PowPrecompileFailed;
3827    #[allow(
3828        non_camel_case_types,
3829        non_snake_case,
3830        clippy::pub_underscore_fields,
3831        clippy::style
3832    )]
3833    const _: () = {
3834        use alloy::sol_types as alloy_sol_types;
3835        #[doc(hidden)]
3836        #[allow(dead_code)]
3837        type UnderlyingSolTuple<'a> = ();
3838        #[doc(hidden)]
3839        type UnderlyingRustTuple<'a> = ();
3840        #[cfg(test)]
3841        #[allow(dead_code, unreachable_patterns)]
3842        fn _type_assertion(
3843            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3844        ) {
3845            match _t {
3846                alloy_sol_types::private::AssertTypeEq::<
3847                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3848                >(_) => {}
3849            }
3850        }
3851        #[automatically_derived]
3852        #[doc(hidden)]
3853        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
3854            fn from(value: PowPrecompileFailed) -> Self {
3855                ()
3856            }
3857        }
3858        #[automatically_derived]
3859        #[doc(hidden)]
3860        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
3861            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3862                Self
3863            }
3864        }
3865        #[automatically_derived]
3866        impl alloy_sol_types::SolError for PowPrecompileFailed {
3867            type Parameters<'a> = UnderlyingSolTuple<'a>;
3868            type Token<'a> = <Self::Parameters<
3869                'a,
3870            > as alloy_sol_types::SolType>::Token<'a>;
3871            const SIGNATURE: &'static str = "PowPrecompileFailed()";
3872            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
3873            #[inline]
3874            fn new<'a>(
3875                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3876            ) -> Self {
3877                tuple.into()
3878            }
3879            #[inline]
3880            fn tokenize(&self) -> Self::Token<'_> {
3881                ()
3882            }
3883            #[inline]
3884            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3885                <Self::Parameters<
3886                    '_,
3887                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3888                    .map(Self::new)
3889            }
3890        }
3891    };
3892    #[derive(serde::Serialize, serde::Deserialize)]
3893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3894    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
3895```solidity
3896error PrematureWithdrawal();
3897```*/
3898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3899    #[derive(Clone)]
3900    pub struct PrematureWithdrawal;
3901    #[allow(
3902        non_camel_case_types,
3903        non_snake_case,
3904        clippy::pub_underscore_fields,
3905        clippy::style
3906    )]
3907    const _: () = {
3908        use alloy::sol_types as alloy_sol_types;
3909        #[doc(hidden)]
3910        #[allow(dead_code)]
3911        type UnderlyingSolTuple<'a> = ();
3912        #[doc(hidden)]
3913        type UnderlyingRustTuple<'a> = ();
3914        #[cfg(test)]
3915        #[allow(dead_code, unreachable_patterns)]
3916        fn _type_assertion(
3917            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3918        ) {
3919            match _t {
3920                alloy_sol_types::private::AssertTypeEq::<
3921                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3922                >(_) => {}
3923            }
3924        }
3925        #[automatically_derived]
3926        #[doc(hidden)]
3927        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
3928            fn from(value: PrematureWithdrawal) -> Self {
3929                ()
3930            }
3931        }
3932        #[automatically_derived]
3933        #[doc(hidden)]
3934        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
3935            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3936                Self
3937            }
3938        }
3939        #[automatically_derived]
3940        impl alloy_sol_types::SolError for PrematureWithdrawal {
3941            type Parameters<'a> = UnderlyingSolTuple<'a>;
3942            type Token<'a> = <Self::Parameters<
3943                'a,
3944            > as alloy_sol_types::SolType>::Token<'a>;
3945            const SIGNATURE: &'static str = "PrematureWithdrawal()";
3946            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
3947            #[inline]
3948            fn new<'a>(
3949                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3950            ) -> Self {
3951                tuple.into()
3952            }
3953            #[inline]
3954            fn tokenize(&self) -> Self::Token<'_> {
3955                ()
3956            }
3957            #[inline]
3958            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3959                <Self::Parameters<
3960                    '_,
3961                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3962                    .map(Self::new)
3963            }
3964        }
3965    };
3966    #[derive(serde::Serialize, serde::Deserialize)]
3967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3968    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
3969```solidity
3970error UUPSUnauthorizedCallContext();
3971```*/
3972    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3973    #[derive(Clone)]
3974    pub struct UUPSUnauthorizedCallContext;
3975    #[allow(
3976        non_camel_case_types,
3977        non_snake_case,
3978        clippy::pub_underscore_fields,
3979        clippy::style
3980    )]
3981    const _: () = {
3982        use alloy::sol_types as alloy_sol_types;
3983        #[doc(hidden)]
3984        #[allow(dead_code)]
3985        type UnderlyingSolTuple<'a> = ();
3986        #[doc(hidden)]
3987        type UnderlyingRustTuple<'a> = ();
3988        #[cfg(test)]
3989        #[allow(dead_code, unreachable_patterns)]
3990        fn _type_assertion(
3991            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3992        ) {
3993            match _t {
3994                alloy_sol_types::private::AssertTypeEq::<
3995                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3996                >(_) => {}
3997            }
3998        }
3999        #[automatically_derived]
4000        #[doc(hidden)]
4001        impl ::core::convert::From<UUPSUnauthorizedCallContext>
4002        for UnderlyingRustTuple<'_> {
4003            fn from(value: UUPSUnauthorizedCallContext) -> Self {
4004                ()
4005            }
4006        }
4007        #[automatically_derived]
4008        #[doc(hidden)]
4009        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4010        for UUPSUnauthorizedCallContext {
4011            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4012                Self
4013            }
4014        }
4015        #[automatically_derived]
4016        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
4017            type Parameters<'a> = UnderlyingSolTuple<'a>;
4018            type Token<'a> = <Self::Parameters<
4019                'a,
4020            > as alloy_sol_types::SolType>::Token<'a>;
4021            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
4022            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
4023            #[inline]
4024            fn new<'a>(
4025                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4026            ) -> Self {
4027                tuple.into()
4028            }
4029            #[inline]
4030            fn tokenize(&self) -> Self::Token<'_> {
4031                ()
4032            }
4033            #[inline]
4034            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4035                <Self::Parameters<
4036                    '_,
4037                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4038                    .map(Self::new)
4039            }
4040        }
4041    };
4042    #[derive(serde::Serialize, serde::Deserialize)]
4043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4044    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
4045```solidity
4046error UUPSUnsupportedProxiableUUID(bytes32 slot);
4047```*/
4048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4049    #[derive(Clone)]
4050    pub struct UUPSUnsupportedProxiableUUID {
4051        #[allow(missing_docs)]
4052        pub slot: alloy::sol_types::private::FixedBytes<32>,
4053    }
4054    #[allow(
4055        non_camel_case_types,
4056        non_snake_case,
4057        clippy::pub_underscore_fields,
4058        clippy::style
4059    )]
4060    const _: () = {
4061        use alloy::sol_types as alloy_sol_types;
4062        #[doc(hidden)]
4063        #[allow(dead_code)]
4064        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4065        #[doc(hidden)]
4066        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4067        #[cfg(test)]
4068        #[allow(dead_code, unreachable_patterns)]
4069        fn _type_assertion(
4070            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4071        ) {
4072            match _t {
4073                alloy_sol_types::private::AssertTypeEq::<
4074                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4075                >(_) => {}
4076            }
4077        }
4078        #[automatically_derived]
4079        #[doc(hidden)]
4080        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
4081        for UnderlyingRustTuple<'_> {
4082            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
4083                (value.slot,)
4084            }
4085        }
4086        #[automatically_derived]
4087        #[doc(hidden)]
4088        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4089        for UUPSUnsupportedProxiableUUID {
4090            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4091                Self { slot: tuple.0 }
4092            }
4093        }
4094        #[automatically_derived]
4095        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
4096            type Parameters<'a> = UnderlyingSolTuple<'a>;
4097            type Token<'a> = <Self::Parameters<
4098                'a,
4099            > as alloy_sol_types::SolType>::Token<'a>;
4100            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
4101            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
4102            #[inline]
4103            fn new<'a>(
4104                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4105            ) -> Self {
4106                tuple.into()
4107            }
4108            #[inline]
4109            fn tokenize(&self) -> Self::Token<'_> {
4110                (
4111                    <alloy::sol_types::sol_data::FixedBytes<
4112                        32,
4113                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
4114                )
4115            }
4116            #[inline]
4117            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4118                <Self::Parameters<
4119                    '_,
4120                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4121                    .map(Self::new)
4122            }
4123        }
4124    };
4125    #[derive(serde::Serialize, serde::Deserialize)]
4126    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4127    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
4128```solidity
4129error UndelegationAlreadyExists();
4130```*/
4131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4132    #[derive(Clone)]
4133    pub struct UndelegationAlreadyExists;
4134    #[allow(
4135        non_camel_case_types,
4136        non_snake_case,
4137        clippy::pub_underscore_fields,
4138        clippy::style
4139    )]
4140    const _: () = {
4141        use alloy::sol_types as alloy_sol_types;
4142        #[doc(hidden)]
4143        #[allow(dead_code)]
4144        type UnderlyingSolTuple<'a> = ();
4145        #[doc(hidden)]
4146        type UnderlyingRustTuple<'a> = ();
4147        #[cfg(test)]
4148        #[allow(dead_code, unreachable_patterns)]
4149        fn _type_assertion(
4150            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4151        ) {
4152            match _t {
4153                alloy_sol_types::private::AssertTypeEq::<
4154                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4155                >(_) => {}
4156            }
4157        }
4158        #[automatically_derived]
4159        #[doc(hidden)]
4160        impl ::core::convert::From<UndelegationAlreadyExists>
4161        for UnderlyingRustTuple<'_> {
4162            fn from(value: UndelegationAlreadyExists) -> Self {
4163                ()
4164            }
4165        }
4166        #[automatically_derived]
4167        #[doc(hidden)]
4168        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4169        for UndelegationAlreadyExists {
4170            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4171                Self
4172            }
4173        }
4174        #[automatically_derived]
4175        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
4176            type Parameters<'a> = UnderlyingSolTuple<'a>;
4177            type Token<'a> = <Self::Parameters<
4178                'a,
4179            > as alloy_sol_types::SolType>::Token<'a>;
4180            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
4181            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
4182            #[inline]
4183            fn new<'a>(
4184                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4185            ) -> Self {
4186                tuple.into()
4187            }
4188            #[inline]
4189            fn tokenize(&self) -> Self::Token<'_> {
4190                ()
4191            }
4192            #[inline]
4193            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4194                <Self::Parameters<
4195                    '_,
4196                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4197                    .map(Self::new)
4198            }
4199        }
4200    };
4201    #[derive(serde::Serialize, serde::Deserialize)]
4202    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4203    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
4204```solidity
4205error ValidatorAlreadyExited();
4206```*/
4207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4208    #[derive(Clone)]
4209    pub struct ValidatorAlreadyExited;
4210    #[allow(
4211        non_camel_case_types,
4212        non_snake_case,
4213        clippy::pub_underscore_fields,
4214        clippy::style
4215    )]
4216    const _: () = {
4217        use alloy::sol_types as alloy_sol_types;
4218        #[doc(hidden)]
4219        #[allow(dead_code)]
4220        type UnderlyingSolTuple<'a> = ();
4221        #[doc(hidden)]
4222        type UnderlyingRustTuple<'a> = ();
4223        #[cfg(test)]
4224        #[allow(dead_code, unreachable_patterns)]
4225        fn _type_assertion(
4226            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4227        ) {
4228            match _t {
4229                alloy_sol_types::private::AssertTypeEq::<
4230                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4231                >(_) => {}
4232            }
4233        }
4234        #[automatically_derived]
4235        #[doc(hidden)]
4236        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
4237            fn from(value: ValidatorAlreadyExited) -> Self {
4238                ()
4239            }
4240        }
4241        #[automatically_derived]
4242        #[doc(hidden)]
4243        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
4244            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4245                Self
4246            }
4247        }
4248        #[automatically_derived]
4249        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
4250            type Parameters<'a> = UnderlyingSolTuple<'a>;
4251            type Token<'a> = <Self::Parameters<
4252                'a,
4253            > as alloy_sol_types::SolType>::Token<'a>;
4254            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
4255            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
4256            #[inline]
4257            fn new<'a>(
4258                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4259            ) -> Self {
4260                tuple.into()
4261            }
4262            #[inline]
4263            fn tokenize(&self) -> Self::Token<'_> {
4264                ()
4265            }
4266            #[inline]
4267            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4268                <Self::Parameters<
4269                    '_,
4270                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4271                    .map(Self::new)
4272            }
4273        }
4274    };
4275    #[derive(serde::Serialize, serde::Deserialize)]
4276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4277    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
4278```solidity
4279error ValidatorAlreadyRegistered();
4280```*/
4281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4282    #[derive(Clone)]
4283    pub struct ValidatorAlreadyRegistered;
4284    #[allow(
4285        non_camel_case_types,
4286        non_snake_case,
4287        clippy::pub_underscore_fields,
4288        clippy::style
4289    )]
4290    const _: () = {
4291        use alloy::sol_types as alloy_sol_types;
4292        #[doc(hidden)]
4293        #[allow(dead_code)]
4294        type UnderlyingSolTuple<'a> = ();
4295        #[doc(hidden)]
4296        type UnderlyingRustTuple<'a> = ();
4297        #[cfg(test)]
4298        #[allow(dead_code, unreachable_patterns)]
4299        fn _type_assertion(
4300            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4301        ) {
4302            match _t {
4303                alloy_sol_types::private::AssertTypeEq::<
4304                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4305                >(_) => {}
4306            }
4307        }
4308        #[automatically_derived]
4309        #[doc(hidden)]
4310        impl ::core::convert::From<ValidatorAlreadyRegistered>
4311        for UnderlyingRustTuple<'_> {
4312            fn from(value: ValidatorAlreadyRegistered) -> Self {
4313                ()
4314            }
4315        }
4316        #[automatically_derived]
4317        #[doc(hidden)]
4318        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4319        for ValidatorAlreadyRegistered {
4320            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4321                Self
4322            }
4323        }
4324        #[automatically_derived]
4325        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
4326            type Parameters<'a> = UnderlyingSolTuple<'a>;
4327            type Token<'a> = <Self::Parameters<
4328                'a,
4329            > as alloy_sol_types::SolType>::Token<'a>;
4330            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
4331            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
4332            #[inline]
4333            fn new<'a>(
4334                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4335            ) -> Self {
4336                tuple.into()
4337            }
4338            #[inline]
4339            fn tokenize(&self) -> Self::Token<'_> {
4340                ()
4341            }
4342            #[inline]
4343            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4344                <Self::Parameters<
4345                    '_,
4346                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4347                    .map(Self::new)
4348            }
4349        }
4350    };
4351    #[derive(serde::Serialize, serde::Deserialize)]
4352    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4353    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
4354```solidity
4355error ValidatorInactive();
4356```*/
4357    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4358    #[derive(Clone)]
4359    pub struct ValidatorInactive;
4360    #[allow(
4361        non_camel_case_types,
4362        non_snake_case,
4363        clippy::pub_underscore_fields,
4364        clippy::style
4365    )]
4366    const _: () = {
4367        use alloy::sol_types as alloy_sol_types;
4368        #[doc(hidden)]
4369        #[allow(dead_code)]
4370        type UnderlyingSolTuple<'a> = ();
4371        #[doc(hidden)]
4372        type UnderlyingRustTuple<'a> = ();
4373        #[cfg(test)]
4374        #[allow(dead_code, unreachable_patterns)]
4375        fn _type_assertion(
4376            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4377        ) {
4378            match _t {
4379                alloy_sol_types::private::AssertTypeEq::<
4380                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4381                >(_) => {}
4382            }
4383        }
4384        #[automatically_derived]
4385        #[doc(hidden)]
4386        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
4387            fn from(value: ValidatorInactive) -> Self {
4388                ()
4389            }
4390        }
4391        #[automatically_derived]
4392        #[doc(hidden)]
4393        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
4394            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4395                Self
4396            }
4397        }
4398        #[automatically_derived]
4399        impl alloy_sol_types::SolError for ValidatorInactive {
4400            type Parameters<'a> = UnderlyingSolTuple<'a>;
4401            type Token<'a> = <Self::Parameters<
4402                'a,
4403            > as alloy_sol_types::SolType>::Token<'a>;
4404            const SIGNATURE: &'static str = "ValidatorInactive()";
4405            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
4406            #[inline]
4407            fn new<'a>(
4408                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4409            ) -> Self {
4410                tuple.into()
4411            }
4412            #[inline]
4413            fn tokenize(&self) -> Self::Token<'_> {
4414                ()
4415            }
4416            #[inline]
4417            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4418                <Self::Parameters<
4419                    '_,
4420                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4421                    .map(Self::new)
4422            }
4423        }
4424    };
4425    #[derive(serde::Serialize, serde::Deserialize)]
4426    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4427    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
4428```solidity
4429error ValidatorNotExited();
4430```*/
4431    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4432    #[derive(Clone)]
4433    pub struct ValidatorNotExited;
4434    #[allow(
4435        non_camel_case_types,
4436        non_snake_case,
4437        clippy::pub_underscore_fields,
4438        clippy::style
4439    )]
4440    const _: () = {
4441        use alloy::sol_types as alloy_sol_types;
4442        #[doc(hidden)]
4443        #[allow(dead_code)]
4444        type UnderlyingSolTuple<'a> = ();
4445        #[doc(hidden)]
4446        type UnderlyingRustTuple<'a> = ();
4447        #[cfg(test)]
4448        #[allow(dead_code, unreachable_patterns)]
4449        fn _type_assertion(
4450            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4451        ) {
4452            match _t {
4453                alloy_sol_types::private::AssertTypeEq::<
4454                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4455                >(_) => {}
4456            }
4457        }
4458        #[automatically_derived]
4459        #[doc(hidden)]
4460        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
4461            fn from(value: ValidatorNotExited) -> Self {
4462                ()
4463            }
4464        }
4465        #[automatically_derived]
4466        #[doc(hidden)]
4467        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
4468            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4469                Self
4470            }
4471        }
4472        #[automatically_derived]
4473        impl alloy_sol_types::SolError for ValidatorNotExited {
4474            type Parameters<'a> = UnderlyingSolTuple<'a>;
4475            type Token<'a> = <Self::Parameters<
4476                'a,
4477            > as alloy_sol_types::SolType>::Token<'a>;
4478            const SIGNATURE: &'static str = "ValidatorNotExited()";
4479            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
4480            #[inline]
4481            fn new<'a>(
4482                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4483            ) -> Self {
4484                tuple.into()
4485            }
4486            #[inline]
4487            fn tokenize(&self) -> Self::Token<'_> {
4488                ()
4489            }
4490            #[inline]
4491            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4492                <Self::Parameters<
4493                    '_,
4494                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4495                    .map(Self::new)
4496            }
4497        }
4498    };
4499    #[derive(serde::Serialize, serde::Deserialize)]
4500    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4501    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
4502```solidity
4503error ZeroAddress();
4504```*/
4505    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4506    #[derive(Clone)]
4507    pub struct ZeroAddress;
4508    #[allow(
4509        non_camel_case_types,
4510        non_snake_case,
4511        clippy::pub_underscore_fields,
4512        clippy::style
4513    )]
4514    const _: () = {
4515        use alloy::sol_types as alloy_sol_types;
4516        #[doc(hidden)]
4517        #[allow(dead_code)]
4518        type UnderlyingSolTuple<'a> = ();
4519        #[doc(hidden)]
4520        type UnderlyingRustTuple<'a> = ();
4521        #[cfg(test)]
4522        #[allow(dead_code, unreachable_patterns)]
4523        fn _type_assertion(
4524            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4525        ) {
4526            match _t {
4527                alloy_sol_types::private::AssertTypeEq::<
4528                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4529                >(_) => {}
4530            }
4531        }
4532        #[automatically_derived]
4533        #[doc(hidden)]
4534        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
4535            fn from(value: ZeroAddress) -> Self {
4536                ()
4537            }
4538        }
4539        #[automatically_derived]
4540        #[doc(hidden)]
4541        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
4542            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4543                Self
4544            }
4545        }
4546        #[automatically_derived]
4547        impl alloy_sol_types::SolError for ZeroAddress {
4548            type Parameters<'a> = UnderlyingSolTuple<'a>;
4549            type Token<'a> = <Self::Parameters<
4550                'a,
4551            > as alloy_sol_types::SolType>::Token<'a>;
4552            const SIGNATURE: &'static str = "ZeroAddress()";
4553            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
4554            #[inline]
4555            fn new<'a>(
4556                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4557            ) -> Self {
4558                tuple.into()
4559            }
4560            #[inline]
4561            fn tokenize(&self) -> Self::Token<'_> {
4562                ()
4563            }
4564            #[inline]
4565            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4566                <Self::Parameters<
4567                    '_,
4568                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4569                    .map(Self::new)
4570            }
4571        }
4572    };
4573    #[derive(serde::Serialize, serde::Deserialize)]
4574    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4575    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
4576```solidity
4577error ZeroAmount();
4578```*/
4579    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4580    #[derive(Clone)]
4581    pub struct ZeroAmount;
4582    #[allow(
4583        non_camel_case_types,
4584        non_snake_case,
4585        clippy::pub_underscore_fields,
4586        clippy::style
4587    )]
4588    const _: () = {
4589        use alloy::sol_types as alloy_sol_types;
4590        #[doc(hidden)]
4591        #[allow(dead_code)]
4592        type UnderlyingSolTuple<'a> = ();
4593        #[doc(hidden)]
4594        type UnderlyingRustTuple<'a> = ();
4595        #[cfg(test)]
4596        #[allow(dead_code, unreachable_patterns)]
4597        fn _type_assertion(
4598            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4599        ) {
4600            match _t {
4601                alloy_sol_types::private::AssertTypeEq::<
4602                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4603                >(_) => {}
4604            }
4605        }
4606        #[automatically_derived]
4607        #[doc(hidden)]
4608        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
4609            fn from(value: ZeroAmount) -> Self {
4610                ()
4611            }
4612        }
4613        #[automatically_derived]
4614        #[doc(hidden)]
4615        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
4616            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4617                Self
4618            }
4619        }
4620        #[automatically_derived]
4621        impl alloy_sol_types::SolError for ZeroAmount {
4622            type Parameters<'a> = UnderlyingSolTuple<'a>;
4623            type Token<'a> = <Self::Parameters<
4624                'a,
4625            > as alloy_sol_types::SolType>::Token<'a>;
4626            const SIGNATURE: &'static str = "ZeroAmount()";
4627            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
4628            #[inline]
4629            fn new<'a>(
4630                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4631            ) -> Self {
4632                tuple.into()
4633            }
4634            #[inline]
4635            fn tokenize(&self) -> Self::Token<'_> {
4636                ()
4637            }
4638            #[inline]
4639            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4640                <Self::Parameters<
4641                    '_,
4642                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4643                    .map(Self::new)
4644            }
4645        }
4646    };
4647    #[derive(serde::Serialize, serde::Deserialize)]
4648    #[derive()]
4649    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
4650```solidity
4651event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
4652```*/
4653    #[allow(
4654        non_camel_case_types,
4655        non_snake_case,
4656        clippy::pub_underscore_fields,
4657        clippy::style
4658    )]
4659    #[derive(Clone)]
4660    pub struct ConsensusKeysUpdated {
4661        #[allow(missing_docs)]
4662        pub account: alloy::sol_types::private::Address,
4663        #[allow(missing_docs)]
4664        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
4665        #[allow(missing_docs)]
4666        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
4667    }
4668    #[allow(
4669        non_camel_case_types,
4670        non_snake_case,
4671        clippy::pub_underscore_fields,
4672        clippy::style
4673    )]
4674    const _: () = {
4675        use alloy::sol_types as alloy_sol_types;
4676        #[automatically_derived]
4677        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
4678            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
4679            type DataToken<'a> = <Self::DataTuple<
4680                'a,
4681            > as alloy_sol_types::SolType>::Token<'a>;
4682            type TopicList = (
4683                alloy_sol_types::sol_data::FixedBytes<32>,
4684                alloy::sol_types::sol_data::Address,
4685            );
4686            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
4687            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4688                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
4689                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
4690                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
4691            ]);
4692            const ANONYMOUS: bool = false;
4693            #[allow(unused_variables)]
4694            #[inline]
4695            fn new(
4696                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4697                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4698            ) -> Self {
4699                Self {
4700                    account: topics.1,
4701                    blsVK: data.0,
4702                    schnorrVK: data.1,
4703                }
4704            }
4705            #[inline]
4706            fn check_signature(
4707                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4708            ) -> alloy_sol_types::Result<()> {
4709                if topics.0 != Self::SIGNATURE_HASH {
4710                    return Err(
4711                        alloy_sol_types::Error::invalid_event_signature_hash(
4712                            Self::SIGNATURE,
4713                            topics.0,
4714                            Self::SIGNATURE_HASH,
4715                        ),
4716                    );
4717                }
4718                Ok(())
4719            }
4720            #[inline]
4721            fn tokenize_body(&self) -> Self::DataToken<'_> {
4722                (
4723                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
4724                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
4725                        &self.schnorrVK,
4726                    ),
4727                )
4728            }
4729            #[inline]
4730            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4731                (Self::SIGNATURE_HASH.into(), self.account.clone())
4732            }
4733            #[inline]
4734            fn encode_topics_raw(
4735                &self,
4736                out: &mut [alloy_sol_types::abi::token::WordToken],
4737            ) -> alloy_sol_types::Result<()> {
4738                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4739                    return Err(alloy_sol_types::Error::Overrun);
4740                }
4741                out[0usize] = alloy_sol_types::abi::token::WordToken(
4742                    Self::SIGNATURE_HASH,
4743                );
4744                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4745                    &self.account,
4746                );
4747                Ok(())
4748            }
4749        }
4750        #[automatically_derived]
4751        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
4752            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4753                From::from(self)
4754            }
4755            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4756                From::from(&self)
4757            }
4758        }
4759        #[automatically_derived]
4760        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
4761            #[inline]
4762            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
4763                alloy_sol_types::SolEvent::encode_log_data(this)
4764            }
4765        }
4766    };
4767    #[derive(serde::Serialize, serde::Deserialize)]
4768    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4769    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
4770```solidity
4771event Delegated(address indexed delegator, address indexed validator, uint256 amount);
4772```*/
4773    #[allow(
4774        non_camel_case_types,
4775        non_snake_case,
4776        clippy::pub_underscore_fields,
4777        clippy::style
4778    )]
4779    #[derive(Clone)]
4780    pub struct Delegated {
4781        #[allow(missing_docs)]
4782        pub delegator: alloy::sol_types::private::Address,
4783        #[allow(missing_docs)]
4784        pub validator: alloy::sol_types::private::Address,
4785        #[allow(missing_docs)]
4786        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4787    }
4788    #[allow(
4789        non_camel_case_types,
4790        non_snake_case,
4791        clippy::pub_underscore_fields,
4792        clippy::style
4793    )]
4794    const _: () = {
4795        use alloy::sol_types as alloy_sol_types;
4796        #[automatically_derived]
4797        impl alloy_sol_types::SolEvent for Delegated {
4798            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4799            type DataToken<'a> = <Self::DataTuple<
4800                'a,
4801            > as alloy_sol_types::SolType>::Token<'a>;
4802            type TopicList = (
4803                alloy_sol_types::sol_data::FixedBytes<32>,
4804                alloy::sol_types::sol_data::Address,
4805                alloy::sol_types::sol_data::Address,
4806            );
4807            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
4808            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4809                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
4810                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
4811                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
4812            ]);
4813            const ANONYMOUS: bool = false;
4814            #[allow(unused_variables)]
4815            #[inline]
4816            fn new(
4817                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4818                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4819            ) -> Self {
4820                Self {
4821                    delegator: topics.1,
4822                    validator: topics.2,
4823                    amount: data.0,
4824                }
4825            }
4826            #[inline]
4827            fn check_signature(
4828                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4829            ) -> alloy_sol_types::Result<()> {
4830                if topics.0 != Self::SIGNATURE_HASH {
4831                    return Err(
4832                        alloy_sol_types::Error::invalid_event_signature_hash(
4833                            Self::SIGNATURE,
4834                            topics.0,
4835                            Self::SIGNATURE_HASH,
4836                        ),
4837                    );
4838                }
4839                Ok(())
4840            }
4841            #[inline]
4842            fn tokenize_body(&self) -> Self::DataToken<'_> {
4843                (
4844                    <alloy::sol_types::sol_data::Uint<
4845                        256,
4846                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4847                )
4848            }
4849            #[inline]
4850            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4851                (
4852                    Self::SIGNATURE_HASH.into(),
4853                    self.delegator.clone(),
4854                    self.validator.clone(),
4855                )
4856            }
4857            #[inline]
4858            fn encode_topics_raw(
4859                &self,
4860                out: &mut [alloy_sol_types::abi::token::WordToken],
4861            ) -> alloy_sol_types::Result<()> {
4862                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4863                    return Err(alloy_sol_types::Error::Overrun);
4864                }
4865                out[0usize] = alloy_sol_types::abi::token::WordToken(
4866                    Self::SIGNATURE_HASH,
4867                );
4868                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4869                    &self.delegator,
4870                );
4871                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4872                    &self.validator,
4873                );
4874                Ok(())
4875            }
4876        }
4877        #[automatically_derived]
4878        impl alloy_sol_types::private::IntoLogData for Delegated {
4879            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4880                From::from(self)
4881            }
4882            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4883                From::from(&self)
4884            }
4885        }
4886        #[automatically_derived]
4887        impl From<&Delegated> for alloy_sol_types::private::LogData {
4888            #[inline]
4889            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
4890                alloy_sol_types::SolEvent::encode_log_data(this)
4891            }
4892        }
4893    };
4894    #[derive(serde::Serialize, serde::Deserialize)]
4895    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4896    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
4897```solidity
4898event Initialized(uint64 version);
4899```*/
4900    #[allow(
4901        non_camel_case_types,
4902        non_snake_case,
4903        clippy::pub_underscore_fields,
4904        clippy::style
4905    )]
4906    #[derive(Clone)]
4907    pub struct Initialized {
4908        #[allow(missing_docs)]
4909        pub version: u64,
4910    }
4911    #[allow(
4912        non_camel_case_types,
4913        non_snake_case,
4914        clippy::pub_underscore_fields,
4915        clippy::style
4916    )]
4917    const _: () = {
4918        use alloy::sol_types as alloy_sol_types;
4919        #[automatically_derived]
4920        impl alloy_sol_types::SolEvent for Initialized {
4921            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
4922            type DataToken<'a> = <Self::DataTuple<
4923                'a,
4924            > as alloy_sol_types::SolType>::Token<'a>;
4925            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
4926            const SIGNATURE: &'static str = "Initialized(uint64)";
4927            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4928                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
4929                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
4930                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
4931            ]);
4932            const ANONYMOUS: bool = false;
4933            #[allow(unused_variables)]
4934            #[inline]
4935            fn new(
4936                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4937                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4938            ) -> Self {
4939                Self { version: data.0 }
4940            }
4941            #[inline]
4942            fn check_signature(
4943                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4944            ) -> alloy_sol_types::Result<()> {
4945                if topics.0 != Self::SIGNATURE_HASH {
4946                    return Err(
4947                        alloy_sol_types::Error::invalid_event_signature_hash(
4948                            Self::SIGNATURE,
4949                            topics.0,
4950                            Self::SIGNATURE_HASH,
4951                        ),
4952                    );
4953                }
4954                Ok(())
4955            }
4956            #[inline]
4957            fn tokenize_body(&self) -> Self::DataToken<'_> {
4958                (
4959                    <alloy::sol_types::sol_data::Uint<
4960                        64,
4961                    > as alloy_sol_types::SolType>::tokenize(&self.version),
4962                )
4963            }
4964            #[inline]
4965            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4966                (Self::SIGNATURE_HASH.into(),)
4967            }
4968            #[inline]
4969            fn encode_topics_raw(
4970                &self,
4971                out: &mut [alloy_sol_types::abi::token::WordToken],
4972            ) -> alloy_sol_types::Result<()> {
4973                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4974                    return Err(alloy_sol_types::Error::Overrun);
4975                }
4976                out[0usize] = alloy_sol_types::abi::token::WordToken(
4977                    Self::SIGNATURE_HASH,
4978                );
4979                Ok(())
4980            }
4981        }
4982        #[automatically_derived]
4983        impl alloy_sol_types::private::IntoLogData for Initialized {
4984            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4985                From::from(self)
4986            }
4987            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4988                From::from(&self)
4989            }
4990        }
4991        #[automatically_derived]
4992        impl From<&Initialized> for alloy_sol_types::private::LogData {
4993            #[inline]
4994            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
4995                alloy_sol_types::SolEvent::encode_log_data(this)
4996            }
4997        }
4998    };
4999    #[derive(serde::Serialize, serde::Deserialize)]
5000    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5001    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5002```solidity
5003event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5004```*/
5005    #[allow(
5006        non_camel_case_types,
5007        non_snake_case,
5008        clippy::pub_underscore_fields,
5009        clippy::style
5010    )]
5011    #[derive(Clone)]
5012    pub struct OwnershipTransferred {
5013        #[allow(missing_docs)]
5014        pub previousOwner: alloy::sol_types::private::Address,
5015        #[allow(missing_docs)]
5016        pub newOwner: alloy::sol_types::private::Address,
5017    }
5018    #[allow(
5019        non_camel_case_types,
5020        non_snake_case,
5021        clippy::pub_underscore_fields,
5022        clippy::style
5023    )]
5024    const _: () = {
5025        use alloy::sol_types as alloy_sol_types;
5026        #[automatically_derived]
5027        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5028            type DataTuple<'a> = ();
5029            type DataToken<'a> = <Self::DataTuple<
5030                'a,
5031            > as alloy_sol_types::SolType>::Token<'a>;
5032            type TopicList = (
5033                alloy_sol_types::sol_data::FixedBytes<32>,
5034                alloy::sol_types::sol_data::Address,
5035                alloy::sol_types::sol_data::Address,
5036            );
5037            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5038            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5039                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
5040                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
5041                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5042            ]);
5043            const ANONYMOUS: bool = false;
5044            #[allow(unused_variables)]
5045            #[inline]
5046            fn new(
5047                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5048                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5049            ) -> Self {
5050                Self {
5051                    previousOwner: topics.1,
5052                    newOwner: topics.2,
5053                }
5054            }
5055            #[inline]
5056            fn check_signature(
5057                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5058            ) -> alloy_sol_types::Result<()> {
5059                if topics.0 != Self::SIGNATURE_HASH {
5060                    return Err(
5061                        alloy_sol_types::Error::invalid_event_signature_hash(
5062                            Self::SIGNATURE,
5063                            topics.0,
5064                            Self::SIGNATURE_HASH,
5065                        ),
5066                    );
5067                }
5068                Ok(())
5069            }
5070            #[inline]
5071            fn tokenize_body(&self) -> Self::DataToken<'_> {
5072                ()
5073            }
5074            #[inline]
5075            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5076                (
5077                    Self::SIGNATURE_HASH.into(),
5078                    self.previousOwner.clone(),
5079                    self.newOwner.clone(),
5080                )
5081            }
5082            #[inline]
5083            fn encode_topics_raw(
5084                &self,
5085                out: &mut [alloy_sol_types::abi::token::WordToken],
5086            ) -> alloy_sol_types::Result<()> {
5087                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5088                    return Err(alloy_sol_types::Error::Overrun);
5089                }
5090                out[0usize] = alloy_sol_types::abi::token::WordToken(
5091                    Self::SIGNATURE_HASH,
5092                );
5093                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5094                    &self.previousOwner,
5095                );
5096                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5097                    &self.newOwner,
5098                );
5099                Ok(())
5100            }
5101        }
5102        #[automatically_derived]
5103        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5104            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5105                From::from(self)
5106            }
5107            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5108                From::from(&self)
5109            }
5110        }
5111        #[automatically_derived]
5112        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5113            #[inline]
5114            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5115                alloy_sol_types::SolEvent::encode_log_data(this)
5116            }
5117        }
5118    };
5119    #[derive(serde::Serialize, serde::Deserialize)]
5120    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5121    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
5122```solidity
5123event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
5124```*/
5125    #[allow(
5126        non_camel_case_types,
5127        non_snake_case,
5128        clippy::pub_underscore_fields,
5129        clippy::style
5130    )]
5131    #[derive(Clone)]
5132    pub struct Undelegated {
5133        #[allow(missing_docs)]
5134        pub delegator: alloy::sol_types::private::Address,
5135        #[allow(missing_docs)]
5136        pub validator: alloy::sol_types::private::Address,
5137        #[allow(missing_docs)]
5138        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5139    }
5140    #[allow(
5141        non_camel_case_types,
5142        non_snake_case,
5143        clippy::pub_underscore_fields,
5144        clippy::style
5145    )]
5146    const _: () = {
5147        use alloy::sol_types as alloy_sol_types;
5148        #[automatically_derived]
5149        impl alloy_sol_types::SolEvent for Undelegated {
5150            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5151            type DataToken<'a> = <Self::DataTuple<
5152                'a,
5153            > as alloy_sol_types::SolType>::Token<'a>;
5154            type TopicList = (
5155                alloy_sol_types::sol_data::FixedBytes<32>,
5156                alloy::sol_types::sol_data::Address,
5157                alloy::sol_types::sol_data::Address,
5158            );
5159            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
5160            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5161                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
5162                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
5163                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
5164            ]);
5165            const ANONYMOUS: bool = false;
5166            #[allow(unused_variables)]
5167            #[inline]
5168            fn new(
5169                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5170                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5171            ) -> Self {
5172                Self {
5173                    delegator: topics.1,
5174                    validator: topics.2,
5175                    amount: data.0,
5176                }
5177            }
5178            #[inline]
5179            fn check_signature(
5180                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5181            ) -> alloy_sol_types::Result<()> {
5182                if topics.0 != Self::SIGNATURE_HASH {
5183                    return Err(
5184                        alloy_sol_types::Error::invalid_event_signature_hash(
5185                            Self::SIGNATURE,
5186                            topics.0,
5187                            Self::SIGNATURE_HASH,
5188                        ),
5189                    );
5190                }
5191                Ok(())
5192            }
5193            #[inline]
5194            fn tokenize_body(&self) -> Self::DataToken<'_> {
5195                (
5196                    <alloy::sol_types::sol_data::Uint<
5197                        256,
5198                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5199                )
5200            }
5201            #[inline]
5202            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5203                (
5204                    Self::SIGNATURE_HASH.into(),
5205                    self.delegator.clone(),
5206                    self.validator.clone(),
5207                )
5208            }
5209            #[inline]
5210            fn encode_topics_raw(
5211                &self,
5212                out: &mut [alloy_sol_types::abi::token::WordToken],
5213            ) -> alloy_sol_types::Result<()> {
5214                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5215                    return Err(alloy_sol_types::Error::Overrun);
5216                }
5217                out[0usize] = alloy_sol_types::abi::token::WordToken(
5218                    Self::SIGNATURE_HASH,
5219                );
5220                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5221                    &self.delegator,
5222                );
5223                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5224                    &self.validator,
5225                );
5226                Ok(())
5227            }
5228        }
5229        #[automatically_derived]
5230        impl alloy_sol_types::private::IntoLogData for Undelegated {
5231            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5232                From::from(self)
5233            }
5234            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5235                From::from(&self)
5236            }
5237        }
5238        #[automatically_derived]
5239        impl From<&Undelegated> for alloy_sol_types::private::LogData {
5240            #[inline]
5241            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
5242                alloy_sol_types::SolEvent::encode_log_data(this)
5243            }
5244        }
5245    };
5246    #[derive(serde::Serialize, serde::Deserialize)]
5247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5248    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
5249```solidity
5250event Upgraded(address indexed implementation);
5251```*/
5252    #[allow(
5253        non_camel_case_types,
5254        non_snake_case,
5255        clippy::pub_underscore_fields,
5256        clippy::style
5257    )]
5258    #[derive(Clone)]
5259    pub struct Upgraded {
5260        #[allow(missing_docs)]
5261        pub implementation: alloy::sol_types::private::Address,
5262    }
5263    #[allow(
5264        non_camel_case_types,
5265        non_snake_case,
5266        clippy::pub_underscore_fields,
5267        clippy::style
5268    )]
5269    const _: () = {
5270        use alloy::sol_types as alloy_sol_types;
5271        #[automatically_derived]
5272        impl alloy_sol_types::SolEvent for Upgraded {
5273            type DataTuple<'a> = ();
5274            type DataToken<'a> = <Self::DataTuple<
5275                'a,
5276            > as alloy_sol_types::SolType>::Token<'a>;
5277            type TopicList = (
5278                alloy_sol_types::sol_data::FixedBytes<32>,
5279                alloy::sol_types::sol_data::Address,
5280            );
5281            const SIGNATURE: &'static str = "Upgraded(address)";
5282            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5283                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
5284                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
5285                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
5286            ]);
5287            const ANONYMOUS: bool = false;
5288            #[allow(unused_variables)]
5289            #[inline]
5290            fn new(
5291                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5292                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5293            ) -> Self {
5294                Self { implementation: topics.1 }
5295            }
5296            #[inline]
5297            fn check_signature(
5298                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5299            ) -> alloy_sol_types::Result<()> {
5300                if topics.0 != Self::SIGNATURE_HASH {
5301                    return Err(
5302                        alloy_sol_types::Error::invalid_event_signature_hash(
5303                            Self::SIGNATURE,
5304                            topics.0,
5305                            Self::SIGNATURE_HASH,
5306                        ),
5307                    );
5308                }
5309                Ok(())
5310            }
5311            #[inline]
5312            fn tokenize_body(&self) -> Self::DataToken<'_> {
5313                ()
5314            }
5315            #[inline]
5316            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5317                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
5318            }
5319            #[inline]
5320            fn encode_topics_raw(
5321                &self,
5322                out: &mut [alloy_sol_types::abi::token::WordToken],
5323            ) -> alloy_sol_types::Result<()> {
5324                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5325                    return Err(alloy_sol_types::Error::Overrun);
5326                }
5327                out[0usize] = alloy_sol_types::abi::token::WordToken(
5328                    Self::SIGNATURE_HASH,
5329                );
5330                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5331                    &self.implementation,
5332                );
5333                Ok(())
5334            }
5335        }
5336        #[automatically_derived]
5337        impl alloy_sol_types::private::IntoLogData for Upgraded {
5338            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5339                From::from(self)
5340            }
5341            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5342                From::from(&self)
5343            }
5344        }
5345        #[automatically_derived]
5346        impl From<&Upgraded> for alloy_sol_types::private::LogData {
5347            #[inline]
5348            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
5349                alloy_sol_types::SolEvent::encode_log_data(this)
5350            }
5351        }
5352    };
5353    #[derive(serde::Serialize, serde::Deserialize)]
5354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5355    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
5356```solidity
5357event ValidatorExit(address indexed validator);
5358```*/
5359    #[allow(
5360        non_camel_case_types,
5361        non_snake_case,
5362        clippy::pub_underscore_fields,
5363        clippy::style
5364    )]
5365    #[derive(Clone)]
5366    pub struct ValidatorExit {
5367        #[allow(missing_docs)]
5368        pub validator: alloy::sol_types::private::Address,
5369    }
5370    #[allow(
5371        non_camel_case_types,
5372        non_snake_case,
5373        clippy::pub_underscore_fields,
5374        clippy::style
5375    )]
5376    const _: () = {
5377        use alloy::sol_types as alloy_sol_types;
5378        #[automatically_derived]
5379        impl alloy_sol_types::SolEvent for ValidatorExit {
5380            type DataTuple<'a> = ();
5381            type DataToken<'a> = <Self::DataTuple<
5382                'a,
5383            > as alloy_sol_types::SolType>::Token<'a>;
5384            type TopicList = (
5385                alloy_sol_types::sol_data::FixedBytes<32>,
5386                alloy::sol_types::sol_data::Address,
5387            );
5388            const SIGNATURE: &'static str = "ValidatorExit(address)";
5389            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5390                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
5391                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
5392                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
5393            ]);
5394            const ANONYMOUS: bool = false;
5395            #[allow(unused_variables)]
5396            #[inline]
5397            fn new(
5398                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5399                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5400            ) -> Self {
5401                Self { validator: topics.1 }
5402            }
5403            #[inline]
5404            fn check_signature(
5405                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5406            ) -> alloy_sol_types::Result<()> {
5407                if topics.0 != Self::SIGNATURE_HASH {
5408                    return Err(
5409                        alloy_sol_types::Error::invalid_event_signature_hash(
5410                            Self::SIGNATURE,
5411                            topics.0,
5412                            Self::SIGNATURE_HASH,
5413                        ),
5414                    );
5415                }
5416                Ok(())
5417            }
5418            #[inline]
5419            fn tokenize_body(&self) -> Self::DataToken<'_> {
5420                ()
5421            }
5422            #[inline]
5423            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5424                (Self::SIGNATURE_HASH.into(), self.validator.clone())
5425            }
5426            #[inline]
5427            fn encode_topics_raw(
5428                &self,
5429                out: &mut [alloy_sol_types::abi::token::WordToken],
5430            ) -> alloy_sol_types::Result<()> {
5431                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5432                    return Err(alloy_sol_types::Error::Overrun);
5433                }
5434                out[0usize] = alloy_sol_types::abi::token::WordToken(
5435                    Self::SIGNATURE_HASH,
5436                );
5437                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5438                    &self.validator,
5439                );
5440                Ok(())
5441            }
5442        }
5443        #[automatically_derived]
5444        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
5445            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5446                From::from(self)
5447            }
5448            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5449                From::from(&self)
5450            }
5451        }
5452        #[automatically_derived]
5453        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
5454            #[inline]
5455            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
5456                alloy_sol_types::SolEvent::encode_log_data(this)
5457            }
5458        }
5459    };
5460    #[derive(serde::Serialize, serde::Deserialize)]
5461    #[derive()]
5462    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
5463```solidity
5464event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
5465```*/
5466    #[allow(
5467        non_camel_case_types,
5468        non_snake_case,
5469        clippy::pub_underscore_fields,
5470        clippy::style
5471    )]
5472    #[derive(Clone)]
5473    pub struct ValidatorRegistered {
5474        #[allow(missing_docs)]
5475        pub account: alloy::sol_types::private::Address,
5476        #[allow(missing_docs)]
5477        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5478        #[allow(missing_docs)]
5479        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
5480        #[allow(missing_docs)]
5481        pub commission: u16,
5482    }
5483    #[allow(
5484        non_camel_case_types,
5485        non_snake_case,
5486        clippy::pub_underscore_fields,
5487        clippy::style
5488    )]
5489    const _: () = {
5490        use alloy::sol_types as alloy_sol_types;
5491        #[automatically_derived]
5492        impl alloy_sol_types::SolEvent for ValidatorRegistered {
5493            type DataTuple<'a> = (
5494                BN254::G2Point,
5495                EdOnBN254::EdOnBN254Point,
5496                alloy::sol_types::sol_data::Uint<16>,
5497            );
5498            type DataToken<'a> = <Self::DataTuple<
5499                'a,
5500            > as alloy_sol_types::SolType>::Token<'a>;
5501            type TopicList = (
5502                alloy_sol_types::sol_data::FixedBytes<32>,
5503                alloy::sol_types::sol_data::Address,
5504            );
5505            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
5506            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5507                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
5508                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
5509                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
5510            ]);
5511            const ANONYMOUS: bool = false;
5512            #[allow(unused_variables)]
5513            #[inline]
5514            fn new(
5515                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5516                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5517            ) -> Self {
5518                Self {
5519                    account: topics.1,
5520                    blsVk: data.0,
5521                    schnorrVk: data.1,
5522                    commission: data.2,
5523                }
5524            }
5525            #[inline]
5526            fn check_signature(
5527                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5528            ) -> alloy_sol_types::Result<()> {
5529                if topics.0 != Self::SIGNATURE_HASH {
5530                    return Err(
5531                        alloy_sol_types::Error::invalid_event_signature_hash(
5532                            Self::SIGNATURE,
5533                            topics.0,
5534                            Self::SIGNATURE_HASH,
5535                        ),
5536                    );
5537                }
5538                Ok(())
5539            }
5540            #[inline]
5541            fn tokenize_body(&self) -> Self::DataToken<'_> {
5542                (
5543                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
5544                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
5545                        &self.schnorrVk,
5546                    ),
5547                    <alloy::sol_types::sol_data::Uint<
5548                        16,
5549                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
5550                )
5551            }
5552            #[inline]
5553            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5554                (Self::SIGNATURE_HASH.into(), self.account.clone())
5555            }
5556            #[inline]
5557            fn encode_topics_raw(
5558                &self,
5559                out: &mut [alloy_sol_types::abi::token::WordToken],
5560            ) -> alloy_sol_types::Result<()> {
5561                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5562                    return Err(alloy_sol_types::Error::Overrun);
5563                }
5564                out[0usize] = alloy_sol_types::abi::token::WordToken(
5565                    Self::SIGNATURE_HASH,
5566                );
5567                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5568                    &self.account,
5569                );
5570                Ok(())
5571            }
5572        }
5573        #[automatically_derived]
5574        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
5575            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5576                From::from(self)
5577            }
5578            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5579                From::from(&self)
5580            }
5581        }
5582        #[automatically_derived]
5583        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
5584            #[inline]
5585            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
5586                alloy_sol_types::SolEvent::encode_log_data(this)
5587            }
5588        }
5589    };
5590    #[derive(serde::Serialize, serde::Deserialize)]
5591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5592    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
5593```solidity
5594event Withdrawal(address indexed account, uint256 amount);
5595```*/
5596    #[allow(
5597        non_camel_case_types,
5598        non_snake_case,
5599        clippy::pub_underscore_fields,
5600        clippy::style
5601    )]
5602    #[derive(Clone)]
5603    pub struct Withdrawal {
5604        #[allow(missing_docs)]
5605        pub account: alloy::sol_types::private::Address,
5606        #[allow(missing_docs)]
5607        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5608    }
5609    #[allow(
5610        non_camel_case_types,
5611        non_snake_case,
5612        clippy::pub_underscore_fields,
5613        clippy::style
5614    )]
5615    const _: () = {
5616        use alloy::sol_types as alloy_sol_types;
5617        #[automatically_derived]
5618        impl alloy_sol_types::SolEvent for Withdrawal {
5619            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5620            type DataToken<'a> = <Self::DataTuple<
5621                'a,
5622            > as alloy_sol_types::SolType>::Token<'a>;
5623            type TopicList = (
5624                alloy_sol_types::sol_data::FixedBytes<32>,
5625                alloy::sol_types::sol_data::Address,
5626            );
5627            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
5628            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5629                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
5630                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
5631                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
5632            ]);
5633            const ANONYMOUS: bool = false;
5634            #[allow(unused_variables)]
5635            #[inline]
5636            fn new(
5637                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5638                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5639            ) -> Self {
5640                Self {
5641                    account: topics.1,
5642                    amount: data.0,
5643                }
5644            }
5645            #[inline]
5646            fn check_signature(
5647                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5648            ) -> alloy_sol_types::Result<()> {
5649                if topics.0 != Self::SIGNATURE_HASH {
5650                    return Err(
5651                        alloy_sol_types::Error::invalid_event_signature_hash(
5652                            Self::SIGNATURE,
5653                            topics.0,
5654                            Self::SIGNATURE_HASH,
5655                        ),
5656                    );
5657                }
5658                Ok(())
5659            }
5660            #[inline]
5661            fn tokenize_body(&self) -> Self::DataToken<'_> {
5662                (
5663                    <alloy::sol_types::sol_data::Uint<
5664                        256,
5665                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5666                )
5667            }
5668            #[inline]
5669            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5670                (Self::SIGNATURE_HASH.into(), self.account.clone())
5671            }
5672            #[inline]
5673            fn encode_topics_raw(
5674                &self,
5675                out: &mut [alloy_sol_types::abi::token::WordToken],
5676            ) -> alloy_sol_types::Result<()> {
5677                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5678                    return Err(alloy_sol_types::Error::Overrun);
5679                }
5680                out[0usize] = alloy_sol_types::abi::token::WordToken(
5681                    Self::SIGNATURE_HASH,
5682                );
5683                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5684                    &self.account,
5685                );
5686                Ok(())
5687            }
5688        }
5689        #[automatically_derived]
5690        impl alloy_sol_types::private::IntoLogData for Withdrawal {
5691            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5692                From::from(self)
5693            }
5694            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5695                From::from(&self)
5696            }
5697        }
5698        #[automatically_derived]
5699        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
5700            #[inline]
5701            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
5702                alloy_sol_types::SolEvent::encode_log_data(this)
5703            }
5704        }
5705    };
5706    /**Constructor`.
5707```solidity
5708constructor();
5709```*/
5710    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5711    #[derive(Clone)]
5712    pub struct constructorCall {}
5713    const _: () = {
5714        use alloy::sol_types as alloy_sol_types;
5715        {
5716            #[doc(hidden)]
5717            #[allow(dead_code)]
5718            type UnderlyingSolTuple<'a> = ();
5719            #[doc(hidden)]
5720            type UnderlyingRustTuple<'a> = ();
5721            #[cfg(test)]
5722            #[allow(dead_code, unreachable_patterns)]
5723            fn _type_assertion(
5724                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5725            ) {
5726                match _t {
5727                    alloy_sol_types::private::AssertTypeEq::<
5728                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5729                    >(_) => {}
5730                }
5731            }
5732            #[automatically_derived]
5733            #[doc(hidden)]
5734            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
5735                fn from(value: constructorCall) -> Self {
5736                    ()
5737                }
5738            }
5739            #[automatically_derived]
5740            #[doc(hidden)]
5741            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
5742                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5743                    Self {}
5744                }
5745            }
5746        }
5747        #[automatically_derived]
5748        impl alloy_sol_types::SolConstructor for constructorCall {
5749            type Parameters<'a> = ();
5750            type Token<'a> = <Self::Parameters<
5751                'a,
5752            > as alloy_sol_types::SolType>::Token<'a>;
5753            #[inline]
5754            fn new<'a>(
5755                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5756            ) -> Self {
5757                tuple.into()
5758            }
5759            #[inline]
5760            fn tokenize(&self) -> Self::Token<'_> {
5761                ()
5762            }
5763        }
5764    };
5765    #[derive(serde::Serialize, serde::Deserialize)]
5766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5767    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
5768```solidity
5769function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
5770```*/
5771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5772    #[derive(Clone)]
5773    pub struct UPGRADE_INTERFACE_VERSIONCall;
5774    #[derive(serde::Serialize, serde::Deserialize)]
5775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5776    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
5777    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5778    #[derive(Clone)]
5779    pub struct UPGRADE_INTERFACE_VERSIONReturn {
5780        #[allow(missing_docs)]
5781        pub _0: alloy::sol_types::private::String,
5782    }
5783    #[allow(
5784        non_camel_case_types,
5785        non_snake_case,
5786        clippy::pub_underscore_fields,
5787        clippy::style
5788    )]
5789    const _: () = {
5790        use alloy::sol_types as alloy_sol_types;
5791        {
5792            #[doc(hidden)]
5793            #[allow(dead_code)]
5794            type UnderlyingSolTuple<'a> = ();
5795            #[doc(hidden)]
5796            type UnderlyingRustTuple<'a> = ();
5797            #[cfg(test)]
5798            #[allow(dead_code, unreachable_patterns)]
5799            fn _type_assertion(
5800                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5801            ) {
5802                match _t {
5803                    alloy_sol_types::private::AssertTypeEq::<
5804                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5805                    >(_) => {}
5806                }
5807            }
5808            #[automatically_derived]
5809            #[doc(hidden)]
5810            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
5811            for UnderlyingRustTuple<'_> {
5812                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
5813                    ()
5814                }
5815            }
5816            #[automatically_derived]
5817            #[doc(hidden)]
5818            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5819            for UPGRADE_INTERFACE_VERSIONCall {
5820                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5821                    Self
5822                }
5823            }
5824        }
5825        {
5826            #[doc(hidden)]
5827            #[allow(dead_code)]
5828            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
5829            #[doc(hidden)]
5830            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
5831            #[cfg(test)]
5832            #[allow(dead_code, unreachable_patterns)]
5833            fn _type_assertion(
5834                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5835            ) {
5836                match _t {
5837                    alloy_sol_types::private::AssertTypeEq::<
5838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5839                    >(_) => {}
5840                }
5841            }
5842            #[automatically_derived]
5843            #[doc(hidden)]
5844            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
5845            for UnderlyingRustTuple<'_> {
5846                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
5847                    (value._0,)
5848                }
5849            }
5850            #[automatically_derived]
5851            #[doc(hidden)]
5852            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5853            for UPGRADE_INTERFACE_VERSIONReturn {
5854                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5855                    Self { _0: tuple.0 }
5856                }
5857            }
5858        }
5859        #[automatically_derived]
5860        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
5861            type Parameters<'a> = ();
5862            type Token<'a> = <Self::Parameters<
5863                'a,
5864            > as alloy_sol_types::SolType>::Token<'a>;
5865            type Return = alloy::sol_types::private::String;
5866            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
5867            type ReturnToken<'a> = <Self::ReturnTuple<
5868                'a,
5869            > as alloy_sol_types::SolType>::Token<'a>;
5870            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
5871            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
5872            #[inline]
5873            fn new<'a>(
5874                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5875            ) -> Self {
5876                tuple.into()
5877            }
5878            #[inline]
5879            fn tokenize(&self) -> Self::Token<'_> {
5880                ()
5881            }
5882            #[inline]
5883            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5884                (
5885                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
5886                        ret,
5887                    ),
5888                )
5889            }
5890            #[inline]
5891            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5892                <Self::ReturnTuple<
5893                    '_,
5894                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5895                    .map(|r| {
5896                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
5897                        r._0
5898                    })
5899            }
5900            #[inline]
5901            fn abi_decode_returns_validate(
5902                data: &[u8],
5903            ) -> alloy_sol_types::Result<Self::Return> {
5904                <Self::ReturnTuple<
5905                    '_,
5906                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5907                    .map(|r| {
5908                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
5909                        r._0
5910                    })
5911            }
5912        }
5913    };
5914    #[derive(serde::Serialize, serde::Deserialize)]
5915    #[derive()]
5916    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
5917```solidity
5918function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
5919```*/
5920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5921    #[derive(Clone)]
5922    pub struct _hashBlsKeyCall {
5923        #[allow(missing_docs)]
5924        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5925    }
5926    #[derive(serde::Serialize, serde::Deserialize)]
5927    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5928    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
5929    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5930    #[derive(Clone)]
5931    pub struct _hashBlsKeyReturn {
5932        #[allow(missing_docs)]
5933        pub _0: alloy::sol_types::private::FixedBytes<32>,
5934    }
5935    #[allow(
5936        non_camel_case_types,
5937        non_snake_case,
5938        clippy::pub_underscore_fields,
5939        clippy::style
5940    )]
5941    const _: () = {
5942        use alloy::sol_types as alloy_sol_types;
5943        {
5944            #[doc(hidden)]
5945            #[allow(dead_code)]
5946            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
5947            #[doc(hidden)]
5948            type UnderlyingRustTuple<'a> = (
5949                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5950            );
5951            #[cfg(test)]
5952            #[allow(dead_code, unreachable_patterns)]
5953            fn _type_assertion(
5954                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5955            ) {
5956                match _t {
5957                    alloy_sol_types::private::AssertTypeEq::<
5958                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5959                    >(_) => {}
5960                }
5961            }
5962            #[automatically_derived]
5963            #[doc(hidden)]
5964            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
5965                fn from(value: _hashBlsKeyCall) -> Self {
5966                    (value.blsVK,)
5967                }
5968            }
5969            #[automatically_derived]
5970            #[doc(hidden)]
5971            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
5972                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5973                    Self { blsVK: tuple.0 }
5974                }
5975            }
5976        }
5977        {
5978            #[doc(hidden)]
5979            #[allow(dead_code)]
5980            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5981            #[doc(hidden)]
5982            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5983            #[cfg(test)]
5984            #[allow(dead_code, unreachable_patterns)]
5985            fn _type_assertion(
5986                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5987            ) {
5988                match _t {
5989                    alloy_sol_types::private::AssertTypeEq::<
5990                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5991                    >(_) => {}
5992                }
5993            }
5994            #[automatically_derived]
5995            #[doc(hidden)]
5996            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
5997                fn from(value: _hashBlsKeyReturn) -> Self {
5998                    (value._0,)
5999                }
6000            }
6001            #[automatically_derived]
6002            #[doc(hidden)]
6003            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
6004                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6005                    Self { _0: tuple.0 }
6006                }
6007            }
6008        }
6009        #[automatically_derived]
6010        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
6011            type Parameters<'a> = (BN254::G2Point,);
6012            type Token<'a> = <Self::Parameters<
6013                'a,
6014            > as alloy_sol_types::SolType>::Token<'a>;
6015            type Return = alloy::sol_types::private::FixedBytes<32>;
6016            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6017            type ReturnToken<'a> = <Self::ReturnTuple<
6018                'a,
6019            > as alloy_sol_types::SolType>::Token<'a>;
6020            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
6021            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
6022            #[inline]
6023            fn new<'a>(
6024                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6025            ) -> Self {
6026                tuple.into()
6027            }
6028            #[inline]
6029            fn tokenize(&self) -> Self::Token<'_> {
6030                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
6031            }
6032            #[inline]
6033            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6034                (
6035                    <alloy::sol_types::sol_data::FixedBytes<
6036                        32,
6037                    > as alloy_sol_types::SolType>::tokenize(ret),
6038                )
6039            }
6040            #[inline]
6041            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6042                <Self::ReturnTuple<
6043                    '_,
6044                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6045                    .map(|r| {
6046                        let r: _hashBlsKeyReturn = r.into();
6047                        r._0
6048                    })
6049            }
6050            #[inline]
6051            fn abi_decode_returns_validate(
6052                data: &[u8],
6053            ) -> alloy_sol_types::Result<Self::Return> {
6054                <Self::ReturnTuple<
6055                    '_,
6056                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6057                    .map(|r| {
6058                        let r: _hashBlsKeyReturn = r.into();
6059                        r._0
6060                    })
6061            }
6062        }
6063    };
6064    #[derive(serde::Serialize, serde::Deserialize)]
6065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6066    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
6067```solidity
6068function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
6069```*/
6070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6071    #[derive(Clone)]
6072    pub struct blsKeysCall {
6073        #[allow(missing_docs)]
6074        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
6075    }
6076    #[derive(serde::Serialize, serde::Deserialize)]
6077    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6078    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
6079    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6080    #[derive(Clone)]
6081    pub struct blsKeysReturn {
6082        #[allow(missing_docs)]
6083        pub used: bool,
6084    }
6085    #[allow(
6086        non_camel_case_types,
6087        non_snake_case,
6088        clippy::pub_underscore_fields,
6089        clippy::style
6090    )]
6091    const _: () = {
6092        use alloy::sol_types as alloy_sol_types;
6093        {
6094            #[doc(hidden)]
6095            #[allow(dead_code)]
6096            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6097            #[doc(hidden)]
6098            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6099            #[cfg(test)]
6100            #[allow(dead_code, unreachable_patterns)]
6101            fn _type_assertion(
6102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6103            ) {
6104                match _t {
6105                    alloy_sol_types::private::AssertTypeEq::<
6106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6107                    >(_) => {}
6108                }
6109            }
6110            #[automatically_derived]
6111            #[doc(hidden)]
6112            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
6113                fn from(value: blsKeysCall) -> Self {
6114                    (value.blsKeyHash,)
6115                }
6116            }
6117            #[automatically_derived]
6118            #[doc(hidden)]
6119            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
6120                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6121                    Self { blsKeyHash: tuple.0 }
6122                }
6123            }
6124        }
6125        {
6126            #[doc(hidden)]
6127            #[allow(dead_code)]
6128            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6129            #[doc(hidden)]
6130            type UnderlyingRustTuple<'a> = (bool,);
6131            #[cfg(test)]
6132            #[allow(dead_code, unreachable_patterns)]
6133            fn _type_assertion(
6134                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6135            ) {
6136                match _t {
6137                    alloy_sol_types::private::AssertTypeEq::<
6138                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6139                    >(_) => {}
6140                }
6141            }
6142            #[automatically_derived]
6143            #[doc(hidden)]
6144            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
6145                fn from(value: blsKeysReturn) -> Self {
6146                    (value.used,)
6147                }
6148            }
6149            #[automatically_derived]
6150            #[doc(hidden)]
6151            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
6152                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6153                    Self { used: tuple.0 }
6154                }
6155            }
6156        }
6157        #[automatically_derived]
6158        impl alloy_sol_types::SolCall for blsKeysCall {
6159            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6160            type Token<'a> = <Self::Parameters<
6161                'a,
6162            > as alloy_sol_types::SolType>::Token<'a>;
6163            type Return = bool;
6164            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6165            type ReturnToken<'a> = <Self::ReturnTuple<
6166                'a,
6167            > as alloy_sol_types::SolType>::Token<'a>;
6168            const SIGNATURE: &'static str = "blsKeys(bytes32)";
6169            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
6170            #[inline]
6171            fn new<'a>(
6172                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6173            ) -> Self {
6174                tuple.into()
6175            }
6176            #[inline]
6177            fn tokenize(&self) -> Self::Token<'_> {
6178                (
6179                    <alloy::sol_types::sol_data::FixedBytes<
6180                        32,
6181                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
6182                )
6183            }
6184            #[inline]
6185            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6186                (
6187                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6188                        ret,
6189                    ),
6190                )
6191            }
6192            #[inline]
6193            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6194                <Self::ReturnTuple<
6195                    '_,
6196                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6197                    .map(|r| {
6198                        let r: blsKeysReturn = r.into();
6199                        r.used
6200                    })
6201            }
6202            #[inline]
6203            fn abi_decode_returns_validate(
6204                data: &[u8],
6205            ) -> alloy_sol_types::Result<Self::Return> {
6206                <Self::ReturnTuple<
6207                    '_,
6208                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6209                    .map(|r| {
6210                        let r: blsKeysReturn = r.into();
6211                        r.used
6212                    })
6213            }
6214        }
6215    };
6216    #[derive(serde::Serialize, serde::Deserialize)]
6217    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6218    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
6219```solidity
6220function claimValidatorExit(address validator) external;
6221```*/
6222    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6223    #[derive(Clone)]
6224    pub struct claimValidatorExitCall {
6225        #[allow(missing_docs)]
6226        pub validator: alloy::sol_types::private::Address,
6227    }
6228    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
6229    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6230    #[derive(Clone)]
6231    pub struct claimValidatorExitReturn {}
6232    #[allow(
6233        non_camel_case_types,
6234        non_snake_case,
6235        clippy::pub_underscore_fields,
6236        clippy::style
6237    )]
6238    const _: () = {
6239        use alloy::sol_types as alloy_sol_types;
6240        {
6241            #[doc(hidden)]
6242            #[allow(dead_code)]
6243            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6244            #[doc(hidden)]
6245            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6246            #[cfg(test)]
6247            #[allow(dead_code, unreachable_patterns)]
6248            fn _type_assertion(
6249                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6250            ) {
6251                match _t {
6252                    alloy_sol_types::private::AssertTypeEq::<
6253                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6254                    >(_) => {}
6255                }
6256            }
6257            #[automatically_derived]
6258            #[doc(hidden)]
6259            impl ::core::convert::From<claimValidatorExitCall>
6260            for UnderlyingRustTuple<'_> {
6261                fn from(value: claimValidatorExitCall) -> Self {
6262                    (value.validator,)
6263                }
6264            }
6265            #[automatically_derived]
6266            #[doc(hidden)]
6267            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6268            for claimValidatorExitCall {
6269                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6270                    Self { validator: tuple.0 }
6271                }
6272            }
6273        }
6274        {
6275            #[doc(hidden)]
6276            #[allow(dead_code)]
6277            type UnderlyingSolTuple<'a> = ();
6278            #[doc(hidden)]
6279            type UnderlyingRustTuple<'a> = ();
6280            #[cfg(test)]
6281            #[allow(dead_code, unreachable_patterns)]
6282            fn _type_assertion(
6283                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6284            ) {
6285                match _t {
6286                    alloy_sol_types::private::AssertTypeEq::<
6287                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6288                    >(_) => {}
6289                }
6290            }
6291            #[automatically_derived]
6292            #[doc(hidden)]
6293            impl ::core::convert::From<claimValidatorExitReturn>
6294            for UnderlyingRustTuple<'_> {
6295                fn from(value: claimValidatorExitReturn) -> Self {
6296                    ()
6297                }
6298            }
6299            #[automatically_derived]
6300            #[doc(hidden)]
6301            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6302            for claimValidatorExitReturn {
6303                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6304                    Self {}
6305                }
6306            }
6307        }
6308        impl claimValidatorExitReturn {
6309            fn _tokenize(
6310                &self,
6311            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6312                ()
6313            }
6314        }
6315        #[automatically_derived]
6316        impl alloy_sol_types::SolCall for claimValidatorExitCall {
6317            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6318            type Token<'a> = <Self::Parameters<
6319                'a,
6320            > as alloy_sol_types::SolType>::Token<'a>;
6321            type Return = claimValidatorExitReturn;
6322            type ReturnTuple<'a> = ();
6323            type ReturnToken<'a> = <Self::ReturnTuple<
6324                'a,
6325            > as alloy_sol_types::SolType>::Token<'a>;
6326            const SIGNATURE: &'static str = "claimValidatorExit(address)";
6327            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
6328            #[inline]
6329            fn new<'a>(
6330                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6331            ) -> Self {
6332                tuple.into()
6333            }
6334            #[inline]
6335            fn tokenize(&self) -> Self::Token<'_> {
6336                (
6337                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6338                        &self.validator,
6339                    ),
6340                )
6341            }
6342            #[inline]
6343            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6344                claimValidatorExitReturn::_tokenize(ret)
6345            }
6346            #[inline]
6347            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6348                <Self::ReturnTuple<
6349                    '_,
6350                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6351                    .map(Into::into)
6352            }
6353            #[inline]
6354            fn abi_decode_returns_validate(
6355                data: &[u8],
6356            ) -> alloy_sol_types::Result<Self::Return> {
6357                <Self::ReturnTuple<
6358                    '_,
6359                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6360                    .map(Into::into)
6361            }
6362        }
6363    };
6364    #[derive(serde::Serialize, serde::Deserialize)]
6365    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6366    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
6367```solidity
6368function claimWithdrawal(address validator) external;
6369```*/
6370    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6371    #[derive(Clone)]
6372    pub struct claimWithdrawalCall {
6373        #[allow(missing_docs)]
6374        pub validator: alloy::sol_types::private::Address,
6375    }
6376    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
6377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6378    #[derive(Clone)]
6379    pub struct claimWithdrawalReturn {}
6380    #[allow(
6381        non_camel_case_types,
6382        non_snake_case,
6383        clippy::pub_underscore_fields,
6384        clippy::style
6385    )]
6386    const _: () = {
6387        use alloy::sol_types as alloy_sol_types;
6388        {
6389            #[doc(hidden)]
6390            #[allow(dead_code)]
6391            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6392            #[doc(hidden)]
6393            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6394            #[cfg(test)]
6395            #[allow(dead_code, unreachable_patterns)]
6396            fn _type_assertion(
6397                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6398            ) {
6399                match _t {
6400                    alloy_sol_types::private::AssertTypeEq::<
6401                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6402                    >(_) => {}
6403                }
6404            }
6405            #[automatically_derived]
6406            #[doc(hidden)]
6407            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
6408                fn from(value: claimWithdrawalCall) -> Self {
6409                    (value.validator,)
6410                }
6411            }
6412            #[automatically_derived]
6413            #[doc(hidden)]
6414            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
6415                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6416                    Self { validator: tuple.0 }
6417                }
6418            }
6419        }
6420        {
6421            #[doc(hidden)]
6422            #[allow(dead_code)]
6423            type UnderlyingSolTuple<'a> = ();
6424            #[doc(hidden)]
6425            type UnderlyingRustTuple<'a> = ();
6426            #[cfg(test)]
6427            #[allow(dead_code, unreachable_patterns)]
6428            fn _type_assertion(
6429                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6430            ) {
6431                match _t {
6432                    alloy_sol_types::private::AssertTypeEq::<
6433                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6434                    >(_) => {}
6435                }
6436            }
6437            #[automatically_derived]
6438            #[doc(hidden)]
6439            impl ::core::convert::From<claimWithdrawalReturn>
6440            for UnderlyingRustTuple<'_> {
6441                fn from(value: claimWithdrawalReturn) -> Self {
6442                    ()
6443                }
6444            }
6445            #[automatically_derived]
6446            #[doc(hidden)]
6447            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6448            for claimWithdrawalReturn {
6449                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6450                    Self {}
6451                }
6452            }
6453        }
6454        impl claimWithdrawalReturn {
6455            fn _tokenize(
6456                &self,
6457            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6458                ()
6459            }
6460        }
6461        #[automatically_derived]
6462        impl alloy_sol_types::SolCall for claimWithdrawalCall {
6463            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6464            type Token<'a> = <Self::Parameters<
6465                'a,
6466            > as alloy_sol_types::SolType>::Token<'a>;
6467            type Return = claimWithdrawalReturn;
6468            type ReturnTuple<'a> = ();
6469            type ReturnToken<'a> = <Self::ReturnTuple<
6470                'a,
6471            > as alloy_sol_types::SolType>::Token<'a>;
6472            const SIGNATURE: &'static str = "claimWithdrawal(address)";
6473            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
6474            #[inline]
6475            fn new<'a>(
6476                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6477            ) -> Self {
6478                tuple.into()
6479            }
6480            #[inline]
6481            fn tokenize(&self) -> Self::Token<'_> {
6482                (
6483                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6484                        &self.validator,
6485                    ),
6486                )
6487            }
6488            #[inline]
6489            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6490                claimWithdrawalReturn::_tokenize(ret)
6491            }
6492            #[inline]
6493            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6494                <Self::ReturnTuple<
6495                    '_,
6496                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6497                    .map(Into::into)
6498            }
6499            #[inline]
6500            fn abi_decode_returns_validate(
6501                data: &[u8],
6502            ) -> alloy_sol_types::Result<Self::Return> {
6503                <Self::ReturnTuple<
6504                    '_,
6505                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6506                    .map(Into::into)
6507            }
6508        }
6509    };
6510    #[derive(serde::Serialize, serde::Deserialize)]
6511    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6512    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
6513```solidity
6514function delegate(address validator, uint256 amount) external;
6515```*/
6516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6517    #[derive(Clone)]
6518    pub struct delegateCall {
6519        #[allow(missing_docs)]
6520        pub validator: alloy::sol_types::private::Address,
6521        #[allow(missing_docs)]
6522        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6523    }
6524    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
6525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6526    #[derive(Clone)]
6527    pub struct delegateReturn {}
6528    #[allow(
6529        non_camel_case_types,
6530        non_snake_case,
6531        clippy::pub_underscore_fields,
6532        clippy::style
6533    )]
6534    const _: () = {
6535        use alloy::sol_types as alloy_sol_types;
6536        {
6537            #[doc(hidden)]
6538            #[allow(dead_code)]
6539            type UnderlyingSolTuple<'a> = (
6540                alloy::sol_types::sol_data::Address,
6541                alloy::sol_types::sol_data::Uint<256>,
6542            );
6543            #[doc(hidden)]
6544            type UnderlyingRustTuple<'a> = (
6545                alloy::sol_types::private::Address,
6546                alloy::sol_types::private::primitives::aliases::U256,
6547            );
6548            #[cfg(test)]
6549            #[allow(dead_code, unreachable_patterns)]
6550            fn _type_assertion(
6551                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6552            ) {
6553                match _t {
6554                    alloy_sol_types::private::AssertTypeEq::<
6555                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6556                    >(_) => {}
6557                }
6558            }
6559            #[automatically_derived]
6560            #[doc(hidden)]
6561            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
6562                fn from(value: delegateCall) -> Self {
6563                    (value.validator, value.amount)
6564                }
6565            }
6566            #[automatically_derived]
6567            #[doc(hidden)]
6568            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
6569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6570                    Self {
6571                        validator: tuple.0,
6572                        amount: tuple.1,
6573                    }
6574                }
6575            }
6576        }
6577        {
6578            #[doc(hidden)]
6579            #[allow(dead_code)]
6580            type UnderlyingSolTuple<'a> = ();
6581            #[doc(hidden)]
6582            type UnderlyingRustTuple<'a> = ();
6583            #[cfg(test)]
6584            #[allow(dead_code, unreachable_patterns)]
6585            fn _type_assertion(
6586                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6587            ) {
6588                match _t {
6589                    alloy_sol_types::private::AssertTypeEq::<
6590                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6591                    >(_) => {}
6592                }
6593            }
6594            #[automatically_derived]
6595            #[doc(hidden)]
6596            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
6597                fn from(value: delegateReturn) -> Self {
6598                    ()
6599                }
6600            }
6601            #[automatically_derived]
6602            #[doc(hidden)]
6603            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
6604                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6605                    Self {}
6606                }
6607            }
6608        }
6609        impl delegateReturn {
6610            fn _tokenize(
6611                &self,
6612            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6613                ()
6614            }
6615        }
6616        #[automatically_derived]
6617        impl alloy_sol_types::SolCall for delegateCall {
6618            type Parameters<'a> = (
6619                alloy::sol_types::sol_data::Address,
6620                alloy::sol_types::sol_data::Uint<256>,
6621            );
6622            type Token<'a> = <Self::Parameters<
6623                'a,
6624            > as alloy_sol_types::SolType>::Token<'a>;
6625            type Return = delegateReturn;
6626            type ReturnTuple<'a> = ();
6627            type ReturnToken<'a> = <Self::ReturnTuple<
6628                'a,
6629            > as alloy_sol_types::SolType>::Token<'a>;
6630            const SIGNATURE: &'static str = "delegate(address,uint256)";
6631            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
6632            #[inline]
6633            fn new<'a>(
6634                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6635            ) -> Self {
6636                tuple.into()
6637            }
6638            #[inline]
6639            fn tokenize(&self) -> Self::Token<'_> {
6640                (
6641                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6642                        &self.validator,
6643                    ),
6644                    <alloy::sol_types::sol_data::Uint<
6645                        256,
6646                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
6647                )
6648            }
6649            #[inline]
6650            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6651                delegateReturn::_tokenize(ret)
6652            }
6653            #[inline]
6654            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6655                <Self::ReturnTuple<
6656                    '_,
6657                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6658                    .map(Into::into)
6659            }
6660            #[inline]
6661            fn abi_decode_returns_validate(
6662                data: &[u8],
6663            ) -> alloy_sol_types::Result<Self::Return> {
6664                <Self::ReturnTuple<
6665                    '_,
6666                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6667                    .map(Into::into)
6668            }
6669        }
6670    };
6671    #[derive(serde::Serialize, serde::Deserialize)]
6672    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6673    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
6674```solidity
6675function delegations(address validator, address delegator) external view returns (uint256 amount);
6676```*/
6677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6678    #[derive(Clone)]
6679    pub struct delegationsCall {
6680        #[allow(missing_docs)]
6681        pub validator: alloy::sol_types::private::Address,
6682        #[allow(missing_docs)]
6683        pub delegator: alloy::sol_types::private::Address,
6684    }
6685    #[derive(serde::Serialize, serde::Deserialize)]
6686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6687    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
6688    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6689    #[derive(Clone)]
6690    pub struct delegationsReturn {
6691        #[allow(missing_docs)]
6692        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6693    }
6694    #[allow(
6695        non_camel_case_types,
6696        non_snake_case,
6697        clippy::pub_underscore_fields,
6698        clippy::style
6699    )]
6700    const _: () = {
6701        use alloy::sol_types as alloy_sol_types;
6702        {
6703            #[doc(hidden)]
6704            #[allow(dead_code)]
6705            type UnderlyingSolTuple<'a> = (
6706                alloy::sol_types::sol_data::Address,
6707                alloy::sol_types::sol_data::Address,
6708            );
6709            #[doc(hidden)]
6710            type UnderlyingRustTuple<'a> = (
6711                alloy::sol_types::private::Address,
6712                alloy::sol_types::private::Address,
6713            );
6714            #[cfg(test)]
6715            #[allow(dead_code, unreachable_patterns)]
6716            fn _type_assertion(
6717                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6718            ) {
6719                match _t {
6720                    alloy_sol_types::private::AssertTypeEq::<
6721                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6722                    >(_) => {}
6723                }
6724            }
6725            #[automatically_derived]
6726            #[doc(hidden)]
6727            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
6728                fn from(value: delegationsCall) -> Self {
6729                    (value.validator, value.delegator)
6730                }
6731            }
6732            #[automatically_derived]
6733            #[doc(hidden)]
6734            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
6735                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6736                    Self {
6737                        validator: tuple.0,
6738                        delegator: tuple.1,
6739                    }
6740                }
6741            }
6742        }
6743        {
6744            #[doc(hidden)]
6745            #[allow(dead_code)]
6746            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6747            #[doc(hidden)]
6748            type UnderlyingRustTuple<'a> = (
6749                alloy::sol_types::private::primitives::aliases::U256,
6750            );
6751            #[cfg(test)]
6752            #[allow(dead_code, unreachable_patterns)]
6753            fn _type_assertion(
6754                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6755            ) {
6756                match _t {
6757                    alloy_sol_types::private::AssertTypeEq::<
6758                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6759                    >(_) => {}
6760                }
6761            }
6762            #[automatically_derived]
6763            #[doc(hidden)]
6764            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
6765                fn from(value: delegationsReturn) -> Self {
6766                    (value.amount,)
6767                }
6768            }
6769            #[automatically_derived]
6770            #[doc(hidden)]
6771            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
6772                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6773                    Self { amount: tuple.0 }
6774                }
6775            }
6776        }
6777        #[automatically_derived]
6778        impl alloy_sol_types::SolCall for delegationsCall {
6779            type Parameters<'a> = (
6780                alloy::sol_types::sol_data::Address,
6781                alloy::sol_types::sol_data::Address,
6782            );
6783            type Token<'a> = <Self::Parameters<
6784                'a,
6785            > as alloy_sol_types::SolType>::Token<'a>;
6786            type Return = alloy::sol_types::private::primitives::aliases::U256;
6787            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6788            type ReturnToken<'a> = <Self::ReturnTuple<
6789                'a,
6790            > as alloy_sol_types::SolType>::Token<'a>;
6791            const SIGNATURE: &'static str = "delegations(address,address)";
6792            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
6793            #[inline]
6794            fn new<'a>(
6795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6796            ) -> Self {
6797                tuple.into()
6798            }
6799            #[inline]
6800            fn tokenize(&self) -> Self::Token<'_> {
6801                (
6802                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6803                        &self.validator,
6804                    ),
6805                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6806                        &self.delegator,
6807                    ),
6808                )
6809            }
6810            #[inline]
6811            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6812                (
6813                    <alloy::sol_types::sol_data::Uint<
6814                        256,
6815                    > as alloy_sol_types::SolType>::tokenize(ret),
6816                )
6817            }
6818            #[inline]
6819            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6820                <Self::ReturnTuple<
6821                    '_,
6822                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6823                    .map(|r| {
6824                        let r: delegationsReturn = r.into();
6825                        r.amount
6826                    })
6827            }
6828            #[inline]
6829            fn abi_decode_returns_validate(
6830                data: &[u8],
6831            ) -> alloy_sol_types::Result<Self::Return> {
6832                <Self::ReturnTuple<
6833                    '_,
6834                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6835                    .map(|r| {
6836                        let r: delegationsReturn = r.into();
6837                        r.amount
6838                    })
6839            }
6840        }
6841    };
6842    #[derive(serde::Serialize, serde::Deserialize)]
6843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6844    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
6845```solidity
6846function deregisterValidator() external;
6847```*/
6848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6849    #[derive(Clone)]
6850    pub struct deregisterValidatorCall;
6851    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
6852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6853    #[derive(Clone)]
6854    pub struct deregisterValidatorReturn {}
6855    #[allow(
6856        non_camel_case_types,
6857        non_snake_case,
6858        clippy::pub_underscore_fields,
6859        clippy::style
6860    )]
6861    const _: () = {
6862        use alloy::sol_types as alloy_sol_types;
6863        {
6864            #[doc(hidden)]
6865            #[allow(dead_code)]
6866            type UnderlyingSolTuple<'a> = ();
6867            #[doc(hidden)]
6868            type UnderlyingRustTuple<'a> = ();
6869            #[cfg(test)]
6870            #[allow(dead_code, unreachable_patterns)]
6871            fn _type_assertion(
6872                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6873            ) {
6874                match _t {
6875                    alloy_sol_types::private::AssertTypeEq::<
6876                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6877                    >(_) => {}
6878                }
6879            }
6880            #[automatically_derived]
6881            #[doc(hidden)]
6882            impl ::core::convert::From<deregisterValidatorCall>
6883            for UnderlyingRustTuple<'_> {
6884                fn from(value: deregisterValidatorCall) -> Self {
6885                    ()
6886                }
6887            }
6888            #[automatically_derived]
6889            #[doc(hidden)]
6890            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6891            for deregisterValidatorCall {
6892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6893                    Self
6894                }
6895            }
6896        }
6897        {
6898            #[doc(hidden)]
6899            #[allow(dead_code)]
6900            type UnderlyingSolTuple<'a> = ();
6901            #[doc(hidden)]
6902            type UnderlyingRustTuple<'a> = ();
6903            #[cfg(test)]
6904            #[allow(dead_code, unreachable_patterns)]
6905            fn _type_assertion(
6906                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6907            ) {
6908                match _t {
6909                    alloy_sol_types::private::AssertTypeEq::<
6910                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6911                    >(_) => {}
6912                }
6913            }
6914            #[automatically_derived]
6915            #[doc(hidden)]
6916            impl ::core::convert::From<deregisterValidatorReturn>
6917            for UnderlyingRustTuple<'_> {
6918                fn from(value: deregisterValidatorReturn) -> Self {
6919                    ()
6920                }
6921            }
6922            #[automatically_derived]
6923            #[doc(hidden)]
6924            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6925            for deregisterValidatorReturn {
6926                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6927                    Self {}
6928                }
6929            }
6930        }
6931        impl deregisterValidatorReturn {
6932            fn _tokenize(
6933                &self,
6934            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6935                ()
6936            }
6937        }
6938        #[automatically_derived]
6939        impl alloy_sol_types::SolCall for deregisterValidatorCall {
6940            type Parameters<'a> = ();
6941            type Token<'a> = <Self::Parameters<
6942                'a,
6943            > as alloy_sol_types::SolType>::Token<'a>;
6944            type Return = deregisterValidatorReturn;
6945            type ReturnTuple<'a> = ();
6946            type ReturnToken<'a> = <Self::ReturnTuple<
6947                'a,
6948            > as alloy_sol_types::SolType>::Token<'a>;
6949            const SIGNATURE: &'static str = "deregisterValidator()";
6950            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
6951            #[inline]
6952            fn new<'a>(
6953                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6954            ) -> Self {
6955                tuple.into()
6956            }
6957            #[inline]
6958            fn tokenize(&self) -> Self::Token<'_> {
6959                ()
6960            }
6961            #[inline]
6962            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6963                deregisterValidatorReturn::_tokenize(ret)
6964            }
6965            #[inline]
6966            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6967                <Self::ReturnTuple<
6968                    '_,
6969                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6970                    .map(Into::into)
6971            }
6972            #[inline]
6973            fn abi_decode_returns_validate(
6974                data: &[u8],
6975            ) -> alloy_sol_types::Result<Self::Return> {
6976                <Self::ReturnTuple<
6977                    '_,
6978                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6979                    .map(Into::into)
6980            }
6981        }
6982    };
6983    #[derive(serde::Serialize, serde::Deserialize)]
6984    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6985    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
6986```solidity
6987function exitEscrowPeriod() external view returns (uint256);
6988```*/
6989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6990    #[derive(Clone)]
6991    pub struct exitEscrowPeriodCall;
6992    #[derive(serde::Serialize, serde::Deserialize)]
6993    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6994    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
6995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6996    #[derive(Clone)]
6997    pub struct exitEscrowPeriodReturn {
6998        #[allow(missing_docs)]
6999        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7000    }
7001    #[allow(
7002        non_camel_case_types,
7003        non_snake_case,
7004        clippy::pub_underscore_fields,
7005        clippy::style
7006    )]
7007    const _: () = {
7008        use alloy::sol_types as alloy_sol_types;
7009        {
7010            #[doc(hidden)]
7011            #[allow(dead_code)]
7012            type UnderlyingSolTuple<'a> = ();
7013            #[doc(hidden)]
7014            type UnderlyingRustTuple<'a> = ();
7015            #[cfg(test)]
7016            #[allow(dead_code, unreachable_patterns)]
7017            fn _type_assertion(
7018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7019            ) {
7020                match _t {
7021                    alloy_sol_types::private::AssertTypeEq::<
7022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7023                    >(_) => {}
7024                }
7025            }
7026            #[automatically_derived]
7027            #[doc(hidden)]
7028            impl ::core::convert::From<exitEscrowPeriodCall>
7029            for UnderlyingRustTuple<'_> {
7030                fn from(value: exitEscrowPeriodCall) -> Self {
7031                    ()
7032                }
7033            }
7034            #[automatically_derived]
7035            #[doc(hidden)]
7036            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7037            for exitEscrowPeriodCall {
7038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7039                    Self
7040                }
7041            }
7042        }
7043        {
7044            #[doc(hidden)]
7045            #[allow(dead_code)]
7046            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7047            #[doc(hidden)]
7048            type UnderlyingRustTuple<'a> = (
7049                alloy::sol_types::private::primitives::aliases::U256,
7050            );
7051            #[cfg(test)]
7052            #[allow(dead_code, unreachable_patterns)]
7053            fn _type_assertion(
7054                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7055            ) {
7056                match _t {
7057                    alloy_sol_types::private::AssertTypeEq::<
7058                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7059                    >(_) => {}
7060                }
7061            }
7062            #[automatically_derived]
7063            #[doc(hidden)]
7064            impl ::core::convert::From<exitEscrowPeriodReturn>
7065            for UnderlyingRustTuple<'_> {
7066                fn from(value: exitEscrowPeriodReturn) -> Self {
7067                    (value._0,)
7068                }
7069            }
7070            #[automatically_derived]
7071            #[doc(hidden)]
7072            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7073            for exitEscrowPeriodReturn {
7074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7075                    Self { _0: tuple.0 }
7076                }
7077            }
7078        }
7079        #[automatically_derived]
7080        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
7081            type Parameters<'a> = ();
7082            type Token<'a> = <Self::Parameters<
7083                'a,
7084            > as alloy_sol_types::SolType>::Token<'a>;
7085            type Return = alloy::sol_types::private::primitives::aliases::U256;
7086            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7087            type ReturnToken<'a> = <Self::ReturnTuple<
7088                'a,
7089            > as alloy_sol_types::SolType>::Token<'a>;
7090            const SIGNATURE: &'static str = "exitEscrowPeriod()";
7091            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
7092            #[inline]
7093            fn new<'a>(
7094                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7095            ) -> Self {
7096                tuple.into()
7097            }
7098            #[inline]
7099            fn tokenize(&self) -> Self::Token<'_> {
7100                ()
7101            }
7102            #[inline]
7103            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7104                (
7105                    <alloy::sol_types::sol_data::Uint<
7106                        256,
7107                    > as alloy_sol_types::SolType>::tokenize(ret),
7108                )
7109            }
7110            #[inline]
7111            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7112                <Self::ReturnTuple<
7113                    '_,
7114                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7115                    .map(|r| {
7116                        let r: exitEscrowPeriodReturn = r.into();
7117                        r._0
7118                    })
7119            }
7120            #[inline]
7121            fn abi_decode_returns_validate(
7122                data: &[u8],
7123            ) -> alloy_sol_types::Result<Self::Return> {
7124                <Self::ReturnTuple<
7125                    '_,
7126                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7127                    .map(|r| {
7128                        let r: exitEscrowPeriodReturn = r.into();
7129                        r._0
7130                    })
7131            }
7132        }
7133    };
7134    #[derive(serde::Serialize, serde::Deserialize)]
7135    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7136    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
7137```solidity
7138function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
7139```*/
7140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7141    #[derive(Clone)]
7142    pub struct getVersionCall;
7143    #[derive(serde::Serialize, serde::Deserialize)]
7144    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7145    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
7146    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7147    #[derive(Clone)]
7148    pub struct getVersionReturn {
7149        #[allow(missing_docs)]
7150        pub majorVersion: u8,
7151        #[allow(missing_docs)]
7152        pub minorVersion: u8,
7153        #[allow(missing_docs)]
7154        pub patchVersion: u8,
7155    }
7156    #[allow(
7157        non_camel_case_types,
7158        non_snake_case,
7159        clippy::pub_underscore_fields,
7160        clippy::style
7161    )]
7162    const _: () = {
7163        use alloy::sol_types as alloy_sol_types;
7164        {
7165            #[doc(hidden)]
7166            #[allow(dead_code)]
7167            type UnderlyingSolTuple<'a> = ();
7168            #[doc(hidden)]
7169            type UnderlyingRustTuple<'a> = ();
7170            #[cfg(test)]
7171            #[allow(dead_code, unreachable_patterns)]
7172            fn _type_assertion(
7173                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7174            ) {
7175                match _t {
7176                    alloy_sol_types::private::AssertTypeEq::<
7177                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7178                    >(_) => {}
7179                }
7180            }
7181            #[automatically_derived]
7182            #[doc(hidden)]
7183            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
7184                fn from(value: getVersionCall) -> Self {
7185                    ()
7186                }
7187            }
7188            #[automatically_derived]
7189            #[doc(hidden)]
7190            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
7191                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7192                    Self
7193                }
7194            }
7195        }
7196        {
7197            #[doc(hidden)]
7198            #[allow(dead_code)]
7199            type UnderlyingSolTuple<'a> = (
7200                alloy::sol_types::sol_data::Uint<8>,
7201                alloy::sol_types::sol_data::Uint<8>,
7202                alloy::sol_types::sol_data::Uint<8>,
7203            );
7204            #[doc(hidden)]
7205            type UnderlyingRustTuple<'a> = (u8, u8, u8);
7206            #[cfg(test)]
7207            #[allow(dead_code, unreachable_patterns)]
7208            fn _type_assertion(
7209                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7210            ) {
7211                match _t {
7212                    alloy_sol_types::private::AssertTypeEq::<
7213                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7214                    >(_) => {}
7215                }
7216            }
7217            #[automatically_derived]
7218            #[doc(hidden)]
7219            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
7220                fn from(value: getVersionReturn) -> Self {
7221                    (value.majorVersion, value.minorVersion, value.patchVersion)
7222                }
7223            }
7224            #[automatically_derived]
7225            #[doc(hidden)]
7226            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
7227                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7228                    Self {
7229                        majorVersion: tuple.0,
7230                        minorVersion: tuple.1,
7231                        patchVersion: tuple.2,
7232                    }
7233                }
7234            }
7235        }
7236        impl getVersionReturn {
7237            fn _tokenize(
7238                &self,
7239            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7240                (
7241                    <alloy::sol_types::sol_data::Uint<
7242                        8,
7243                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
7244                    <alloy::sol_types::sol_data::Uint<
7245                        8,
7246                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
7247                    <alloy::sol_types::sol_data::Uint<
7248                        8,
7249                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
7250                )
7251            }
7252        }
7253        #[automatically_derived]
7254        impl alloy_sol_types::SolCall for getVersionCall {
7255            type Parameters<'a> = ();
7256            type Token<'a> = <Self::Parameters<
7257                'a,
7258            > as alloy_sol_types::SolType>::Token<'a>;
7259            type Return = getVersionReturn;
7260            type ReturnTuple<'a> = (
7261                alloy::sol_types::sol_data::Uint<8>,
7262                alloy::sol_types::sol_data::Uint<8>,
7263                alloy::sol_types::sol_data::Uint<8>,
7264            );
7265            type ReturnToken<'a> = <Self::ReturnTuple<
7266                'a,
7267            > as alloy_sol_types::SolType>::Token<'a>;
7268            const SIGNATURE: &'static str = "getVersion()";
7269            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
7270            #[inline]
7271            fn new<'a>(
7272                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7273            ) -> Self {
7274                tuple.into()
7275            }
7276            #[inline]
7277            fn tokenize(&self) -> Self::Token<'_> {
7278                ()
7279            }
7280            #[inline]
7281            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7282                getVersionReturn::_tokenize(ret)
7283            }
7284            #[inline]
7285            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7286                <Self::ReturnTuple<
7287                    '_,
7288                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7289                    .map(Into::into)
7290            }
7291            #[inline]
7292            fn abi_decode_returns_validate(
7293                data: &[u8],
7294            ) -> alloy_sol_types::Result<Self::Return> {
7295                <Self::ReturnTuple<
7296                    '_,
7297                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7298                    .map(Into::into)
7299            }
7300        }
7301    };
7302    #[derive(serde::Serialize, serde::Deserialize)]
7303    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7304    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
7305```solidity
7306function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
7307```*/
7308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7309    #[derive(Clone)]
7310    pub struct initializeCall {
7311        #[allow(missing_docs)]
7312        pub _tokenAddress: alloy::sol_types::private::Address,
7313        #[allow(missing_docs)]
7314        pub _lightClientAddress: alloy::sol_types::private::Address,
7315        #[allow(missing_docs)]
7316        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
7317        #[allow(missing_docs)]
7318        pub _timelock: alloy::sol_types::private::Address,
7319    }
7320    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
7321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7322    #[derive(Clone)]
7323    pub struct initializeReturn {}
7324    #[allow(
7325        non_camel_case_types,
7326        non_snake_case,
7327        clippy::pub_underscore_fields,
7328        clippy::style
7329    )]
7330    const _: () = {
7331        use alloy::sol_types as alloy_sol_types;
7332        {
7333            #[doc(hidden)]
7334            #[allow(dead_code)]
7335            type UnderlyingSolTuple<'a> = (
7336                alloy::sol_types::sol_data::Address,
7337                alloy::sol_types::sol_data::Address,
7338                alloy::sol_types::sol_data::Uint<256>,
7339                alloy::sol_types::sol_data::Address,
7340            );
7341            #[doc(hidden)]
7342            type UnderlyingRustTuple<'a> = (
7343                alloy::sol_types::private::Address,
7344                alloy::sol_types::private::Address,
7345                alloy::sol_types::private::primitives::aliases::U256,
7346                alloy::sol_types::private::Address,
7347            );
7348            #[cfg(test)]
7349            #[allow(dead_code, unreachable_patterns)]
7350            fn _type_assertion(
7351                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7352            ) {
7353                match _t {
7354                    alloy_sol_types::private::AssertTypeEq::<
7355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7356                    >(_) => {}
7357                }
7358            }
7359            #[automatically_derived]
7360            #[doc(hidden)]
7361            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7362                fn from(value: initializeCall) -> Self {
7363                    (
7364                        value._tokenAddress,
7365                        value._lightClientAddress,
7366                        value._exitEscrowPeriod,
7367                        value._timelock,
7368                    )
7369                }
7370            }
7371            #[automatically_derived]
7372            #[doc(hidden)]
7373            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7374                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7375                    Self {
7376                        _tokenAddress: tuple.0,
7377                        _lightClientAddress: tuple.1,
7378                        _exitEscrowPeriod: tuple.2,
7379                        _timelock: tuple.3,
7380                    }
7381                }
7382            }
7383        }
7384        {
7385            #[doc(hidden)]
7386            #[allow(dead_code)]
7387            type UnderlyingSolTuple<'a> = ();
7388            #[doc(hidden)]
7389            type UnderlyingRustTuple<'a> = ();
7390            #[cfg(test)]
7391            #[allow(dead_code, unreachable_patterns)]
7392            fn _type_assertion(
7393                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7394            ) {
7395                match _t {
7396                    alloy_sol_types::private::AssertTypeEq::<
7397                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7398                    >(_) => {}
7399                }
7400            }
7401            #[automatically_derived]
7402            #[doc(hidden)]
7403            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7404                fn from(value: initializeReturn) -> Self {
7405                    ()
7406                }
7407            }
7408            #[automatically_derived]
7409            #[doc(hidden)]
7410            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7411                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7412                    Self {}
7413                }
7414            }
7415        }
7416        impl initializeReturn {
7417            fn _tokenize(
7418                &self,
7419            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7420                ()
7421            }
7422        }
7423        #[automatically_derived]
7424        impl alloy_sol_types::SolCall for initializeCall {
7425            type Parameters<'a> = (
7426                alloy::sol_types::sol_data::Address,
7427                alloy::sol_types::sol_data::Address,
7428                alloy::sol_types::sol_data::Uint<256>,
7429                alloy::sol_types::sol_data::Address,
7430            );
7431            type Token<'a> = <Self::Parameters<
7432                'a,
7433            > as alloy_sol_types::SolType>::Token<'a>;
7434            type Return = initializeReturn;
7435            type ReturnTuple<'a> = ();
7436            type ReturnToken<'a> = <Self::ReturnTuple<
7437                'a,
7438            > as alloy_sol_types::SolType>::Token<'a>;
7439            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
7440            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
7441            #[inline]
7442            fn new<'a>(
7443                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7444            ) -> Self {
7445                tuple.into()
7446            }
7447            #[inline]
7448            fn tokenize(&self) -> Self::Token<'_> {
7449                (
7450                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7451                        &self._tokenAddress,
7452                    ),
7453                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7454                        &self._lightClientAddress,
7455                    ),
7456                    <alloy::sol_types::sol_data::Uint<
7457                        256,
7458                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
7459                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7460                        &self._timelock,
7461                    ),
7462                )
7463            }
7464            #[inline]
7465            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7466                initializeReturn::_tokenize(ret)
7467            }
7468            #[inline]
7469            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7470                <Self::ReturnTuple<
7471                    '_,
7472                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7473                    .map(Into::into)
7474            }
7475            #[inline]
7476            fn abi_decode_returns_validate(
7477                data: &[u8],
7478            ) -> alloy_sol_types::Result<Self::Return> {
7479                <Self::ReturnTuple<
7480                    '_,
7481                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7482                    .map(Into::into)
7483            }
7484        }
7485    };
7486    #[derive(serde::Serialize, serde::Deserialize)]
7487    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7488    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
7489```solidity
7490function initializedAtBlock() external view returns (uint256);
7491```*/
7492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7493    #[derive(Clone)]
7494    pub struct initializedAtBlockCall;
7495    #[derive(serde::Serialize, serde::Deserialize)]
7496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7497    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
7498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7499    #[derive(Clone)]
7500    pub struct initializedAtBlockReturn {
7501        #[allow(missing_docs)]
7502        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7503    }
7504    #[allow(
7505        non_camel_case_types,
7506        non_snake_case,
7507        clippy::pub_underscore_fields,
7508        clippy::style
7509    )]
7510    const _: () = {
7511        use alloy::sol_types as alloy_sol_types;
7512        {
7513            #[doc(hidden)]
7514            #[allow(dead_code)]
7515            type UnderlyingSolTuple<'a> = ();
7516            #[doc(hidden)]
7517            type UnderlyingRustTuple<'a> = ();
7518            #[cfg(test)]
7519            #[allow(dead_code, unreachable_patterns)]
7520            fn _type_assertion(
7521                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7522            ) {
7523                match _t {
7524                    alloy_sol_types::private::AssertTypeEq::<
7525                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7526                    >(_) => {}
7527                }
7528            }
7529            #[automatically_derived]
7530            #[doc(hidden)]
7531            impl ::core::convert::From<initializedAtBlockCall>
7532            for UnderlyingRustTuple<'_> {
7533                fn from(value: initializedAtBlockCall) -> Self {
7534                    ()
7535                }
7536            }
7537            #[automatically_derived]
7538            #[doc(hidden)]
7539            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7540            for initializedAtBlockCall {
7541                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7542                    Self
7543                }
7544            }
7545        }
7546        {
7547            #[doc(hidden)]
7548            #[allow(dead_code)]
7549            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7550            #[doc(hidden)]
7551            type UnderlyingRustTuple<'a> = (
7552                alloy::sol_types::private::primitives::aliases::U256,
7553            );
7554            #[cfg(test)]
7555            #[allow(dead_code, unreachable_patterns)]
7556            fn _type_assertion(
7557                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7558            ) {
7559                match _t {
7560                    alloy_sol_types::private::AssertTypeEq::<
7561                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7562                    >(_) => {}
7563                }
7564            }
7565            #[automatically_derived]
7566            #[doc(hidden)]
7567            impl ::core::convert::From<initializedAtBlockReturn>
7568            for UnderlyingRustTuple<'_> {
7569                fn from(value: initializedAtBlockReturn) -> Self {
7570                    (value._0,)
7571                }
7572            }
7573            #[automatically_derived]
7574            #[doc(hidden)]
7575            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7576            for initializedAtBlockReturn {
7577                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7578                    Self { _0: tuple.0 }
7579                }
7580            }
7581        }
7582        #[automatically_derived]
7583        impl alloy_sol_types::SolCall for initializedAtBlockCall {
7584            type Parameters<'a> = ();
7585            type Token<'a> = <Self::Parameters<
7586                'a,
7587            > as alloy_sol_types::SolType>::Token<'a>;
7588            type Return = alloy::sol_types::private::primitives::aliases::U256;
7589            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7590            type ReturnToken<'a> = <Self::ReturnTuple<
7591                'a,
7592            > as alloy_sol_types::SolType>::Token<'a>;
7593            const SIGNATURE: &'static str = "initializedAtBlock()";
7594            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
7595            #[inline]
7596            fn new<'a>(
7597                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7598            ) -> Self {
7599                tuple.into()
7600            }
7601            #[inline]
7602            fn tokenize(&self) -> Self::Token<'_> {
7603                ()
7604            }
7605            #[inline]
7606            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7607                (
7608                    <alloy::sol_types::sol_data::Uint<
7609                        256,
7610                    > as alloy_sol_types::SolType>::tokenize(ret),
7611                )
7612            }
7613            #[inline]
7614            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7615                <Self::ReturnTuple<
7616                    '_,
7617                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7618                    .map(|r| {
7619                        let r: initializedAtBlockReturn = r.into();
7620                        r._0
7621                    })
7622            }
7623            #[inline]
7624            fn abi_decode_returns_validate(
7625                data: &[u8],
7626            ) -> alloy_sol_types::Result<Self::Return> {
7627                <Self::ReturnTuple<
7628                    '_,
7629                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7630                    .map(|r| {
7631                        let r: initializedAtBlockReturn = r.into();
7632                        r._0
7633                    })
7634            }
7635        }
7636    };
7637    #[derive(serde::Serialize, serde::Deserialize)]
7638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7639    /**Function with signature `lightClient()` and selector `0xb5700e68`.
7640```solidity
7641function lightClient() external view returns (address);
7642```*/
7643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7644    #[derive(Clone)]
7645    pub struct lightClientCall;
7646    #[derive(serde::Serialize, serde::Deserialize)]
7647    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7648    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
7649    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7650    #[derive(Clone)]
7651    pub struct lightClientReturn {
7652        #[allow(missing_docs)]
7653        pub _0: alloy::sol_types::private::Address,
7654    }
7655    #[allow(
7656        non_camel_case_types,
7657        non_snake_case,
7658        clippy::pub_underscore_fields,
7659        clippy::style
7660    )]
7661    const _: () = {
7662        use alloy::sol_types as alloy_sol_types;
7663        {
7664            #[doc(hidden)]
7665            #[allow(dead_code)]
7666            type UnderlyingSolTuple<'a> = ();
7667            #[doc(hidden)]
7668            type UnderlyingRustTuple<'a> = ();
7669            #[cfg(test)]
7670            #[allow(dead_code, unreachable_patterns)]
7671            fn _type_assertion(
7672                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7673            ) {
7674                match _t {
7675                    alloy_sol_types::private::AssertTypeEq::<
7676                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7677                    >(_) => {}
7678                }
7679            }
7680            #[automatically_derived]
7681            #[doc(hidden)]
7682            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
7683                fn from(value: lightClientCall) -> Self {
7684                    ()
7685                }
7686            }
7687            #[automatically_derived]
7688            #[doc(hidden)]
7689            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
7690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7691                    Self
7692                }
7693            }
7694        }
7695        {
7696            #[doc(hidden)]
7697            #[allow(dead_code)]
7698            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7699            #[doc(hidden)]
7700            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7701            #[cfg(test)]
7702            #[allow(dead_code, unreachable_patterns)]
7703            fn _type_assertion(
7704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7705            ) {
7706                match _t {
7707                    alloy_sol_types::private::AssertTypeEq::<
7708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7709                    >(_) => {}
7710                }
7711            }
7712            #[automatically_derived]
7713            #[doc(hidden)]
7714            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
7715                fn from(value: lightClientReturn) -> Self {
7716                    (value._0,)
7717                }
7718            }
7719            #[automatically_derived]
7720            #[doc(hidden)]
7721            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
7722                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7723                    Self { _0: tuple.0 }
7724                }
7725            }
7726        }
7727        #[automatically_derived]
7728        impl alloy_sol_types::SolCall for lightClientCall {
7729            type Parameters<'a> = ();
7730            type Token<'a> = <Self::Parameters<
7731                'a,
7732            > as alloy_sol_types::SolType>::Token<'a>;
7733            type Return = alloy::sol_types::private::Address;
7734            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7735            type ReturnToken<'a> = <Self::ReturnTuple<
7736                'a,
7737            > as alloy_sol_types::SolType>::Token<'a>;
7738            const SIGNATURE: &'static str = "lightClient()";
7739            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
7740            #[inline]
7741            fn new<'a>(
7742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7743            ) -> Self {
7744                tuple.into()
7745            }
7746            #[inline]
7747            fn tokenize(&self) -> Self::Token<'_> {
7748                ()
7749            }
7750            #[inline]
7751            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7752                (
7753                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7754                        ret,
7755                    ),
7756                )
7757            }
7758            #[inline]
7759            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7760                <Self::ReturnTuple<
7761                    '_,
7762                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7763                    .map(|r| {
7764                        let r: lightClientReturn = r.into();
7765                        r._0
7766                    })
7767            }
7768            #[inline]
7769            fn abi_decode_returns_validate(
7770                data: &[u8],
7771            ) -> alloy_sol_types::Result<Self::Return> {
7772                <Self::ReturnTuple<
7773                    '_,
7774                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7775                    .map(|r| {
7776                        let r: lightClientReturn = r.into();
7777                        r._0
7778                    })
7779            }
7780        }
7781    };
7782    #[derive(serde::Serialize, serde::Deserialize)]
7783    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7784    /**Function with signature `owner()` and selector `0x8da5cb5b`.
7785```solidity
7786function owner() external view returns (address);
7787```*/
7788    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7789    #[derive(Clone)]
7790    pub struct ownerCall;
7791    #[derive(serde::Serialize, serde::Deserialize)]
7792    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7793    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
7794    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7795    #[derive(Clone)]
7796    pub struct ownerReturn {
7797        #[allow(missing_docs)]
7798        pub _0: alloy::sol_types::private::Address,
7799    }
7800    #[allow(
7801        non_camel_case_types,
7802        non_snake_case,
7803        clippy::pub_underscore_fields,
7804        clippy::style
7805    )]
7806    const _: () = {
7807        use alloy::sol_types as alloy_sol_types;
7808        {
7809            #[doc(hidden)]
7810            #[allow(dead_code)]
7811            type UnderlyingSolTuple<'a> = ();
7812            #[doc(hidden)]
7813            type UnderlyingRustTuple<'a> = ();
7814            #[cfg(test)]
7815            #[allow(dead_code, unreachable_patterns)]
7816            fn _type_assertion(
7817                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7818            ) {
7819                match _t {
7820                    alloy_sol_types::private::AssertTypeEq::<
7821                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7822                    >(_) => {}
7823                }
7824            }
7825            #[automatically_derived]
7826            #[doc(hidden)]
7827            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
7828                fn from(value: ownerCall) -> Self {
7829                    ()
7830                }
7831            }
7832            #[automatically_derived]
7833            #[doc(hidden)]
7834            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
7835                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7836                    Self
7837                }
7838            }
7839        }
7840        {
7841            #[doc(hidden)]
7842            #[allow(dead_code)]
7843            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7844            #[doc(hidden)]
7845            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7846            #[cfg(test)]
7847            #[allow(dead_code, unreachable_patterns)]
7848            fn _type_assertion(
7849                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7850            ) {
7851                match _t {
7852                    alloy_sol_types::private::AssertTypeEq::<
7853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7854                    >(_) => {}
7855                }
7856            }
7857            #[automatically_derived]
7858            #[doc(hidden)]
7859            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
7860                fn from(value: ownerReturn) -> Self {
7861                    (value._0,)
7862                }
7863            }
7864            #[automatically_derived]
7865            #[doc(hidden)]
7866            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
7867                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7868                    Self { _0: tuple.0 }
7869                }
7870            }
7871        }
7872        #[automatically_derived]
7873        impl alloy_sol_types::SolCall for ownerCall {
7874            type Parameters<'a> = ();
7875            type Token<'a> = <Self::Parameters<
7876                'a,
7877            > as alloy_sol_types::SolType>::Token<'a>;
7878            type Return = alloy::sol_types::private::Address;
7879            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7880            type ReturnToken<'a> = <Self::ReturnTuple<
7881                'a,
7882            > as alloy_sol_types::SolType>::Token<'a>;
7883            const SIGNATURE: &'static str = "owner()";
7884            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
7885            #[inline]
7886            fn new<'a>(
7887                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7888            ) -> Self {
7889                tuple.into()
7890            }
7891            #[inline]
7892            fn tokenize(&self) -> Self::Token<'_> {
7893                ()
7894            }
7895            #[inline]
7896            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7897                (
7898                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7899                        ret,
7900                    ),
7901                )
7902            }
7903            #[inline]
7904            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7905                <Self::ReturnTuple<
7906                    '_,
7907                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7908                    .map(|r| {
7909                        let r: ownerReturn = r.into();
7910                        r._0
7911                    })
7912            }
7913            #[inline]
7914            fn abi_decode_returns_validate(
7915                data: &[u8],
7916            ) -> alloy_sol_types::Result<Self::Return> {
7917                <Self::ReturnTuple<
7918                    '_,
7919                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7920                    .map(|r| {
7921                        let r: ownerReturn = r.into();
7922                        r._0
7923                    })
7924            }
7925        }
7926    };
7927    #[derive(serde::Serialize, serde::Deserialize)]
7928    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7929    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
7930```solidity
7931function proxiableUUID() external view returns (bytes32);
7932```*/
7933    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7934    #[derive(Clone)]
7935    pub struct proxiableUUIDCall;
7936    #[derive(serde::Serialize, serde::Deserialize)]
7937    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7938    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
7939    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7940    #[derive(Clone)]
7941    pub struct proxiableUUIDReturn {
7942        #[allow(missing_docs)]
7943        pub _0: alloy::sol_types::private::FixedBytes<32>,
7944    }
7945    #[allow(
7946        non_camel_case_types,
7947        non_snake_case,
7948        clippy::pub_underscore_fields,
7949        clippy::style
7950    )]
7951    const _: () = {
7952        use alloy::sol_types as alloy_sol_types;
7953        {
7954            #[doc(hidden)]
7955            #[allow(dead_code)]
7956            type UnderlyingSolTuple<'a> = ();
7957            #[doc(hidden)]
7958            type UnderlyingRustTuple<'a> = ();
7959            #[cfg(test)]
7960            #[allow(dead_code, unreachable_patterns)]
7961            fn _type_assertion(
7962                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7963            ) {
7964                match _t {
7965                    alloy_sol_types::private::AssertTypeEq::<
7966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7967                    >(_) => {}
7968                }
7969            }
7970            #[automatically_derived]
7971            #[doc(hidden)]
7972            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
7973                fn from(value: proxiableUUIDCall) -> Self {
7974                    ()
7975                }
7976            }
7977            #[automatically_derived]
7978            #[doc(hidden)]
7979            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
7980                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7981                    Self
7982                }
7983            }
7984        }
7985        {
7986            #[doc(hidden)]
7987            #[allow(dead_code)]
7988            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7989            #[doc(hidden)]
7990            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7991            #[cfg(test)]
7992            #[allow(dead_code, unreachable_patterns)]
7993            fn _type_assertion(
7994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7995            ) {
7996                match _t {
7997                    alloy_sol_types::private::AssertTypeEq::<
7998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7999                    >(_) => {}
8000                }
8001            }
8002            #[automatically_derived]
8003            #[doc(hidden)]
8004            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
8005                fn from(value: proxiableUUIDReturn) -> Self {
8006                    (value._0,)
8007                }
8008            }
8009            #[automatically_derived]
8010            #[doc(hidden)]
8011            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
8012                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8013                    Self { _0: tuple.0 }
8014                }
8015            }
8016        }
8017        #[automatically_derived]
8018        impl alloy_sol_types::SolCall for proxiableUUIDCall {
8019            type Parameters<'a> = ();
8020            type Token<'a> = <Self::Parameters<
8021                'a,
8022            > as alloy_sol_types::SolType>::Token<'a>;
8023            type Return = alloy::sol_types::private::FixedBytes<32>;
8024            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8025            type ReturnToken<'a> = <Self::ReturnTuple<
8026                'a,
8027            > as alloy_sol_types::SolType>::Token<'a>;
8028            const SIGNATURE: &'static str = "proxiableUUID()";
8029            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
8030            #[inline]
8031            fn new<'a>(
8032                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8033            ) -> Self {
8034                tuple.into()
8035            }
8036            #[inline]
8037            fn tokenize(&self) -> Self::Token<'_> {
8038                ()
8039            }
8040            #[inline]
8041            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8042                (
8043                    <alloy::sol_types::sol_data::FixedBytes<
8044                        32,
8045                    > as alloy_sol_types::SolType>::tokenize(ret),
8046                )
8047            }
8048            #[inline]
8049            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8050                <Self::ReturnTuple<
8051                    '_,
8052                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8053                    .map(|r| {
8054                        let r: proxiableUUIDReturn = r.into();
8055                        r._0
8056                    })
8057            }
8058            #[inline]
8059            fn abi_decode_returns_validate(
8060                data: &[u8],
8061            ) -> alloy_sol_types::Result<Self::Return> {
8062                <Self::ReturnTuple<
8063                    '_,
8064                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8065                    .map(|r| {
8066                        let r: proxiableUUIDReturn = r.into();
8067                        r._0
8068                    })
8069            }
8070        }
8071    };
8072    #[derive(serde::Serialize, serde::Deserialize)]
8073    #[derive()]
8074    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
8075```solidity
8076function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
8077```*/
8078    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8079    #[derive(Clone)]
8080    pub struct registerValidatorCall {
8081        #[allow(missing_docs)]
8082        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8083        #[allow(missing_docs)]
8084        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8085        #[allow(missing_docs)]
8086        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8087        #[allow(missing_docs)]
8088        pub commission: u16,
8089    }
8090    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
8091    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8092    #[derive(Clone)]
8093    pub struct registerValidatorReturn {}
8094    #[allow(
8095        non_camel_case_types,
8096        non_snake_case,
8097        clippy::pub_underscore_fields,
8098        clippy::style
8099    )]
8100    const _: () = {
8101        use alloy::sol_types as alloy_sol_types;
8102        {
8103            #[doc(hidden)]
8104            #[allow(dead_code)]
8105            type UnderlyingSolTuple<'a> = (
8106                BN254::G2Point,
8107                EdOnBN254::EdOnBN254Point,
8108                BN254::G1Point,
8109                alloy::sol_types::sol_data::Uint<16>,
8110            );
8111            #[doc(hidden)]
8112            type UnderlyingRustTuple<'a> = (
8113                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8114                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8115                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8116                u16,
8117            );
8118            #[cfg(test)]
8119            #[allow(dead_code, unreachable_patterns)]
8120            fn _type_assertion(
8121                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8122            ) {
8123                match _t {
8124                    alloy_sol_types::private::AssertTypeEq::<
8125                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8126                    >(_) => {}
8127                }
8128            }
8129            #[automatically_derived]
8130            #[doc(hidden)]
8131            impl ::core::convert::From<registerValidatorCall>
8132            for UnderlyingRustTuple<'_> {
8133                fn from(value: registerValidatorCall) -> Self {
8134                    (value.blsVK, value.schnorrVK, value.blsSig, value.commission)
8135                }
8136            }
8137            #[automatically_derived]
8138            #[doc(hidden)]
8139            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8140            for registerValidatorCall {
8141                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8142                    Self {
8143                        blsVK: tuple.0,
8144                        schnorrVK: tuple.1,
8145                        blsSig: tuple.2,
8146                        commission: tuple.3,
8147                    }
8148                }
8149            }
8150        }
8151        {
8152            #[doc(hidden)]
8153            #[allow(dead_code)]
8154            type UnderlyingSolTuple<'a> = ();
8155            #[doc(hidden)]
8156            type UnderlyingRustTuple<'a> = ();
8157            #[cfg(test)]
8158            #[allow(dead_code, unreachable_patterns)]
8159            fn _type_assertion(
8160                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8161            ) {
8162                match _t {
8163                    alloy_sol_types::private::AssertTypeEq::<
8164                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8165                    >(_) => {}
8166                }
8167            }
8168            #[automatically_derived]
8169            #[doc(hidden)]
8170            impl ::core::convert::From<registerValidatorReturn>
8171            for UnderlyingRustTuple<'_> {
8172                fn from(value: registerValidatorReturn) -> Self {
8173                    ()
8174                }
8175            }
8176            #[automatically_derived]
8177            #[doc(hidden)]
8178            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8179            for registerValidatorReturn {
8180                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8181                    Self {}
8182                }
8183            }
8184        }
8185        impl registerValidatorReturn {
8186            fn _tokenize(
8187                &self,
8188            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8189                ()
8190            }
8191        }
8192        #[automatically_derived]
8193        impl alloy_sol_types::SolCall for registerValidatorCall {
8194            type Parameters<'a> = (
8195                BN254::G2Point,
8196                EdOnBN254::EdOnBN254Point,
8197                BN254::G1Point,
8198                alloy::sol_types::sol_data::Uint<16>,
8199            );
8200            type Token<'a> = <Self::Parameters<
8201                'a,
8202            > as alloy_sol_types::SolType>::Token<'a>;
8203            type Return = registerValidatorReturn;
8204            type ReturnTuple<'a> = ();
8205            type ReturnToken<'a> = <Self::ReturnTuple<
8206                'a,
8207            > as alloy_sol_types::SolType>::Token<'a>;
8208            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
8209            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
8210            #[inline]
8211            fn new<'a>(
8212                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8213            ) -> Self {
8214                tuple.into()
8215            }
8216            #[inline]
8217            fn tokenize(&self) -> Self::Token<'_> {
8218                (
8219                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8220                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8221                        &self.schnorrVK,
8222                    ),
8223                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
8224                    <alloy::sol_types::sol_data::Uint<
8225                        16,
8226                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
8227                )
8228            }
8229            #[inline]
8230            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8231                registerValidatorReturn::_tokenize(ret)
8232            }
8233            #[inline]
8234            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8235                <Self::ReturnTuple<
8236                    '_,
8237                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8238                    .map(Into::into)
8239            }
8240            #[inline]
8241            fn abi_decode_returns_validate(
8242                data: &[u8],
8243            ) -> alloy_sol_types::Result<Self::Return> {
8244                <Self::ReturnTuple<
8245                    '_,
8246                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8247                    .map(Into::into)
8248            }
8249        }
8250    };
8251    #[derive(serde::Serialize, serde::Deserialize)]
8252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8253    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
8254```solidity
8255function renounceOwnership() external;
8256```*/
8257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8258    #[derive(Clone)]
8259    pub struct renounceOwnershipCall;
8260    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
8261    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8262    #[derive(Clone)]
8263    pub struct renounceOwnershipReturn {}
8264    #[allow(
8265        non_camel_case_types,
8266        non_snake_case,
8267        clippy::pub_underscore_fields,
8268        clippy::style
8269    )]
8270    const _: () = {
8271        use alloy::sol_types as alloy_sol_types;
8272        {
8273            #[doc(hidden)]
8274            #[allow(dead_code)]
8275            type UnderlyingSolTuple<'a> = ();
8276            #[doc(hidden)]
8277            type UnderlyingRustTuple<'a> = ();
8278            #[cfg(test)]
8279            #[allow(dead_code, unreachable_patterns)]
8280            fn _type_assertion(
8281                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8282            ) {
8283                match _t {
8284                    alloy_sol_types::private::AssertTypeEq::<
8285                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8286                    >(_) => {}
8287                }
8288            }
8289            #[automatically_derived]
8290            #[doc(hidden)]
8291            impl ::core::convert::From<renounceOwnershipCall>
8292            for UnderlyingRustTuple<'_> {
8293                fn from(value: renounceOwnershipCall) -> Self {
8294                    ()
8295                }
8296            }
8297            #[automatically_derived]
8298            #[doc(hidden)]
8299            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8300            for renounceOwnershipCall {
8301                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8302                    Self
8303                }
8304            }
8305        }
8306        {
8307            #[doc(hidden)]
8308            #[allow(dead_code)]
8309            type UnderlyingSolTuple<'a> = ();
8310            #[doc(hidden)]
8311            type UnderlyingRustTuple<'a> = ();
8312            #[cfg(test)]
8313            #[allow(dead_code, unreachable_patterns)]
8314            fn _type_assertion(
8315                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8316            ) {
8317                match _t {
8318                    alloy_sol_types::private::AssertTypeEq::<
8319                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8320                    >(_) => {}
8321                }
8322            }
8323            #[automatically_derived]
8324            #[doc(hidden)]
8325            impl ::core::convert::From<renounceOwnershipReturn>
8326            for UnderlyingRustTuple<'_> {
8327                fn from(value: renounceOwnershipReturn) -> Self {
8328                    ()
8329                }
8330            }
8331            #[automatically_derived]
8332            #[doc(hidden)]
8333            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8334            for renounceOwnershipReturn {
8335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8336                    Self {}
8337                }
8338            }
8339        }
8340        impl renounceOwnershipReturn {
8341            fn _tokenize(
8342                &self,
8343            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8344                ()
8345            }
8346        }
8347        #[automatically_derived]
8348        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8349            type Parameters<'a> = ();
8350            type Token<'a> = <Self::Parameters<
8351                'a,
8352            > as alloy_sol_types::SolType>::Token<'a>;
8353            type Return = renounceOwnershipReturn;
8354            type ReturnTuple<'a> = ();
8355            type ReturnToken<'a> = <Self::ReturnTuple<
8356                'a,
8357            > as alloy_sol_types::SolType>::Token<'a>;
8358            const SIGNATURE: &'static str = "renounceOwnership()";
8359            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8360            #[inline]
8361            fn new<'a>(
8362                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8363            ) -> Self {
8364                tuple.into()
8365            }
8366            #[inline]
8367            fn tokenize(&self) -> Self::Token<'_> {
8368                ()
8369            }
8370            #[inline]
8371            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8372                renounceOwnershipReturn::_tokenize(ret)
8373            }
8374            #[inline]
8375            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8376                <Self::ReturnTuple<
8377                    '_,
8378                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8379                    .map(Into::into)
8380            }
8381            #[inline]
8382            fn abi_decode_returns_validate(
8383                data: &[u8],
8384            ) -> alloy_sol_types::Result<Self::Return> {
8385                <Self::ReturnTuple<
8386                    '_,
8387                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8388                    .map(Into::into)
8389            }
8390        }
8391    };
8392    #[derive(serde::Serialize, serde::Deserialize)]
8393    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8394    /**Function with signature `token()` and selector `0xfc0c546a`.
8395```solidity
8396function token() external view returns (address);
8397```*/
8398    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8399    #[derive(Clone)]
8400    pub struct tokenCall;
8401    #[derive(serde::Serialize, serde::Deserialize)]
8402    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8403    ///Container type for the return parameters of the [`token()`](tokenCall) function.
8404    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8405    #[derive(Clone)]
8406    pub struct tokenReturn {
8407        #[allow(missing_docs)]
8408        pub _0: alloy::sol_types::private::Address,
8409    }
8410    #[allow(
8411        non_camel_case_types,
8412        non_snake_case,
8413        clippy::pub_underscore_fields,
8414        clippy::style
8415    )]
8416    const _: () = {
8417        use alloy::sol_types as alloy_sol_types;
8418        {
8419            #[doc(hidden)]
8420            #[allow(dead_code)]
8421            type UnderlyingSolTuple<'a> = ();
8422            #[doc(hidden)]
8423            type UnderlyingRustTuple<'a> = ();
8424            #[cfg(test)]
8425            #[allow(dead_code, unreachable_patterns)]
8426            fn _type_assertion(
8427                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8428            ) {
8429                match _t {
8430                    alloy_sol_types::private::AssertTypeEq::<
8431                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8432                    >(_) => {}
8433                }
8434            }
8435            #[automatically_derived]
8436            #[doc(hidden)]
8437            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
8438                fn from(value: tokenCall) -> Self {
8439                    ()
8440                }
8441            }
8442            #[automatically_derived]
8443            #[doc(hidden)]
8444            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
8445                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8446                    Self
8447                }
8448            }
8449        }
8450        {
8451            #[doc(hidden)]
8452            #[allow(dead_code)]
8453            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8454            #[doc(hidden)]
8455            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8456            #[cfg(test)]
8457            #[allow(dead_code, unreachable_patterns)]
8458            fn _type_assertion(
8459                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8460            ) {
8461                match _t {
8462                    alloy_sol_types::private::AssertTypeEq::<
8463                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8464                    >(_) => {}
8465                }
8466            }
8467            #[automatically_derived]
8468            #[doc(hidden)]
8469            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
8470                fn from(value: tokenReturn) -> Self {
8471                    (value._0,)
8472                }
8473            }
8474            #[automatically_derived]
8475            #[doc(hidden)]
8476            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
8477                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8478                    Self { _0: tuple.0 }
8479                }
8480            }
8481        }
8482        #[automatically_derived]
8483        impl alloy_sol_types::SolCall for tokenCall {
8484            type Parameters<'a> = ();
8485            type Token<'a> = <Self::Parameters<
8486                'a,
8487            > as alloy_sol_types::SolType>::Token<'a>;
8488            type Return = alloy::sol_types::private::Address;
8489            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8490            type ReturnToken<'a> = <Self::ReturnTuple<
8491                'a,
8492            > as alloy_sol_types::SolType>::Token<'a>;
8493            const SIGNATURE: &'static str = "token()";
8494            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
8495            #[inline]
8496            fn new<'a>(
8497                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8498            ) -> Self {
8499                tuple.into()
8500            }
8501            #[inline]
8502            fn tokenize(&self) -> Self::Token<'_> {
8503                ()
8504            }
8505            #[inline]
8506            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8507                (
8508                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8509                        ret,
8510                    ),
8511                )
8512            }
8513            #[inline]
8514            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8515                <Self::ReturnTuple<
8516                    '_,
8517                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8518                    .map(|r| {
8519                        let r: tokenReturn = r.into();
8520                        r._0
8521                    })
8522            }
8523            #[inline]
8524            fn abi_decode_returns_validate(
8525                data: &[u8],
8526            ) -> alloy_sol_types::Result<Self::Return> {
8527                <Self::ReturnTuple<
8528                    '_,
8529                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8530                    .map(|r| {
8531                        let r: tokenReturn = r.into();
8532                        r._0
8533                    })
8534            }
8535        }
8536    };
8537    #[derive(serde::Serialize, serde::Deserialize)]
8538    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8539    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
8540```solidity
8541function transferOwnership(address newOwner) external;
8542```*/
8543    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8544    #[derive(Clone)]
8545    pub struct transferOwnershipCall {
8546        #[allow(missing_docs)]
8547        pub newOwner: alloy::sol_types::private::Address,
8548    }
8549    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8550    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8551    #[derive(Clone)]
8552    pub struct transferOwnershipReturn {}
8553    #[allow(
8554        non_camel_case_types,
8555        non_snake_case,
8556        clippy::pub_underscore_fields,
8557        clippy::style
8558    )]
8559    const _: () = {
8560        use alloy::sol_types as alloy_sol_types;
8561        {
8562            #[doc(hidden)]
8563            #[allow(dead_code)]
8564            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8565            #[doc(hidden)]
8566            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8567            #[cfg(test)]
8568            #[allow(dead_code, unreachable_patterns)]
8569            fn _type_assertion(
8570                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8571            ) {
8572                match _t {
8573                    alloy_sol_types::private::AssertTypeEq::<
8574                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8575                    >(_) => {}
8576                }
8577            }
8578            #[automatically_derived]
8579            #[doc(hidden)]
8580            impl ::core::convert::From<transferOwnershipCall>
8581            for UnderlyingRustTuple<'_> {
8582                fn from(value: transferOwnershipCall) -> Self {
8583                    (value.newOwner,)
8584                }
8585            }
8586            #[automatically_derived]
8587            #[doc(hidden)]
8588            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8589            for transferOwnershipCall {
8590                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8591                    Self { newOwner: tuple.0 }
8592                }
8593            }
8594        }
8595        {
8596            #[doc(hidden)]
8597            #[allow(dead_code)]
8598            type UnderlyingSolTuple<'a> = ();
8599            #[doc(hidden)]
8600            type UnderlyingRustTuple<'a> = ();
8601            #[cfg(test)]
8602            #[allow(dead_code, unreachable_patterns)]
8603            fn _type_assertion(
8604                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8605            ) {
8606                match _t {
8607                    alloy_sol_types::private::AssertTypeEq::<
8608                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8609                    >(_) => {}
8610                }
8611            }
8612            #[automatically_derived]
8613            #[doc(hidden)]
8614            impl ::core::convert::From<transferOwnershipReturn>
8615            for UnderlyingRustTuple<'_> {
8616                fn from(value: transferOwnershipReturn) -> Self {
8617                    ()
8618                }
8619            }
8620            #[automatically_derived]
8621            #[doc(hidden)]
8622            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8623            for transferOwnershipReturn {
8624                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8625                    Self {}
8626                }
8627            }
8628        }
8629        impl transferOwnershipReturn {
8630            fn _tokenize(
8631                &self,
8632            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8633                ()
8634            }
8635        }
8636        #[automatically_derived]
8637        impl alloy_sol_types::SolCall for transferOwnershipCall {
8638            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8639            type Token<'a> = <Self::Parameters<
8640                'a,
8641            > as alloy_sol_types::SolType>::Token<'a>;
8642            type Return = transferOwnershipReturn;
8643            type ReturnTuple<'a> = ();
8644            type ReturnToken<'a> = <Self::ReturnTuple<
8645                'a,
8646            > as alloy_sol_types::SolType>::Token<'a>;
8647            const SIGNATURE: &'static str = "transferOwnership(address)";
8648            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
8649            #[inline]
8650            fn new<'a>(
8651                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8652            ) -> Self {
8653                tuple.into()
8654            }
8655            #[inline]
8656            fn tokenize(&self) -> Self::Token<'_> {
8657                (
8658                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8659                        &self.newOwner,
8660                    ),
8661                )
8662            }
8663            #[inline]
8664            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8665                transferOwnershipReturn::_tokenize(ret)
8666            }
8667            #[inline]
8668            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8669                <Self::ReturnTuple<
8670                    '_,
8671                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8672                    .map(Into::into)
8673            }
8674            #[inline]
8675            fn abi_decode_returns_validate(
8676                data: &[u8],
8677            ) -> alloy_sol_types::Result<Self::Return> {
8678                <Self::ReturnTuple<
8679                    '_,
8680                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8681                    .map(Into::into)
8682            }
8683        }
8684    };
8685    #[derive(serde::Serialize, serde::Deserialize)]
8686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8687    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
8688```solidity
8689function undelegate(address validator, uint256 amount) external;
8690```*/
8691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8692    #[derive(Clone)]
8693    pub struct undelegateCall {
8694        #[allow(missing_docs)]
8695        pub validator: alloy::sol_types::private::Address,
8696        #[allow(missing_docs)]
8697        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8698    }
8699    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
8700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8701    #[derive(Clone)]
8702    pub struct undelegateReturn {}
8703    #[allow(
8704        non_camel_case_types,
8705        non_snake_case,
8706        clippy::pub_underscore_fields,
8707        clippy::style
8708    )]
8709    const _: () = {
8710        use alloy::sol_types as alloy_sol_types;
8711        {
8712            #[doc(hidden)]
8713            #[allow(dead_code)]
8714            type UnderlyingSolTuple<'a> = (
8715                alloy::sol_types::sol_data::Address,
8716                alloy::sol_types::sol_data::Uint<256>,
8717            );
8718            #[doc(hidden)]
8719            type UnderlyingRustTuple<'a> = (
8720                alloy::sol_types::private::Address,
8721                alloy::sol_types::private::primitives::aliases::U256,
8722            );
8723            #[cfg(test)]
8724            #[allow(dead_code, unreachable_patterns)]
8725            fn _type_assertion(
8726                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8727            ) {
8728                match _t {
8729                    alloy_sol_types::private::AssertTypeEq::<
8730                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8731                    >(_) => {}
8732                }
8733            }
8734            #[automatically_derived]
8735            #[doc(hidden)]
8736            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
8737                fn from(value: undelegateCall) -> Self {
8738                    (value.validator, value.amount)
8739                }
8740            }
8741            #[automatically_derived]
8742            #[doc(hidden)]
8743            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
8744                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8745                    Self {
8746                        validator: tuple.0,
8747                        amount: tuple.1,
8748                    }
8749                }
8750            }
8751        }
8752        {
8753            #[doc(hidden)]
8754            #[allow(dead_code)]
8755            type UnderlyingSolTuple<'a> = ();
8756            #[doc(hidden)]
8757            type UnderlyingRustTuple<'a> = ();
8758            #[cfg(test)]
8759            #[allow(dead_code, unreachable_patterns)]
8760            fn _type_assertion(
8761                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8762            ) {
8763                match _t {
8764                    alloy_sol_types::private::AssertTypeEq::<
8765                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8766                    >(_) => {}
8767                }
8768            }
8769            #[automatically_derived]
8770            #[doc(hidden)]
8771            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
8772                fn from(value: undelegateReturn) -> Self {
8773                    ()
8774                }
8775            }
8776            #[automatically_derived]
8777            #[doc(hidden)]
8778            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
8779                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8780                    Self {}
8781                }
8782            }
8783        }
8784        impl undelegateReturn {
8785            fn _tokenize(
8786                &self,
8787            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8788                ()
8789            }
8790        }
8791        #[automatically_derived]
8792        impl alloy_sol_types::SolCall for undelegateCall {
8793            type Parameters<'a> = (
8794                alloy::sol_types::sol_data::Address,
8795                alloy::sol_types::sol_data::Uint<256>,
8796            );
8797            type Token<'a> = <Self::Parameters<
8798                'a,
8799            > as alloy_sol_types::SolType>::Token<'a>;
8800            type Return = undelegateReturn;
8801            type ReturnTuple<'a> = ();
8802            type ReturnToken<'a> = <Self::ReturnTuple<
8803                'a,
8804            > as alloy_sol_types::SolType>::Token<'a>;
8805            const SIGNATURE: &'static str = "undelegate(address,uint256)";
8806            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
8807            #[inline]
8808            fn new<'a>(
8809                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8810            ) -> Self {
8811                tuple.into()
8812            }
8813            #[inline]
8814            fn tokenize(&self) -> Self::Token<'_> {
8815                (
8816                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8817                        &self.validator,
8818                    ),
8819                    <alloy::sol_types::sol_data::Uint<
8820                        256,
8821                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8822                )
8823            }
8824            #[inline]
8825            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8826                undelegateReturn::_tokenize(ret)
8827            }
8828            #[inline]
8829            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8830                <Self::ReturnTuple<
8831                    '_,
8832                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8833                    .map(Into::into)
8834            }
8835            #[inline]
8836            fn abi_decode_returns_validate(
8837                data: &[u8],
8838            ) -> alloy_sol_types::Result<Self::Return> {
8839                <Self::ReturnTuple<
8840                    '_,
8841                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8842                    .map(Into::into)
8843            }
8844        }
8845    };
8846    #[derive(serde::Serialize, serde::Deserialize)]
8847    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8848    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
8849```solidity
8850function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
8851```*/
8852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8853    #[derive(Clone)]
8854    pub struct undelegationsCall {
8855        #[allow(missing_docs)]
8856        pub validator: alloy::sol_types::private::Address,
8857        #[allow(missing_docs)]
8858        pub delegator: alloy::sol_types::private::Address,
8859    }
8860    #[derive(serde::Serialize, serde::Deserialize)]
8861    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8862    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
8863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8864    #[derive(Clone)]
8865    pub struct undelegationsReturn {
8866        #[allow(missing_docs)]
8867        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8868        #[allow(missing_docs)]
8869        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
8870    }
8871    #[allow(
8872        non_camel_case_types,
8873        non_snake_case,
8874        clippy::pub_underscore_fields,
8875        clippy::style
8876    )]
8877    const _: () = {
8878        use alloy::sol_types as alloy_sol_types;
8879        {
8880            #[doc(hidden)]
8881            #[allow(dead_code)]
8882            type UnderlyingSolTuple<'a> = (
8883                alloy::sol_types::sol_data::Address,
8884                alloy::sol_types::sol_data::Address,
8885            );
8886            #[doc(hidden)]
8887            type UnderlyingRustTuple<'a> = (
8888                alloy::sol_types::private::Address,
8889                alloy::sol_types::private::Address,
8890            );
8891            #[cfg(test)]
8892            #[allow(dead_code, unreachable_patterns)]
8893            fn _type_assertion(
8894                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8895            ) {
8896                match _t {
8897                    alloy_sol_types::private::AssertTypeEq::<
8898                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8899                    >(_) => {}
8900                }
8901            }
8902            #[automatically_derived]
8903            #[doc(hidden)]
8904            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
8905                fn from(value: undelegationsCall) -> Self {
8906                    (value.validator, value.delegator)
8907                }
8908            }
8909            #[automatically_derived]
8910            #[doc(hidden)]
8911            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
8912                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8913                    Self {
8914                        validator: tuple.0,
8915                        delegator: tuple.1,
8916                    }
8917                }
8918            }
8919        }
8920        {
8921            #[doc(hidden)]
8922            #[allow(dead_code)]
8923            type UnderlyingSolTuple<'a> = (
8924                alloy::sol_types::sol_data::Uint<256>,
8925                alloy::sol_types::sol_data::Uint<256>,
8926            );
8927            #[doc(hidden)]
8928            type UnderlyingRustTuple<'a> = (
8929                alloy::sol_types::private::primitives::aliases::U256,
8930                alloy::sol_types::private::primitives::aliases::U256,
8931            );
8932            #[cfg(test)]
8933            #[allow(dead_code, unreachable_patterns)]
8934            fn _type_assertion(
8935                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8936            ) {
8937                match _t {
8938                    alloy_sol_types::private::AssertTypeEq::<
8939                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8940                    >(_) => {}
8941                }
8942            }
8943            #[automatically_derived]
8944            #[doc(hidden)]
8945            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
8946                fn from(value: undelegationsReturn) -> Self {
8947                    (value.amount, value.unlocksAt)
8948                }
8949            }
8950            #[automatically_derived]
8951            #[doc(hidden)]
8952            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
8953                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8954                    Self {
8955                        amount: tuple.0,
8956                        unlocksAt: tuple.1,
8957                    }
8958                }
8959            }
8960        }
8961        impl undelegationsReturn {
8962            fn _tokenize(
8963                &self,
8964            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8965                (
8966                    <alloy::sol_types::sol_data::Uint<
8967                        256,
8968                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8969                    <alloy::sol_types::sol_data::Uint<
8970                        256,
8971                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
8972                )
8973            }
8974        }
8975        #[automatically_derived]
8976        impl alloy_sol_types::SolCall for undelegationsCall {
8977            type Parameters<'a> = (
8978                alloy::sol_types::sol_data::Address,
8979                alloy::sol_types::sol_data::Address,
8980            );
8981            type Token<'a> = <Self::Parameters<
8982                'a,
8983            > as alloy_sol_types::SolType>::Token<'a>;
8984            type Return = undelegationsReturn;
8985            type ReturnTuple<'a> = (
8986                alloy::sol_types::sol_data::Uint<256>,
8987                alloy::sol_types::sol_data::Uint<256>,
8988            );
8989            type ReturnToken<'a> = <Self::ReturnTuple<
8990                'a,
8991            > as alloy_sol_types::SolType>::Token<'a>;
8992            const SIGNATURE: &'static str = "undelegations(address,address)";
8993            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
8994            #[inline]
8995            fn new<'a>(
8996                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8997            ) -> Self {
8998                tuple.into()
8999            }
9000            #[inline]
9001            fn tokenize(&self) -> Self::Token<'_> {
9002                (
9003                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9004                        &self.validator,
9005                    ),
9006                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9007                        &self.delegator,
9008                    ),
9009                )
9010            }
9011            #[inline]
9012            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9013                undelegationsReturn::_tokenize(ret)
9014            }
9015            #[inline]
9016            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9017                <Self::ReturnTuple<
9018                    '_,
9019                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9020                    .map(Into::into)
9021            }
9022            #[inline]
9023            fn abi_decode_returns_validate(
9024                data: &[u8],
9025            ) -> alloy_sol_types::Result<Self::Return> {
9026                <Self::ReturnTuple<
9027                    '_,
9028                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9029                    .map(Into::into)
9030            }
9031        }
9032    };
9033    #[derive(serde::Serialize, serde::Deserialize)]
9034    #[derive()]
9035    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
9036```solidity
9037function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
9038```*/
9039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9040    #[derive(Clone)]
9041    pub struct updateConsensusKeysCall {
9042        #[allow(missing_docs)]
9043        pub newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
9044        #[allow(missing_docs)]
9045        pub newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
9046        #[allow(missing_docs)]
9047        pub newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
9048    }
9049    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
9050    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9051    #[derive(Clone)]
9052    pub struct updateConsensusKeysReturn {}
9053    #[allow(
9054        non_camel_case_types,
9055        non_snake_case,
9056        clippy::pub_underscore_fields,
9057        clippy::style
9058    )]
9059    const _: () = {
9060        use alloy::sol_types as alloy_sol_types;
9061        {
9062            #[doc(hidden)]
9063            #[allow(dead_code)]
9064            type UnderlyingSolTuple<'a> = (
9065                BN254::G2Point,
9066                EdOnBN254::EdOnBN254Point,
9067                BN254::G1Point,
9068            );
9069            #[doc(hidden)]
9070            type UnderlyingRustTuple<'a> = (
9071                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
9072                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
9073                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
9074            );
9075            #[cfg(test)]
9076            #[allow(dead_code, unreachable_patterns)]
9077            fn _type_assertion(
9078                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9079            ) {
9080                match _t {
9081                    alloy_sol_types::private::AssertTypeEq::<
9082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9083                    >(_) => {}
9084                }
9085            }
9086            #[automatically_derived]
9087            #[doc(hidden)]
9088            impl ::core::convert::From<updateConsensusKeysCall>
9089            for UnderlyingRustTuple<'_> {
9090                fn from(value: updateConsensusKeysCall) -> Self {
9091                    (value.newBlsVK, value.newSchnorrVK, value.newBlsSig)
9092                }
9093            }
9094            #[automatically_derived]
9095            #[doc(hidden)]
9096            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9097            for updateConsensusKeysCall {
9098                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9099                    Self {
9100                        newBlsVK: tuple.0,
9101                        newSchnorrVK: tuple.1,
9102                        newBlsSig: tuple.2,
9103                    }
9104                }
9105            }
9106        }
9107        {
9108            #[doc(hidden)]
9109            #[allow(dead_code)]
9110            type UnderlyingSolTuple<'a> = ();
9111            #[doc(hidden)]
9112            type UnderlyingRustTuple<'a> = ();
9113            #[cfg(test)]
9114            #[allow(dead_code, unreachable_patterns)]
9115            fn _type_assertion(
9116                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9117            ) {
9118                match _t {
9119                    alloy_sol_types::private::AssertTypeEq::<
9120                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9121                    >(_) => {}
9122                }
9123            }
9124            #[automatically_derived]
9125            #[doc(hidden)]
9126            impl ::core::convert::From<updateConsensusKeysReturn>
9127            for UnderlyingRustTuple<'_> {
9128                fn from(value: updateConsensusKeysReturn) -> Self {
9129                    ()
9130                }
9131            }
9132            #[automatically_derived]
9133            #[doc(hidden)]
9134            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9135            for updateConsensusKeysReturn {
9136                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9137                    Self {}
9138                }
9139            }
9140        }
9141        impl updateConsensusKeysReturn {
9142            fn _tokenize(
9143                &self,
9144            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9145                ()
9146            }
9147        }
9148        #[automatically_derived]
9149        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
9150            type Parameters<'a> = (
9151                BN254::G2Point,
9152                EdOnBN254::EdOnBN254Point,
9153                BN254::G1Point,
9154            );
9155            type Token<'a> = <Self::Parameters<
9156                'a,
9157            > as alloy_sol_types::SolType>::Token<'a>;
9158            type Return = updateConsensusKeysReturn;
9159            type ReturnTuple<'a> = ();
9160            type ReturnToken<'a> = <Self::ReturnTuple<
9161                'a,
9162            > as alloy_sol_types::SolType>::Token<'a>;
9163            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
9164            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
9165            #[inline]
9166            fn new<'a>(
9167                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9168            ) -> Self {
9169                tuple.into()
9170            }
9171            #[inline]
9172            fn tokenize(&self) -> Self::Token<'_> {
9173                (
9174                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(
9175                        &self.newBlsVK,
9176                    ),
9177                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
9178                        &self.newSchnorrVK,
9179                    ),
9180                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
9181                        &self.newBlsSig,
9182                    ),
9183                )
9184            }
9185            #[inline]
9186            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9187                updateConsensusKeysReturn::_tokenize(ret)
9188            }
9189            #[inline]
9190            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9191                <Self::ReturnTuple<
9192                    '_,
9193                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9194                    .map(Into::into)
9195            }
9196            #[inline]
9197            fn abi_decode_returns_validate(
9198                data: &[u8],
9199            ) -> alloy_sol_types::Result<Self::Return> {
9200                <Self::ReturnTuple<
9201                    '_,
9202                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9203                    .map(Into::into)
9204            }
9205        }
9206    };
9207    #[derive(serde::Serialize, serde::Deserialize)]
9208    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9209    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
9210```solidity
9211function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
9212```*/
9213    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9214    #[derive(Clone)]
9215    pub struct upgradeToAndCallCall {
9216        #[allow(missing_docs)]
9217        pub newImplementation: alloy::sol_types::private::Address,
9218        #[allow(missing_docs)]
9219        pub data: alloy::sol_types::private::Bytes,
9220    }
9221    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
9222    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9223    #[derive(Clone)]
9224    pub struct upgradeToAndCallReturn {}
9225    #[allow(
9226        non_camel_case_types,
9227        non_snake_case,
9228        clippy::pub_underscore_fields,
9229        clippy::style
9230    )]
9231    const _: () = {
9232        use alloy::sol_types as alloy_sol_types;
9233        {
9234            #[doc(hidden)]
9235            #[allow(dead_code)]
9236            type UnderlyingSolTuple<'a> = (
9237                alloy::sol_types::sol_data::Address,
9238                alloy::sol_types::sol_data::Bytes,
9239            );
9240            #[doc(hidden)]
9241            type UnderlyingRustTuple<'a> = (
9242                alloy::sol_types::private::Address,
9243                alloy::sol_types::private::Bytes,
9244            );
9245            #[cfg(test)]
9246            #[allow(dead_code, unreachable_patterns)]
9247            fn _type_assertion(
9248                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9249            ) {
9250                match _t {
9251                    alloy_sol_types::private::AssertTypeEq::<
9252                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9253                    >(_) => {}
9254                }
9255            }
9256            #[automatically_derived]
9257            #[doc(hidden)]
9258            impl ::core::convert::From<upgradeToAndCallCall>
9259            for UnderlyingRustTuple<'_> {
9260                fn from(value: upgradeToAndCallCall) -> Self {
9261                    (value.newImplementation, value.data)
9262                }
9263            }
9264            #[automatically_derived]
9265            #[doc(hidden)]
9266            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9267            for upgradeToAndCallCall {
9268                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9269                    Self {
9270                        newImplementation: tuple.0,
9271                        data: tuple.1,
9272                    }
9273                }
9274            }
9275        }
9276        {
9277            #[doc(hidden)]
9278            #[allow(dead_code)]
9279            type UnderlyingSolTuple<'a> = ();
9280            #[doc(hidden)]
9281            type UnderlyingRustTuple<'a> = ();
9282            #[cfg(test)]
9283            #[allow(dead_code, unreachable_patterns)]
9284            fn _type_assertion(
9285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9286            ) {
9287                match _t {
9288                    alloy_sol_types::private::AssertTypeEq::<
9289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9290                    >(_) => {}
9291                }
9292            }
9293            #[automatically_derived]
9294            #[doc(hidden)]
9295            impl ::core::convert::From<upgradeToAndCallReturn>
9296            for UnderlyingRustTuple<'_> {
9297                fn from(value: upgradeToAndCallReturn) -> Self {
9298                    ()
9299                }
9300            }
9301            #[automatically_derived]
9302            #[doc(hidden)]
9303            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9304            for upgradeToAndCallReturn {
9305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9306                    Self {}
9307                }
9308            }
9309        }
9310        impl upgradeToAndCallReturn {
9311            fn _tokenize(
9312                &self,
9313            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9314                ()
9315            }
9316        }
9317        #[automatically_derived]
9318        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
9319            type Parameters<'a> = (
9320                alloy::sol_types::sol_data::Address,
9321                alloy::sol_types::sol_data::Bytes,
9322            );
9323            type Token<'a> = <Self::Parameters<
9324                'a,
9325            > as alloy_sol_types::SolType>::Token<'a>;
9326            type Return = upgradeToAndCallReturn;
9327            type ReturnTuple<'a> = ();
9328            type ReturnToken<'a> = <Self::ReturnTuple<
9329                'a,
9330            > as alloy_sol_types::SolType>::Token<'a>;
9331            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
9332            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
9333            #[inline]
9334            fn new<'a>(
9335                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9336            ) -> Self {
9337                tuple.into()
9338            }
9339            #[inline]
9340            fn tokenize(&self) -> Self::Token<'_> {
9341                (
9342                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9343                        &self.newImplementation,
9344                    ),
9345                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9346                        &self.data,
9347                    ),
9348                )
9349            }
9350            #[inline]
9351            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9352                upgradeToAndCallReturn::_tokenize(ret)
9353            }
9354            #[inline]
9355            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9356                <Self::ReturnTuple<
9357                    '_,
9358                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9359                    .map(Into::into)
9360            }
9361            #[inline]
9362            fn abi_decode_returns_validate(
9363                data: &[u8],
9364            ) -> alloy_sol_types::Result<Self::Return> {
9365                <Self::ReturnTuple<
9366                    '_,
9367                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9368                    .map(Into::into)
9369            }
9370        }
9371    };
9372    #[derive(serde::Serialize, serde::Deserialize)]
9373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9374    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
9375```solidity
9376function validatorExits(address validator) external view returns (uint256 unlocksAt);
9377```*/
9378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9379    #[derive(Clone)]
9380    pub struct validatorExitsCall {
9381        #[allow(missing_docs)]
9382        pub validator: alloy::sol_types::private::Address,
9383    }
9384    #[derive(serde::Serialize, serde::Deserialize)]
9385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9386    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
9387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9388    #[derive(Clone)]
9389    pub struct validatorExitsReturn {
9390        #[allow(missing_docs)]
9391        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
9392    }
9393    #[allow(
9394        non_camel_case_types,
9395        non_snake_case,
9396        clippy::pub_underscore_fields,
9397        clippy::style
9398    )]
9399    const _: () = {
9400        use alloy::sol_types as alloy_sol_types;
9401        {
9402            #[doc(hidden)]
9403            #[allow(dead_code)]
9404            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9405            #[doc(hidden)]
9406            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9407            #[cfg(test)]
9408            #[allow(dead_code, unreachable_patterns)]
9409            fn _type_assertion(
9410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9411            ) {
9412                match _t {
9413                    alloy_sol_types::private::AssertTypeEq::<
9414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9415                    >(_) => {}
9416                }
9417            }
9418            #[automatically_derived]
9419            #[doc(hidden)]
9420            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
9421                fn from(value: validatorExitsCall) -> Self {
9422                    (value.validator,)
9423                }
9424            }
9425            #[automatically_derived]
9426            #[doc(hidden)]
9427            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
9428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9429                    Self { validator: tuple.0 }
9430                }
9431            }
9432        }
9433        {
9434            #[doc(hidden)]
9435            #[allow(dead_code)]
9436            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9437            #[doc(hidden)]
9438            type UnderlyingRustTuple<'a> = (
9439                alloy::sol_types::private::primitives::aliases::U256,
9440            );
9441            #[cfg(test)]
9442            #[allow(dead_code, unreachable_patterns)]
9443            fn _type_assertion(
9444                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9445            ) {
9446                match _t {
9447                    alloy_sol_types::private::AssertTypeEq::<
9448                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9449                    >(_) => {}
9450                }
9451            }
9452            #[automatically_derived]
9453            #[doc(hidden)]
9454            impl ::core::convert::From<validatorExitsReturn>
9455            for UnderlyingRustTuple<'_> {
9456                fn from(value: validatorExitsReturn) -> Self {
9457                    (value.unlocksAt,)
9458                }
9459            }
9460            #[automatically_derived]
9461            #[doc(hidden)]
9462            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9463            for validatorExitsReturn {
9464                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9465                    Self { unlocksAt: tuple.0 }
9466                }
9467            }
9468        }
9469        #[automatically_derived]
9470        impl alloy_sol_types::SolCall for validatorExitsCall {
9471            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9472            type Token<'a> = <Self::Parameters<
9473                'a,
9474            > as alloy_sol_types::SolType>::Token<'a>;
9475            type Return = alloy::sol_types::private::primitives::aliases::U256;
9476            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9477            type ReturnToken<'a> = <Self::ReturnTuple<
9478                'a,
9479            > as alloy_sol_types::SolType>::Token<'a>;
9480            const SIGNATURE: &'static str = "validatorExits(address)";
9481            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
9482            #[inline]
9483            fn new<'a>(
9484                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9485            ) -> Self {
9486                tuple.into()
9487            }
9488            #[inline]
9489            fn tokenize(&self) -> Self::Token<'_> {
9490                (
9491                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9492                        &self.validator,
9493                    ),
9494                )
9495            }
9496            #[inline]
9497            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9498                (
9499                    <alloy::sol_types::sol_data::Uint<
9500                        256,
9501                    > as alloy_sol_types::SolType>::tokenize(ret),
9502                )
9503            }
9504            #[inline]
9505            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9506                <Self::ReturnTuple<
9507                    '_,
9508                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9509                    .map(|r| {
9510                        let r: validatorExitsReturn = r.into();
9511                        r.unlocksAt
9512                    })
9513            }
9514            #[inline]
9515            fn abi_decode_returns_validate(
9516                data: &[u8],
9517            ) -> alloy_sol_types::Result<Self::Return> {
9518                <Self::ReturnTuple<
9519                    '_,
9520                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9521                    .map(|r| {
9522                        let r: validatorExitsReturn = r.into();
9523                        r.unlocksAt
9524                    })
9525            }
9526        }
9527    };
9528    #[derive(serde::Serialize, serde::Deserialize)]
9529    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9530    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
9531```solidity
9532function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
9533```*/
9534    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9535    #[derive(Clone)]
9536    pub struct validatorsCall {
9537        #[allow(missing_docs)]
9538        pub account: alloy::sol_types::private::Address,
9539    }
9540    #[derive(serde::Serialize, serde::Deserialize)]
9541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9542    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
9543    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9544    #[derive(Clone)]
9545    pub struct validatorsReturn {
9546        #[allow(missing_docs)]
9547        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
9548        #[allow(missing_docs)]
9549        pub status: <ValidatorStatus as alloy::sol_types::SolType>::RustType,
9550    }
9551    #[allow(
9552        non_camel_case_types,
9553        non_snake_case,
9554        clippy::pub_underscore_fields,
9555        clippy::style
9556    )]
9557    const _: () = {
9558        use alloy::sol_types as alloy_sol_types;
9559        {
9560            #[doc(hidden)]
9561            #[allow(dead_code)]
9562            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9563            #[doc(hidden)]
9564            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9565            #[cfg(test)]
9566            #[allow(dead_code, unreachable_patterns)]
9567            fn _type_assertion(
9568                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9569            ) {
9570                match _t {
9571                    alloy_sol_types::private::AssertTypeEq::<
9572                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9573                    >(_) => {}
9574                }
9575            }
9576            #[automatically_derived]
9577            #[doc(hidden)]
9578            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
9579                fn from(value: validatorsCall) -> Self {
9580                    (value.account,)
9581                }
9582            }
9583            #[automatically_derived]
9584            #[doc(hidden)]
9585            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
9586                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9587                    Self { account: tuple.0 }
9588                }
9589            }
9590        }
9591        {
9592            #[doc(hidden)]
9593            #[allow(dead_code)]
9594            type UnderlyingSolTuple<'a> = (
9595                alloy::sol_types::sol_data::Uint<256>,
9596                ValidatorStatus,
9597            );
9598            #[doc(hidden)]
9599            type UnderlyingRustTuple<'a> = (
9600                alloy::sol_types::private::primitives::aliases::U256,
9601                <ValidatorStatus as alloy::sol_types::SolType>::RustType,
9602            );
9603            #[cfg(test)]
9604            #[allow(dead_code, unreachable_patterns)]
9605            fn _type_assertion(
9606                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9607            ) {
9608                match _t {
9609                    alloy_sol_types::private::AssertTypeEq::<
9610                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9611                    >(_) => {}
9612                }
9613            }
9614            #[automatically_derived]
9615            #[doc(hidden)]
9616            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
9617                fn from(value: validatorsReturn) -> Self {
9618                    (value.delegatedAmount, value.status)
9619                }
9620            }
9621            #[automatically_derived]
9622            #[doc(hidden)]
9623            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
9624                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9625                    Self {
9626                        delegatedAmount: tuple.0,
9627                        status: tuple.1,
9628                    }
9629                }
9630            }
9631        }
9632        impl validatorsReturn {
9633            fn _tokenize(
9634                &self,
9635            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9636                (
9637                    <alloy::sol_types::sol_data::Uint<
9638                        256,
9639                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
9640                    <ValidatorStatus as alloy_sol_types::SolType>::tokenize(&self.status),
9641                )
9642            }
9643        }
9644        #[automatically_derived]
9645        impl alloy_sol_types::SolCall for validatorsCall {
9646            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9647            type Token<'a> = <Self::Parameters<
9648                'a,
9649            > as alloy_sol_types::SolType>::Token<'a>;
9650            type Return = validatorsReturn;
9651            type ReturnTuple<'a> = (
9652                alloy::sol_types::sol_data::Uint<256>,
9653                ValidatorStatus,
9654            );
9655            type ReturnToken<'a> = <Self::ReturnTuple<
9656                'a,
9657            > as alloy_sol_types::SolType>::Token<'a>;
9658            const SIGNATURE: &'static str = "validators(address)";
9659            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
9660            #[inline]
9661            fn new<'a>(
9662                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9663            ) -> Self {
9664                tuple.into()
9665            }
9666            #[inline]
9667            fn tokenize(&self) -> Self::Token<'_> {
9668                (
9669                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9670                        &self.account,
9671                    ),
9672                )
9673            }
9674            #[inline]
9675            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9676                validatorsReturn::_tokenize(ret)
9677            }
9678            #[inline]
9679            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9680                <Self::ReturnTuple<
9681                    '_,
9682                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9683                    .map(Into::into)
9684            }
9685            #[inline]
9686            fn abi_decode_returns_validate(
9687                data: &[u8],
9688            ) -> alloy_sol_types::Result<Self::Return> {
9689                <Self::ReturnTuple<
9690                    '_,
9691                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9692                    .map(Into::into)
9693            }
9694        }
9695    };
9696    ///Container for all the [`StakeTable`](self) function calls.
9697    #[derive(Clone)]
9698    #[derive(serde::Serialize, serde::Deserialize)]
9699    #[derive()]
9700    pub enum StakeTableCalls {
9701        #[allow(missing_docs)]
9702        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
9703        #[allow(missing_docs)]
9704        _hashBlsKey(_hashBlsKeyCall),
9705        #[allow(missing_docs)]
9706        blsKeys(blsKeysCall),
9707        #[allow(missing_docs)]
9708        claimValidatorExit(claimValidatorExitCall),
9709        #[allow(missing_docs)]
9710        claimWithdrawal(claimWithdrawalCall),
9711        #[allow(missing_docs)]
9712        delegate(delegateCall),
9713        #[allow(missing_docs)]
9714        delegations(delegationsCall),
9715        #[allow(missing_docs)]
9716        deregisterValidator(deregisterValidatorCall),
9717        #[allow(missing_docs)]
9718        exitEscrowPeriod(exitEscrowPeriodCall),
9719        #[allow(missing_docs)]
9720        getVersion(getVersionCall),
9721        #[allow(missing_docs)]
9722        initialize(initializeCall),
9723        #[allow(missing_docs)]
9724        initializedAtBlock(initializedAtBlockCall),
9725        #[allow(missing_docs)]
9726        lightClient(lightClientCall),
9727        #[allow(missing_docs)]
9728        owner(ownerCall),
9729        #[allow(missing_docs)]
9730        proxiableUUID(proxiableUUIDCall),
9731        #[allow(missing_docs)]
9732        registerValidator(registerValidatorCall),
9733        #[allow(missing_docs)]
9734        renounceOwnership(renounceOwnershipCall),
9735        #[allow(missing_docs)]
9736        token(tokenCall),
9737        #[allow(missing_docs)]
9738        transferOwnership(transferOwnershipCall),
9739        #[allow(missing_docs)]
9740        undelegate(undelegateCall),
9741        #[allow(missing_docs)]
9742        undelegations(undelegationsCall),
9743        #[allow(missing_docs)]
9744        updateConsensusKeys(updateConsensusKeysCall),
9745        #[allow(missing_docs)]
9746        upgradeToAndCall(upgradeToAndCallCall),
9747        #[allow(missing_docs)]
9748        validatorExits(validatorExitsCall),
9749        #[allow(missing_docs)]
9750        validators(validatorsCall),
9751    }
9752    impl StakeTableCalls {
9753        /// All the selectors of this enum.
9754        ///
9755        /// Note that the selectors might not be in the same order as the variants.
9756        /// No guarantees are made about the order of the selectors.
9757        ///
9758        /// Prefer using `SolInterface` methods instead.
9759        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9760            [2u8, 110u8, 64u8, 43u8],
9761            [13u8, 142u8, 110u8, 44u8],
9762            [19u8, 185u8, 5u8, 122u8],
9763            [33u8, 64u8, 254u8, 205u8],
9764            [62u8, 157u8, 249u8, 181u8],
9765            [77u8, 153u8, 221u8, 22u8],
9766            [79u8, 30u8, 242u8, 134u8],
9767            [82u8, 209u8, 144u8, 45u8],
9768            [85u8, 68u8, 194u8, 241u8],
9769            [106u8, 145u8, 28u8, 207u8],
9770            [113u8, 80u8, 24u8, 166u8],
9771            [141u8, 165u8, 203u8, 91u8],
9772            [155u8, 48u8, 165u8, 230u8],
9773            [158u8, 154u8, 143u8, 49u8],
9774            [162u8, 215u8, 141u8, 213u8],
9775            [163u8, 6u8, 106u8, 171u8],
9776            [173u8, 60u8, 177u8, 204u8],
9777            [179u8, 230u8, 235u8, 213u8],
9778            [181u8, 112u8, 14u8, 104u8],
9779            [181u8, 236u8, 179u8, 68u8],
9780            [190u8, 32u8, 48u8, 148u8],
9781            [198u8, 72u8, 20u8, 221u8],
9782            [242u8, 253u8, 227u8, 139u8],
9783            [250u8, 82u8, 199u8, 216u8],
9784            [252u8, 12u8, 84u8, 106u8],
9785        ];
9786        /// The names of the variants in the same order as `SELECTORS`.
9787        pub const VARIANT_NAMES: &'static [&'static str] = &[
9788            ::core::stringify!(delegate),
9789            ::core::stringify!(getVersion),
9790            ::core::stringify!(registerValidator),
9791            ::core::stringify!(claimValidatorExit),
9792            ::core::stringify!(initializedAtBlock),
9793            ::core::stringify!(undelegate),
9794            ::core::stringify!(upgradeToAndCall),
9795            ::core::stringify!(proxiableUUID),
9796            ::core::stringify!(updateConsensusKeys),
9797            ::core::stringify!(deregisterValidator),
9798            ::core::stringify!(renounceOwnership),
9799            ::core::stringify!(owner),
9800            ::core::stringify!(_hashBlsKey),
9801            ::core::stringify!(exitEscrowPeriod),
9802            ::core::stringify!(undelegations),
9803            ::core::stringify!(claimWithdrawal),
9804            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
9805            ::core::stringify!(blsKeys),
9806            ::core::stringify!(lightClient),
9807            ::core::stringify!(validatorExits),
9808            ::core::stringify!(initialize),
9809            ::core::stringify!(delegations),
9810            ::core::stringify!(transferOwnership),
9811            ::core::stringify!(validators),
9812            ::core::stringify!(token),
9813        ];
9814        /// The signatures in the same order as `SELECTORS`.
9815        pub const SIGNATURES: &'static [&'static str] = &[
9816            <delegateCall as alloy_sol_types::SolCall>::SIGNATURE,
9817            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
9818            <registerValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
9819            <claimValidatorExitCall as alloy_sol_types::SolCall>::SIGNATURE,
9820            <initializedAtBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
9821            <undelegateCall as alloy_sol_types::SolCall>::SIGNATURE,
9822            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
9823            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
9824            <updateConsensusKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
9825            <deregisterValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
9826            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
9827            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
9828            <_hashBlsKeyCall as alloy_sol_types::SolCall>::SIGNATURE,
9829            <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
9830            <undelegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
9831            <claimWithdrawalCall as alloy_sol_types::SolCall>::SIGNATURE,
9832            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
9833            <blsKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
9834            <lightClientCall as alloy_sol_types::SolCall>::SIGNATURE,
9835            <validatorExitsCall as alloy_sol_types::SolCall>::SIGNATURE,
9836            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
9837            <delegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
9838            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
9839            <validatorsCall as alloy_sol_types::SolCall>::SIGNATURE,
9840            <tokenCall as alloy_sol_types::SolCall>::SIGNATURE,
9841        ];
9842        /// Returns the signature for the given selector, if known.
9843        #[inline]
9844        pub fn signature_by_selector(
9845            selector: [u8; 4usize],
9846        ) -> ::core::option::Option<&'static str> {
9847            match Self::SELECTORS.binary_search(&selector) {
9848                ::core::result::Result::Ok(idx) => {
9849                    ::core::option::Option::Some(Self::SIGNATURES[idx])
9850                }
9851                ::core::result::Result::Err(_) => ::core::option::Option::None,
9852            }
9853        }
9854        /// Returns the enum variant name for the given selector, if known.
9855        #[inline]
9856        pub fn name_by_selector(
9857            selector: [u8; 4usize],
9858        ) -> ::core::option::Option<&'static str> {
9859            let sig = Self::signature_by_selector(selector)?;
9860            sig.split_once('(').map(|(name, _)| name)
9861        }
9862    }
9863    #[automatically_derived]
9864    impl alloy_sol_types::SolInterface for StakeTableCalls {
9865        const NAME: &'static str = "StakeTableCalls";
9866        const MIN_DATA_LENGTH: usize = 0usize;
9867        const COUNT: usize = 25usize;
9868        #[inline]
9869        fn selector(&self) -> [u8; 4] {
9870            match self {
9871                Self::UPGRADE_INTERFACE_VERSION(_) => {
9872                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
9873                }
9874                Self::_hashBlsKey(_) => {
9875                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
9876                }
9877                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
9878                Self::claimValidatorExit(_) => {
9879                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
9880                }
9881                Self::claimWithdrawal(_) => {
9882                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
9883                }
9884                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
9885                Self::delegations(_) => {
9886                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
9887                }
9888                Self::deregisterValidator(_) => {
9889                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
9890                }
9891                Self::exitEscrowPeriod(_) => {
9892                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9893                }
9894                Self::getVersion(_) => {
9895                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
9896                }
9897                Self::initialize(_) => {
9898                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
9899                }
9900                Self::initializedAtBlock(_) => {
9901                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
9902                }
9903                Self::lightClient(_) => {
9904                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
9905                }
9906                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9907                Self::proxiableUUID(_) => {
9908                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
9909                }
9910                Self::registerValidator(_) => {
9911                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
9912                }
9913                Self::renounceOwnership(_) => {
9914                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9915                }
9916                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
9917                Self::transferOwnership(_) => {
9918                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9919                }
9920                Self::undelegate(_) => {
9921                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
9922                }
9923                Self::undelegations(_) => {
9924                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
9925                }
9926                Self::updateConsensusKeys(_) => {
9927                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
9928                }
9929                Self::upgradeToAndCall(_) => {
9930                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
9931                }
9932                Self::validatorExits(_) => {
9933                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
9934                }
9935                Self::validators(_) => {
9936                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
9937                }
9938            }
9939        }
9940        #[inline]
9941        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9942            Self::SELECTORS.get(i).copied()
9943        }
9944        #[inline]
9945        fn valid_selector(selector: [u8; 4]) -> bool {
9946            Self::SELECTORS.binary_search(&selector).is_ok()
9947        }
9948        #[inline]
9949        #[allow(non_snake_case)]
9950        fn abi_decode_raw(
9951            selector: [u8; 4],
9952            data: &[u8],
9953        ) -> alloy_sol_types::Result<Self> {
9954            static DECODE_SHIMS: &[fn(
9955                &[u8],
9956            ) -> alloy_sol_types::Result<StakeTableCalls>] = &[
9957                {
9958                    fn delegate(
9959                        data: &[u8],
9960                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9961                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9962                            .map(StakeTableCalls::delegate)
9963                    }
9964                    delegate
9965                },
9966                {
9967                    fn getVersion(
9968                        data: &[u8],
9969                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9970                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
9971                                data,
9972                            )
9973                            .map(StakeTableCalls::getVersion)
9974                    }
9975                    getVersion
9976                },
9977                {
9978                    fn registerValidator(
9979                        data: &[u8],
9980                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9981                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9982                                data,
9983                            )
9984                            .map(StakeTableCalls::registerValidator)
9985                    }
9986                    registerValidator
9987                },
9988                {
9989                    fn claimValidatorExit(
9990                        data: &[u8],
9991                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9992                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
9993                                data,
9994                            )
9995                            .map(StakeTableCalls::claimValidatorExit)
9996                    }
9997                    claimValidatorExit
9998                },
9999                {
10000                    fn initializedAtBlock(
10001                        data: &[u8],
10002                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10003                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
10004                                data,
10005                            )
10006                            .map(StakeTableCalls::initializedAtBlock)
10007                    }
10008                    initializedAtBlock
10009                },
10010                {
10011                    fn undelegate(
10012                        data: &[u8],
10013                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10014                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10015                                data,
10016                            )
10017                            .map(StakeTableCalls::undelegate)
10018                    }
10019                    undelegate
10020                },
10021                {
10022                    fn upgradeToAndCall(
10023                        data: &[u8],
10024                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10025                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
10026                                data,
10027                            )
10028                            .map(StakeTableCalls::upgradeToAndCall)
10029                    }
10030                    upgradeToAndCall
10031                },
10032                {
10033                    fn proxiableUUID(
10034                        data: &[u8],
10035                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10036                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
10037                                data,
10038                            )
10039                            .map(StakeTableCalls::proxiableUUID)
10040                    }
10041                    proxiableUUID
10042                },
10043                {
10044                    fn updateConsensusKeys(
10045                        data: &[u8],
10046                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10047                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
10048                                data,
10049                            )
10050                            .map(StakeTableCalls::updateConsensusKeys)
10051                    }
10052                    updateConsensusKeys
10053                },
10054                {
10055                    fn deregisterValidator(
10056                        data: &[u8],
10057                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10058                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
10059                                data,
10060                            )
10061                            .map(StakeTableCalls::deregisterValidator)
10062                    }
10063                    deregisterValidator
10064                },
10065                {
10066                    fn renounceOwnership(
10067                        data: &[u8],
10068                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10069                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10070                                data,
10071                            )
10072                            .map(StakeTableCalls::renounceOwnership)
10073                    }
10074                    renounceOwnership
10075                },
10076                {
10077                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10078                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10079                            .map(StakeTableCalls::owner)
10080                    }
10081                    owner
10082                },
10083                {
10084                    fn _hashBlsKey(
10085                        data: &[u8],
10086                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10087                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
10088                                data,
10089                            )
10090                            .map(StakeTableCalls::_hashBlsKey)
10091                    }
10092                    _hashBlsKey
10093                },
10094                {
10095                    fn exitEscrowPeriod(
10096                        data: &[u8],
10097                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10098                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
10099                                data,
10100                            )
10101                            .map(StakeTableCalls::exitEscrowPeriod)
10102                    }
10103                    exitEscrowPeriod
10104                },
10105                {
10106                    fn undelegations(
10107                        data: &[u8],
10108                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10109                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10110                                data,
10111                            )
10112                            .map(StakeTableCalls::undelegations)
10113                    }
10114                    undelegations
10115                },
10116                {
10117                    fn claimWithdrawal(
10118                        data: &[u8],
10119                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10120                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
10121                                data,
10122                            )
10123                            .map(StakeTableCalls::claimWithdrawal)
10124                    }
10125                    claimWithdrawal
10126                },
10127                {
10128                    fn UPGRADE_INTERFACE_VERSION(
10129                        data: &[u8],
10130                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10131                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
10132                                data,
10133                            )
10134                            .map(StakeTableCalls::UPGRADE_INTERFACE_VERSION)
10135                    }
10136                    UPGRADE_INTERFACE_VERSION
10137                },
10138                {
10139                    fn blsKeys(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10140                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10141                            .map(StakeTableCalls::blsKeys)
10142                    }
10143                    blsKeys
10144                },
10145                {
10146                    fn lightClient(
10147                        data: &[u8],
10148                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10149                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
10150                                data,
10151                            )
10152                            .map(StakeTableCalls::lightClient)
10153                    }
10154                    lightClient
10155                },
10156                {
10157                    fn validatorExits(
10158                        data: &[u8],
10159                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10160                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10161                                data,
10162                            )
10163                            .map(StakeTableCalls::validatorExits)
10164                    }
10165                    validatorExits
10166                },
10167                {
10168                    fn initialize(
10169                        data: &[u8],
10170                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10171                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10172                                data,
10173                            )
10174                            .map(StakeTableCalls::initialize)
10175                    }
10176                    initialize
10177                },
10178                {
10179                    fn delegations(
10180                        data: &[u8],
10181                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10182                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10183                                data,
10184                            )
10185                            .map(StakeTableCalls::delegations)
10186                    }
10187                    delegations
10188                },
10189                {
10190                    fn transferOwnership(
10191                        data: &[u8],
10192                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10193                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10194                                data,
10195                            )
10196                            .map(StakeTableCalls::transferOwnership)
10197                    }
10198                    transferOwnership
10199                },
10200                {
10201                    fn validators(
10202                        data: &[u8],
10203                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10204                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10205                                data,
10206                            )
10207                            .map(StakeTableCalls::validators)
10208                    }
10209                    validators
10210                },
10211                {
10212                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10213                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10214                            .map(StakeTableCalls::token)
10215                    }
10216                    token
10217                },
10218            ];
10219            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10220                return Err(
10221                    alloy_sol_types::Error::unknown_selector(
10222                        <Self as alloy_sol_types::SolInterface>::NAME,
10223                        selector,
10224                    ),
10225                );
10226            };
10227            DECODE_SHIMS[idx](data)
10228        }
10229        #[inline]
10230        #[allow(non_snake_case)]
10231        fn abi_decode_raw_validate(
10232            selector: [u8; 4],
10233            data: &[u8],
10234        ) -> alloy_sol_types::Result<Self> {
10235            static DECODE_VALIDATE_SHIMS: &[fn(
10236                &[u8],
10237            ) -> alloy_sol_types::Result<StakeTableCalls>] = &[
10238                {
10239                    fn delegate(
10240                        data: &[u8],
10241                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10242                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10243                                data,
10244                            )
10245                            .map(StakeTableCalls::delegate)
10246                    }
10247                    delegate
10248                },
10249                {
10250                    fn getVersion(
10251                        data: &[u8],
10252                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10253                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10254                                data,
10255                            )
10256                            .map(StakeTableCalls::getVersion)
10257                    }
10258                    getVersion
10259                },
10260                {
10261                    fn registerValidator(
10262                        data: &[u8],
10263                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10264                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10265                                data,
10266                            )
10267                            .map(StakeTableCalls::registerValidator)
10268                    }
10269                    registerValidator
10270                },
10271                {
10272                    fn claimValidatorExit(
10273                        data: &[u8],
10274                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10275                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10276                                data,
10277                            )
10278                            .map(StakeTableCalls::claimValidatorExit)
10279                    }
10280                    claimValidatorExit
10281                },
10282                {
10283                    fn initializedAtBlock(
10284                        data: &[u8],
10285                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10286                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10287                                data,
10288                            )
10289                            .map(StakeTableCalls::initializedAtBlock)
10290                    }
10291                    initializedAtBlock
10292                },
10293                {
10294                    fn undelegate(
10295                        data: &[u8],
10296                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10297                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10298                                data,
10299                            )
10300                            .map(StakeTableCalls::undelegate)
10301                    }
10302                    undelegate
10303                },
10304                {
10305                    fn upgradeToAndCall(
10306                        data: &[u8],
10307                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10308                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10309                                data,
10310                            )
10311                            .map(StakeTableCalls::upgradeToAndCall)
10312                    }
10313                    upgradeToAndCall
10314                },
10315                {
10316                    fn proxiableUUID(
10317                        data: &[u8],
10318                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10319                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10320                                data,
10321                            )
10322                            .map(StakeTableCalls::proxiableUUID)
10323                    }
10324                    proxiableUUID
10325                },
10326                {
10327                    fn updateConsensusKeys(
10328                        data: &[u8],
10329                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10330                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10331                                data,
10332                            )
10333                            .map(StakeTableCalls::updateConsensusKeys)
10334                    }
10335                    updateConsensusKeys
10336                },
10337                {
10338                    fn deregisterValidator(
10339                        data: &[u8],
10340                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10341                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10342                                data,
10343                            )
10344                            .map(StakeTableCalls::deregisterValidator)
10345                    }
10346                    deregisterValidator
10347                },
10348                {
10349                    fn renounceOwnership(
10350                        data: &[u8],
10351                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10352                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10353                                data,
10354                            )
10355                            .map(StakeTableCalls::renounceOwnership)
10356                    }
10357                    renounceOwnership
10358                },
10359                {
10360                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10361                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10362                                data,
10363                            )
10364                            .map(StakeTableCalls::owner)
10365                    }
10366                    owner
10367                },
10368                {
10369                    fn _hashBlsKey(
10370                        data: &[u8],
10371                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10372                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10373                                data,
10374                            )
10375                            .map(StakeTableCalls::_hashBlsKey)
10376                    }
10377                    _hashBlsKey
10378                },
10379                {
10380                    fn exitEscrowPeriod(
10381                        data: &[u8],
10382                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10383                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10384                                data,
10385                            )
10386                            .map(StakeTableCalls::exitEscrowPeriod)
10387                    }
10388                    exitEscrowPeriod
10389                },
10390                {
10391                    fn undelegations(
10392                        data: &[u8],
10393                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10394                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10395                                data,
10396                            )
10397                            .map(StakeTableCalls::undelegations)
10398                    }
10399                    undelegations
10400                },
10401                {
10402                    fn claimWithdrawal(
10403                        data: &[u8],
10404                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10405                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10406                                data,
10407                            )
10408                            .map(StakeTableCalls::claimWithdrawal)
10409                    }
10410                    claimWithdrawal
10411                },
10412                {
10413                    fn UPGRADE_INTERFACE_VERSION(
10414                        data: &[u8],
10415                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10416                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10417                                data,
10418                            )
10419                            .map(StakeTableCalls::UPGRADE_INTERFACE_VERSION)
10420                    }
10421                    UPGRADE_INTERFACE_VERSION
10422                },
10423                {
10424                    fn blsKeys(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10425                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10426                                data,
10427                            )
10428                            .map(StakeTableCalls::blsKeys)
10429                    }
10430                    blsKeys
10431                },
10432                {
10433                    fn lightClient(
10434                        data: &[u8],
10435                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10436                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10437                                data,
10438                            )
10439                            .map(StakeTableCalls::lightClient)
10440                    }
10441                    lightClient
10442                },
10443                {
10444                    fn validatorExits(
10445                        data: &[u8],
10446                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10447                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10448                                data,
10449                            )
10450                            .map(StakeTableCalls::validatorExits)
10451                    }
10452                    validatorExits
10453                },
10454                {
10455                    fn initialize(
10456                        data: &[u8],
10457                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10458                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10459                                data,
10460                            )
10461                            .map(StakeTableCalls::initialize)
10462                    }
10463                    initialize
10464                },
10465                {
10466                    fn delegations(
10467                        data: &[u8],
10468                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10469                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10470                                data,
10471                            )
10472                            .map(StakeTableCalls::delegations)
10473                    }
10474                    delegations
10475                },
10476                {
10477                    fn transferOwnership(
10478                        data: &[u8],
10479                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10480                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10481                                data,
10482                            )
10483                            .map(StakeTableCalls::transferOwnership)
10484                    }
10485                    transferOwnership
10486                },
10487                {
10488                    fn validators(
10489                        data: &[u8],
10490                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10491                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10492                                data,
10493                            )
10494                            .map(StakeTableCalls::validators)
10495                    }
10496                    validators
10497                },
10498                {
10499                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10500                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10501                                data,
10502                            )
10503                            .map(StakeTableCalls::token)
10504                    }
10505                    token
10506                },
10507            ];
10508            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10509                return Err(
10510                    alloy_sol_types::Error::unknown_selector(
10511                        <Self as alloy_sol_types::SolInterface>::NAME,
10512                        selector,
10513                    ),
10514                );
10515            };
10516            DECODE_VALIDATE_SHIMS[idx](data)
10517        }
10518        #[inline]
10519        fn abi_encoded_size(&self) -> usize {
10520            match self {
10521                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10522                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
10523                        inner,
10524                    )
10525                }
10526                Self::_hashBlsKey(inner) => {
10527                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
10528                        inner,
10529                    )
10530                }
10531                Self::blsKeys(inner) => {
10532                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10533                }
10534                Self::claimValidatorExit(inner) => {
10535                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
10536                        inner,
10537                    )
10538                }
10539                Self::claimWithdrawal(inner) => {
10540                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
10541                        inner,
10542                    )
10543                }
10544                Self::delegate(inner) => {
10545                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10546                }
10547                Self::delegations(inner) => {
10548                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10549                        inner,
10550                    )
10551                }
10552                Self::deregisterValidator(inner) => {
10553                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10554                        inner,
10555                    )
10556                }
10557                Self::exitEscrowPeriod(inner) => {
10558                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10559                        inner,
10560                    )
10561                }
10562                Self::getVersion(inner) => {
10563                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10564                }
10565                Self::initialize(inner) => {
10566                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10567                }
10568                Self::initializedAtBlock(inner) => {
10569                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
10570                        inner,
10571                    )
10572                }
10573                Self::lightClient(inner) => {
10574                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
10575                        inner,
10576                    )
10577                }
10578                Self::owner(inner) => {
10579                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10580                }
10581                Self::proxiableUUID(inner) => {
10582                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
10583                        inner,
10584                    )
10585                }
10586                Self::registerValidator(inner) => {
10587                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10588                        inner,
10589                    )
10590                }
10591                Self::renounceOwnership(inner) => {
10592                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10593                        inner,
10594                    )
10595                }
10596                Self::token(inner) => {
10597                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10598                }
10599                Self::transferOwnership(inner) => {
10600                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10601                        inner,
10602                    )
10603                }
10604                Self::undelegate(inner) => {
10605                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10606                }
10607                Self::undelegations(inner) => {
10608                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10609                        inner,
10610                    )
10611                }
10612                Self::updateConsensusKeys(inner) => {
10613                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
10614                        inner,
10615                    )
10616                }
10617                Self::upgradeToAndCall(inner) => {
10618                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
10619                        inner,
10620                    )
10621                }
10622                Self::validatorExits(inner) => {
10623                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10624                        inner,
10625                    )
10626                }
10627                Self::validators(inner) => {
10628                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10629                }
10630            }
10631        }
10632        #[inline]
10633        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10634            match self {
10635                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10636                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
10637                        inner,
10638                        out,
10639                    )
10640                }
10641                Self::_hashBlsKey(inner) => {
10642                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
10643                        inner,
10644                        out,
10645                    )
10646                }
10647                Self::blsKeys(inner) => {
10648                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10649                }
10650                Self::claimValidatorExit(inner) => {
10651                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
10652                        inner,
10653                        out,
10654                    )
10655                }
10656                Self::claimWithdrawal(inner) => {
10657                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
10658                        inner,
10659                        out,
10660                    )
10661                }
10662                Self::delegate(inner) => {
10663                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10664                        inner,
10665                        out,
10666                    )
10667                }
10668                Self::delegations(inner) => {
10669                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10670                        inner,
10671                        out,
10672                    )
10673                }
10674                Self::deregisterValidator(inner) => {
10675                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10676                        inner,
10677                        out,
10678                    )
10679                }
10680                Self::exitEscrowPeriod(inner) => {
10681                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10682                        inner,
10683                        out,
10684                    )
10685                }
10686                Self::getVersion(inner) => {
10687                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
10688                        inner,
10689                        out,
10690                    )
10691                }
10692                Self::initialize(inner) => {
10693                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10694                        inner,
10695                        out,
10696                    )
10697                }
10698                Self::initializedAtBlock(inner) => {
10699                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
10700                        inner,
10701                        out,
10702                    )
10703                }
10704                Self::lightClient(inner) => {
10705                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
10706                        inner,
10707                        out,
10708                    )
10709                }
10710                Self::owner(inner) => {
10711                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10712                }
10713                Self::proxiableUUID(inner) => {
10714                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
10715                        inner,
10716                        out,
10717                    )
10718                }
10719                Self::registerValidator(inner) => {
10720                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10721                        inner,
10722                        out,
10723                    )
10724                }
10725                Self::renounceOwnership(inner) => {
10726                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10727                        inner,
10728                        out,
10729                    )
10730                }
10731                Self::token(inner) => {
10732                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10733                }
10734                Self::transferOwnership(inner) => {
10735                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10736                        inner,
10737                        out,
10738                    )
10739                }
10740                Self::undelegate(inner) => {
10741                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10742                        inner,
10743                        out,
10744                    )
10745                }
10746                Self::undelegations(inner) => {
10747                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10748                        inner,
10749                        out,
10750                    )
10751                }
10752                Self::updateConsensusKeys(inner) => {
10753                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
10754                        inner,
10755                        out,
10756                    )
10757                }
10758                Self::upgradeToAndCall(inner) => {
10759                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
10760                        inner,
10761                        out,
10762                    )
10763                }
10764                Self::validatorExits(inner) => {
10765                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10766                        inner,
10767                        out,
10768                    )
10769                }
10770                Self::validators(inner) => {
10771                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10772                        inner,
10773                        out,
10774                    )
10775                }
10776            }
10777        }
10778    }
10779    ///Container for all the [`StakeTable`](self) custom errors.
10780    #[derive(Clone)]
10781    #[derive(serde::Serialize, serde::Deserialize)]
10782    #[derive(Debug, PartialEq, Eq, Hash)]
10783    pub enum StakeTableErrors {
10784        #[allow(missing_docs)]
10785        AddressEmptyCode(AddressEmptyCode),
10786        #[allow(missing_docs)]
10787        BLSSigVerificationFailed(BLSSigVerificationFailed),
10788        #[allow(missing_docs)]
10789        BN254PairingProdFailed(BN254PairingProdFailed),
10790        #[allow(missing_docs)]
10791        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
10792        #[allow(missing_docs)]
10793        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
10794        #[allow(missing_docs)]
10795        ERC1967NonPayable(ERC1967NonPayable),
10796        #[allow(missing_docs)]
10797        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
10798        #[allow(missing_docs)]
10799        FailedInnerCall(FailedInnerCall),
10800        #[allow(missing_docs)]
10801        InsufficientAllowance(InsufficientAllowance),
10802        #[allow(missing_docs)]
10803        InsufficientBalance(InsufficientBalance),
10804        #[allow(missing_docs)]
10805        InvalidCommission(InvalidCommission),
10806        #[allow(missing_docs)]
10807        InvalidG1(InvalidG1),
10808        #[allow(missing_docs)]
10809        InvalidInitialization(InvalidInitialization),
10810        #[allow(missing_docs)]
10811        InvalidSchnorrVK(InvalidSchnorrVK),
10812        #[allow(missing_docs)]
10813        NotInitializing(NotInitializing),
10814        #[allow(missing_docs)]
10815        NothingToWithdraw(NothingToWithdraw),
10816        #[allow(missing_docs)]
10817        OwnableInvalidOwner(OwnableInvalidOwner),
10818        #[allow(missing_docs)]
10819        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
10820        #[allow(missing_docs)]
10821        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
10822        #[allow(missing_docs)]
10823        PowPrecompileFailed(PowPrecompileFailed),
10824        #[allow(missing_docs)]
10825        PrematureWithdrawal(PrematureWithdrawal),
10826        #[allow(missing_docs)]
10827        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
10828        #[allow(missing_docs)]
10829        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
10830        #[allow(missing_docs)]
10831        UndelegationAlreadyExists(UndelegationAlreadyExists),
10832        #[allow(missing_docs)]
10833        ValidatorAlreadyExited(ValidatorAlreadyExited),
10834        #[allow(missing_docs)]
10835        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
10836        #[allow(missing_docs)]
10837        ValidatorInactive(ValidatorInactive),
10838        #[allow(missing_docs)]
10839        ValidatorNotExited(ValidatorNotExited),
10840        #[allow(missing_docs)]
10841        ZeroAddress(ZeroAddress),
10842        #[allow(missing_docs)]
10843        ZeroAmount(ZeroAmount),
10844    }
10845    impl StakeTableErrors {
10846        /// All the selectors of this enum.
10847        ///
10848        /// Note that the selectors might not be in the same order as the variants.
10849        /// No guarantees are made about the order of the selectors.
10850        ///
10851        /// Prefer using `SolInterface` methods instead.
10852        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10853            [1u8, 181u8, 20u8, 174u8],
10854            [6u8, 207u8, 67u8, 143u8],
10855            [12u8, 237u8, 62u8, 80u8],
10856            [17u8, 140u8, 218u8, 167u8],
10857            [20u8, 37u8, 234u8, 66u8],
10858            [30u8, 79u8, 189u8, 247u8],
10859            [31u8, 42u8, 32u8, 5u8],
10860            [42u8, 27u8, 45u8, 216u8],
10861            [47u8, 171u8, 146u8, 202u8],
10862            [50u8, 116u8, 250u8, 100u8],
10863            [76u8, 156u8, 140u8, 227u8],
10864            [80u8, 138u8, 121u8, 63u8],
10865            [90u8, 119u8, 67u8, 87u8],
10866            [146u8, 102u8, 83u8, 81u8],
10867            [153u8, 115u8, 247u8, 216u8],
10868            [153u8, 150u8, 179u8, 21u8],
10869            [158u8, 120u8, 209u8, 76u8],
10870            [170u8, 29u8, 73u8, 164u8],
10871            [179u8, 152u8, 151u8, 159u8],
10872            [181u8, 126u8, 33u8, 223u8],
10873            [194u8, 6u8, 51u8, 79u8],
10874            [208u8, 208u8, 79u8, 96u8],
10875            [212u8, 35u8, 164u8, 241u8],
10876            [215u8, 230u8, 188u8, 248u8],
10877            [217u8, 46u8, 35u8, 61u8],
10878            [220u8, 129u8, 219u8, 133u8],
10879            [224u8, 124u8, 141u8, 186u8],
10880            [234u8, 180u8, 169u8, 99u8],
10881            [242u8, 83u8, 20u8, 166u8],
10882            [249u8, 46u8, 232u8, 169u8],
10883        ];
10884        /// The names of the variants in the same order as `SELECTORS`.
10885        pub const VARIANT_NAMES: &'static [&'static str] = &[
10886            ::core::stringify!(BlsKeyAlreadyUsed),
10887            ::core::stringify!(InvalidSchnorrVK),
10888            ::core::stringify!(BLSSigVerificationFailed),
10889            ::core::stringify!(OwnableUnauthorizedAccount),
10890            ::core::stringify!(FailedInnerCall),
10891            ::core::stringify!(OwnableInvalidOwner),
10892            ::core::stringify!(ZeroAmount),
10893            ::core::stringify!(InsufficientAllowance),
10894            ::core::stringify!(OwnershipCannotBeRenounced),
10895            ::core::stringify!(PowPrecompileFailed),
10896            ::core::stringify!(ERC1967InvalidImplementation),
10897            ::core::stringify!(ValidatorInactive),
10898            ::core::stringify!(PrematureWithdrawal),
10899            ::core::stringify!(InsufficientBalance),
10900            ::core::stringify!(ValidatorAlreadyRegistered),
10901            ::core::stringify!(AddressEmptyCode),
10902            ::core::stringify!(InvalidG1),
10903            ::core::stringify!(UUPSUnsupportedProxiableUUID),
10904            ::core::stringify!(ERC1967NonPayable),
10905            ::core::stringify!(ExitEscrowPeriodInvalid),
10906            ::core::stringify!(BN254PairingProdFailed),
10907            ::core::stringify!(NothingToWithdraw),
10908            ::core::stringify!(UndelegationAlreadyExists),
10909            ::core::stringify!(NotInitializing),
10910            ::core::stringify!(ZeroAddress),
10911            ::core::stringify!(InvalidCommission),
10912            ::core::stringify!(UUPSUnauthorizedCallContext),
10913            ::core::stringify!(ValidatorAlreadyExited),
10914            ::core::stringify!(ValidatorNotExited),
10915            ::core::stringify!(InvalidInitialization),
10916        ];
10917        /// The signatures in the same order as `SELECTORS`.
10918        pub const SIGNATURES: &'static [&'static str] = &[
10919            <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
10920            <InvalidSchnorrVK as alloy_sol_types::SolError>::SIGNATURE,
10921            <BLSSigVerificationFailed as alloy_sol_types::SolError>::SIGNATURE,
10922            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
10923            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
10924            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
10925            <ZeroAmount as alloy_sol_types::SolError>::SIGNATURE,
10926            <InsufficientAllowance as alloy_sol_types::SolError>::SIGNATURE,
10927            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
10928            <PowPrecompileFailed as alloy_sol_types::SolError>::SIGNATURE,
10929            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
10930            <ValidatorInactive as alloy_sol_types::SolError>::SIGNATURE,
10931            <PrematureWithdrawal as alloy_sol_types::SolError>::SIGNATURE,
10932            <InsufficientBalance as alloy_sol_types::SolError>::SIGNATURE,
10933            <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SIGNATURE,
10934            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
10935            <InvalidG1 as alloy_sol_types::SolError>::SIGNATURE,
10936            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
10937            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
10938            <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SIGNATURE,
10939            <BN254PairingProdFailed as alloy_sol_types::SolError>::SIGNATURE,
10940            <NothingToWithdraw as alloy_sol_types::SolError>::SIGNATURE,
10941            <UndelegationAlreadyExists as alloy_sol_types::SolError>::SIGNATURE,
10942            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
10943            <ZeroAddress as alloy_sol_types::SolError>::SIGNATURE,
10944            <InvalidCommission as alloy_sol_types::SolError>::SIGNATURE,
10945            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
10946            <ValidatorAlreadyExited as alloy_sol_types::SolError>::SIGNATURE,
10947            <ValidatorNotExited as alloy_sol_types::SolError>::SIGNATURE,
10948            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
10949        ];
10950        /// Returns the signature for the given selector, if known.
10951        #[inline]
10952        pub fn signature_by_selector(
10953            selector: [u8; 4usize],
10954        ) -> ::core::option::Option<&'static str> {
10955            match Self::SELECTORS.binary_search(&selector) {
10956                ::core::result::Result::Ok(idx) => {
10957                    ::core::option::Option::Some(Self::SIGNATURES[idx])
10958                }
10959                ::core::result::Result::Err(_) => ::core::option::Option::None,
10960            }
10961        }
10962        /// Returns the enum variant name for the given selector, if known.
10963        #[inline]
10964        pub fn name_by_selector(
10965            selector: [u8; 4usize],
10966        ) -> ::core::option::Option<&'static str> {
10967            let sig = Self::signature_by_selector(selector)?;
10968            sig.split_once('(').map(|(name, _)| name)
10969        }
10970    }
10971    #[automatically_derived]
10972    impl alloy_sol_types::SolInterface for StakeTableErrors {
10973        const NAME: &'static str = "StakeTableErrors";
10974        const MIN_DATA_LENGTH: usize = 0usize;
10975        const COUNT: usize = 30usize;
10976        #[inline]
10977        fn selector(&self) -> [u8; 4] {
10978            match self {
10979                Self::AddressEmptyCode(_) => {
10980                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
10981                }
10982                Self::BLSSigVerificationFailed(_) => {
10983                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
10984                }
10985                Self::BN254PairingProdFailed(_) => {
10986                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
10987                }
10988                Self::BlsKeyAlreadyUsed(_) => {
10989                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
10990                }
10991                Self::ERC1967InvalidImplementation(_) => {
10992                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
10993                }
10994                Self::ERC1967NonPayable(_) => {
10995                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
10996                }
10997                Self::ExitEscrowPeriodInvalid(_) => {
10998                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
10999                }
11000                Self::FailedInnerCall(_) => {
11001                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
11002                }
11003                Self::InsufficientAllowance(_) => {
11004                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
11005                }
11006                Self::InsufficientBalance(_) => {
11007                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
11008                }
11009                Self::InvalidCommission(_) => {
11010                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
11011                }
11012                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
11013                Self::InvalidInitialization(_) => {
11014                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
11015                }
11016                Self::InvalidSchnorrVK(_) => {
11017                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
11018                }
11019                Self::NotInitializing(_) => {
11020                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
11021                }
11022                Self::NothingToWithdraw(_) => {
11023                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
11024                }
11025                Self::OwnableInvalidOwner(_) => {
11026                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
11027                }
11028                Self::OwnableUnauthorizedAccount(_) => {
11029                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
11030                }
11031                Self::OwnershipCannotBeRenounced(_) => {
11032                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
11033                }
11034                Self::PowPrecompileFailed(_) => {
11035                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
11036                }
11037                Self::PrematureWithdrawal(_) => {
11038                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
11039                }
11040                Self::UUPSUnauthorizedCallContext(_) => {
11041                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
11042                }
11043                Self::UUPSUnsupportedProxiableUUID(_) => {
11044                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
11045                }
11046                Self::UndelegationAlreadyExists(_) => {
11047                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
11048                }
11049                Self::ValidatorAlreadyExited(_) => {
11050                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
11051                }
11052                Self::ValidatorAlreadyRegistered(_) => {
11053                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
11054                }
11055                Self::ValidatorInactive(_) => {
11056                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
11057                }
11058                Self::ValidatorNotExited(_) => {
11059                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
11060                }
11061                Self::ZeroAddress(_) => {
11062                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
11063                }
11064                Self::ZeroAmount(_) => {
11065                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
11066                }
11067            }
11068        }
11069        #[inline]
11070        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11071            Self::SELECTORS.get(i).copied()
11072        }
11073        #[inline]
11074        fn valid_selector(selector: [u8; 4]) -> bool {
11075            Self::SELECTORS.binary_search(&selector).is_ok()
11076        }
11077        #[inline]
11078        #[allow(non_snake_case)]
11079        fn abi_decode_raw(
11080            selector: [u8; 4],
11081            data: &[u8],
11082        ) -> alloy_sol_types::Result<Self> {
11083            static DECODE_SHIMS: &[fn(
11084                &[u8],
11085            ) -> alloy_sol_types::Result<StakeTableErrors>] = &[
11086                {
11087                    fn BlsKeyAlreadyUsed(
11088                        data: &[u8],
11089                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11090                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
11091                                data,
11092                            )
11093                            .map(StakeTableErrors::BlsKeyAlreadyUsed)
11094                    }
11095                    BlsKeyAlreadyUsed
11096                },
11097                {
11098                    fn InvalidSchnorrVK(
11099                        data: &[u8],
11100                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11101                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
11102                                data,
11103                            )
11104                            .map(StakeTableErrors::InvalidSchnorrVK)
11105                    }
11106                    InvalidSchnorrVK
11107                },
11108                {
11109                    fn BLSSigVerificationFailed(
11110                        data: &[u8],
11111                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11112                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
11113                                data,
11114                            )
11115                            .map(StakeTableErrors::BLSSigVerificationFailed)
11116                    }
11117                    BLSSigVerificationFailed
11118                },
11119                {
11120                    fn OwnableUnauthorizedAccount(
11121                        data: &[u8],
11122                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11123                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
11124                                data,
11125                            )
11126                            .map(StakeTableErrors::OwnableUnauthorizedAccount)
11127                    }
11128                    OwnableUnauthorizedAccount
11129                },
11130                {
11131                    fn FailedInnerCall(
11132                        data: &[u8],
11133                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11134                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
11135                                data,
11136                            )
11137                            .map(StakeTableErrors::FailedInnerCall)
11138                    }
11139                    FailedInnerCall
11140                },
11141                {
11142                    fn OwnableInvalidOwner(
11143                        data: &[u8],
11144                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11145                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
11146                                data,
11147                            )
11148                            .map(StakeTableErrors::OwnableInvalidOwner)
11149                    }
11150                    OwnableInvalidOwner
11151                },
11152                {
11153                    fn ZeroAmount(
11154                        data: &[u8],
11155                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11156                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data)
11157                            .map(StakeTableErrors::ZeroAmount)
11158                    }
11159                    ZeroAmount
11160                },
11161                {
11162                    fn InsufficientAllowance(
11163                        data: &[u8],
11164                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11165                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
11166                                data,
11167                            )
11168                            .map(StakeTableErrors::InsufficientAllowance)
11169                    }
11170                    InsufficientAllowance
11171                },
11172                {
11173                    fn OwnershipCannotBeRenounced(
11174                        data: &[u8],
11175                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11176                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
11177                                data,
11178                            )
11179                            .map(StakeTableErrors::OwnershipCannotBeRenounced)
11180                    }
11181                    OwnershipCannotBeRenounced
11182                },
11183                {
11184                    fn PowPrecompileFailed(
11185                        data: &[u8],
11186                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11187                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
11188                                data,
11189                            )
11190                            .map(StakeTableErrors::PowPrecompileFailed)
11191                    }
11192                    PowPrecompileFailed
11193                },
11194                {
11195                    fn ERC1967InvalidImplementation(
11196                        data: &[u8],
11197                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11198                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
11199                                data,
11200                            )
11201                            .map(StakeTableErrors::ERC1967InvalidImplementation)
11202                    }
11203                    ERC1967InvalidImplementation
11204                },
11205                {
11206                    fn ValidatorInactive(
11207                        data: &[u8],
11208                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11209                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
11210                                data,
11211                            )
11212                            .map(StakeTableErrors::ValidatorInactive)
11213                    }
11214                    ValidatorInactive
11215                },
11216                {
11217                    fn PrematureWithdrawal(
11218                        data: &[u8],
11219                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11220                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
11221                                data,
11222                            )
11223                            .map(StakeTableErrors::PrematureWithdrawal)
11224                    }
11225                    PrematureWithdrawal
11226                },
11227                {
11228                    fn InsufficientBalance(
11229                        data: &[u8],
11230                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11231                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
11232                                data,
11233                            )
11234                            .map(StakeTableErrors::InsufficientBalance)
11235                    }
11236                    InsufficientBalance
11237                },
11238                {
11239                    fn ValidatorAlreadyRegistered(
11240                        data: &[u8],
11241                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11242                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
11243                                data,
11244                            )
11245                            .map(StakeTableErrors::ValidatorAlreadyRegistered)
11246                    }
11247                    ValidatorAlreadyRegistered
11248                },
11249                {
11250                    fn AddressEmptyCode(
11251                        data: &[u8],
11252                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11253                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
11254                                data,
11255                            )
11256                            .map(StakeTableErrors::AddressEmptyCode)
11257                    }
11258                    AddressEmptyCode
11259                },
11260                {
11261                    fn InvalidG1(
11262                        data: &[u8],
11263                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11264                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
11265                            .map(StakeTableErrors::InvalidG1)
11266                    }
11267                    InvalidG1
11268                },
11269                {
11270                    fn UUPSUnsupportedProxiableUUID(
11271                        data: &[u8],
11272                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11273                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
11274                                data,
11275                            )
11276                            .map(StakeTableErrors::UUPSUnsupportedProxiableUUID)
11277                    }
11278                    UUPSUnsupportedProxiableUUID
11279                },
11280                {
11281                    fn ERC1967NonPayable(
11282                        data: &[u8],
11283                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11284                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
11285                                data,
11286                            )
11287                            .map(StakeTableErrors::ERC1967NonPayable)
11288                    }
11289                    ERC1967NonPayable
11290                },
11291                {
11292                    fn ExitEscrowPeriodInvalid(
11293                        data: &[u8],
11294                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11295                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
11296                                data,
11297                            )
11298                            .map(StakeTableErrors::ExitEscrowPeriodInvalid)
11299                    }
11300                    ExitEscrowPeriodInvalid
11301                },
11302                {
11303                    fn BN254PairingProdFailed(
11304                        data: &[u8],
11305                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11306                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
11307                                data,
11308                            )
11309                            .map(StakeTableErrors::BN254PairingProdFailed)
11310                    }
11311                    BN254PairingProdFailed
11312                },
11313                {
11314                    fn NothingToWithdraw(
11315                        data: &[u8],
11316                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11317                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
11318                                data,
11319                            )
11320                            .map(StakeTableErrors::NothingToWithdraw)
11321                    }
11322                    NothingToWithdraw
11323                },
11324                {
11325                    fn UndelegationAlreadyExists(
11326                        data: &[u8],
11327                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11328                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
11329                                data,
11330                            )
11331                            .map(StakeTableErrors::UndelegationAlreadyExists)
11332                    }
11333                    UndelegationAlreadyExists
11334                },
11335                {
11336                    fn NotInitializing(
11337                        data: &[u8],
11338                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11339                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
11340                                data,
11341                            )
11342                            .map(StakeTableErrors::NotInitializing)
11343                    }
11344                    NotInitializing
11345                },
11346                {
11347                    fn ZeroAddress(
11348                        data: &[u8],
11349                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11350                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
11351                            .map(StakeTableErrors::ZeroAddress)
11352                    }
11353                    ZeroAddress
11354                },
11355                {
11356                    fn InvalidCommission(
11357                        data: &[u8],
11358                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11359                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
11360                                data,
11361                            )
11362                            .map(StakeTableErrors::InvalidCommission)
11363                    }
11364                    InvalidCommission
11365                },
11366                {
11367                    fn UUPSUnauthorizedCallContext(
11368                        data: &[u8],
11369                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11370                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
11371                                data,
11372                            )
11373                            .map(StakeTableErrors::UUPSUnauthorizedCallContext)
11374                    }
11375                    UUPSUnauthorizedCallContext
11376                },
11377                {
11378                    fn ValidatorAlreadyExited(
11379                        data: &[u8],
11380                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11381                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
11382                                data,
11383                            )
11384                            .map(StakeTableErrors::ValidatorAlreadyExited)
11385                    }
11386                    ValidatorAlreadyExited
11387                },
11388                {
11389                    fn ValidatorNotExited(
11390                        data: &[u8],
11391                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11392                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
11393                                data,
11394                            )
11395                            .map(StakeTableErrors::ValidatorNotExited)
11396                    }
11397                    ValidatorNotExited
11398                },
11399                {
11400                    fn InvalidInitialization(
11401                        data: &[u8],
11402                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11403                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
11404                                data,
11405                            )
11406                            .map(StakeTableErrors::InvalidInitialization)
11407                    }
11408                    InvalidInitialization
11409                },
11410            ];
11411            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11412                return Err(
11413                    alloy_sol_types::Error::unknown_selector(
11414                        <Self as alloy_sol_types::SolInterface>::NAME,
11415                        selector,
11416                    ),
11417                );
11418            };
11419            DECODE_SHIMS[idx](data)
11420        }
11421        #[inline]
11422        #[allow(non_snake_case)]
11423        fn abi_decode_raw_validate(
11424            selector: [u8; 4],
11425            data: &[u8],
11426        ) -> alloy_sol_types::Result<Self> {
11427            static DECODE_VALIDATE_SHIMS: &[fn(
11428                &[u8],
11429            ) -> alloy_sol_types::Result<StakeTableErrors>] = &[
11430                {
11431                    fn BlsKeyAlreadyUsed(
11432                        data: &[u8],
11433                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11434                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11435                                data,
11436                            )
11437                            .map(StakeTableErrors::BlsKeyAlreadyUsed)
11438                    }
11439                    BlsKeyAlreadyUsed
11440                },
11441                {
11442                    fn InvalidSchnorrVK(
11443                        data: &[u8],
11444                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11445                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
11446                                data,
11447                            )
11448                            .map(StakeTableErrors::InvalidSchnorrVK)
11449                    }
11450                    InvalidSchnorrVK
11451                },
11452                {
11453                    fn BLSSigVerificationFailed(
11454                        data: &[u8],
11455                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11456                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11457                                data,
11458                            )
11459                            .map(StakeTableErrors::BLSSigVerificationFailed)
11460                    }
11461                    BLSSigVerificationFailed
11462                },
11463                {
11464                    fn OwnableUnauthorizedAccount(
11465                        data: &[u8],
11466                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11467                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
11468                                data,
11469                            )
11470                            .map(StakeTableErrors::OwnableUnauthorizedAccount)
11471                    }
11472                    OwnableUnauthorizedAccount
11473                },
11474                {
11475                    fn FailedInnerCall(
11476                        data: &[u8],
11477                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11478                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
11479                                data,
11480                            )
11481                            .map(StakeTableErrors::FailedInnerCall)
11482                    }
11483                    FailedInnerCall
11484                },
11485                {
11486                    fn OwnableInvalidOwner(
11487                        data: &[u8],
11488                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11489                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
11490                                data,
11491                            )
11492                            .map(StakeTableErrors::OwnableInvalidOwner)
11493                    }
11494                    OwnableInvalidOwner
11495                },
11496                {
11497                    fn ZeroAmount(
11498                        data: &[u8],
11499                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11500                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
11501                                data,
11502                            )
11503                            .map(StakeTableErrors::ZeroAmount)
11504                    }
11505                    ZeroAmount
11506                },
11507                {
11508                    fn InsufficientAllowance(
11509                        data: &[u8],
11510                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11511                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_validate(
11512                                data,
11513                            )
11514                            .map(StakeTableErrors::InsufficientAllowance)
11515                    }
11516                    InsufficientAllowance
11517                },
11518                {
11519                    fn OwnershipCannotBeRenounced(
11520                        data: &[u8],
11521                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11522                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
11523                                data,
11524                            )
11525                            .map(StakeTableErrors::OwnershipCannotBeRenounced)
11526                    }
11527                    OwnershipCannotBeRenounced
11528                },
11529                {
11530                    fn PowPrecompileFailed(
11531                        data: &[u8],
11532                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11533                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11534                                data,
11535                            )
11536                            .map(StakeTableErrors::PowPrecompileFailed)
11537                    }
11538                    PowPrecompileFailed
11539                },
11540                {
11541                    fn ERC1967InvalidImplementation(
11542                        data: &[u8],
11543                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11544                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
11545                                data,
11546                            )
11547                            .map(StakeTableErrors::ERC1967InvalidImplementation)
11548                    }
11549                    ERC1967InvalidImplementation
11550                },
11551                {
11552                    fn ValidatorInactive(
11553                        data: &[u8],
11554                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11555                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_validate(
11556                                data,
11557                            )
11558                            .map(StakeTableErrors::ValidatorInactive)
11559                    }
11560                    ValidatorInactive
11561                },
11562                {
11563                    fn PrematureWithdrawal(
11564                        data: &[u8],
11565                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11566                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_validate(
11567                                data,
11568                            )
11569                            .map(StakeTableErrors::PrematureWithdrawal)
11570                    }
11571                    PrematureWithdrawal
11572                },
11573                {
11574                    fn InsufficientBalance(
11575                        data: &[u8],
11576                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11577                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
11578                                data,
11579                            )
11580                            .map(StakeTableErrors::InsufficientBalance)
11581                    }
11582                    InsufficientBalance
11583                },
11584                {
11585                    fn ValidatorAlreadyRegistered(
11586                        data: &[u8],
11587                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11588                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
11589                                data,
11590                            )
11591                            .map(StakeTableErrors::ValidatorAlreadyRegistered)
11592                    }
11593                    ValidatorAlreadyRegistered
11594                },
11595                {
11596                    fn AddressEmptyCode(
11597                        data: &[u8],
11598                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11599                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
11600                                data,
11601                            )
11602                            .map(StakeTableErrors::AddressEmptyCode)
11603                    }
11604                    AddressEmptyCode
11605                },
11606                {
11607                    fn InvalidG1(
11608                        data: &[u8],
11609                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11610                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
11611                                data,
11612                            )
11613                            .map(StakeTableErrors::InvalidG1)
11614                    }
11615                    InvalidG1
11616                },
11617                {
11618                    fn UUPSUnsupportedProxiableUUID(
11619                        data: &[u8],
11620                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11621                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
11622                                data,
11623                            )
11624                            .map(StakeTableErrors::UUPSUnsupportedProxiableUUID)
11625                    }
11626                    UUPSUnsupportedProxiableUUID
11627                },
11628                {
11629                    fn ERC1967NonPayable(
11630                        data: &[u8],
11631                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11632                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
11633                                data,
11634                            )
11635                            .map(StakeTableErrors::ERC1967NonPayable)
11636                    }
11637                    ERC1967NonPayable
11638                },
11639                {
11640                    fn ExitEscrowPeriodInvalid(
11641                        data: &[u8],
11642                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11643                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_validate(
11644                                data,
11645                            )
11646                            .map(StakeTableErrors::ExitEscrowPeriodInvalid)
11647                    }
11648                    ExitEscrowPeriodInvalid
11649                },
11650                {
11651                    fn BN254PairingProdFailed(
11652                        data: &[u8],
11653                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11654                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11655                                data,
11656                            )
11657                            .map(StakeTableErrors::BN254PairingProdFailed)
11658                    }
11659                    BN254PairingProdFailed
11660                },
11661                {
11662                    fn NothingToWithdraw(
11663                        data: &[u8],
11664                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11665                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_validate(
11666                                data,
11667                            )
11668                            .map(StakeTableErrors::NothingToWithdraw)
11669                    }
11670                    NothingToWithdraw
11671                },
11672                {
11673                    fn UndelegationAlreadyExists(
11674                        data: &[u8],
11675                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11676                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
11677                                data,
11678                            )
11679                            .map(StakeTableErrors::UndelegationAlreadyExists)
11680                    }
11681                    UndelegationAlreadyExists
11682                },
11683                {
11684                    fn NotInitializing(
11685                        data: &[u8],
11686                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11687                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
11688                                data,
11689                            )
11690                            .map(StakeTableErrors::NotInitializing)
11691                    }
11692                    NotInitializing
11693                },
11694                {
11695                    fn ZeroAddress(
11696                        data: &[u8],
11697                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11698                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
11699                                data,
11700                            )
11701                            .map(StakeTableErrors::ZeroAddress)
11702                    }
11703                    ZeroAddress
11704                },
11705                {
11706                    fn InvalidCommission(
11707                        data: &[u8],
11708                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11709                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_validate(
11710                                data,
11711                            )
11712                            .map(StakeTableErrors::InvalidCommission)
11713                    }
11714                    InvalidCommission
11715                },
11716                {
11717                    fn UUPSUnauthorizedCallContext(
11718                        data: &[u8],
11719                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11720                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
11721                                data,
11722                            )
11723                            .map(StakeTableErrors::UUPSUnauthorizedCallContext)
11724                    }
11725                    UUPSUnauthorizedCallContext
11726                },
11727                {
11728                    fn ValidatorAlreadyExited(
11729                        data: &[u8],
11730                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11731                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
11732                                data,
11733                            )
11734                            .map(StakeTableErrors::ValidatorAlreadyExited)
11735                    }
11736                    ValidatorAlreadyExited
11737                },
11738                {
11739                    fn ValidatorNotExited(
11740                        data: &[u8],
11741                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11742                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
11743                                data,
11744                            )
11745                            .map(StakeTableErrors::ValidatorNotExited)
11746                    }
11747                    ValidatorNotExited
11748                },
11749                {
11750                    fn InvalidInitialization(
11751                        data: &[u8],
11752                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11753                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
11754                                data,
11755                            )
11756                            .map(StakeTableErrors::InvalidInitialization)
11757                    }
11758                    InvalidInitialization
11759                },
11760            ];
11761            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11762                return Err(
11763                    alloy_sol_types::Error::unknown_selector(
11764                        <Self as alloy_sol_types::SolInterface>::NAME,
11765                        selector,
11766                    ),
11767                );
11768            };
11769            DECODE_VALIDATE_SHIMS[idx](data)
11770        }
11771        #[inline]
11772        fn abi_encoded_size(&self) -> usize {
11773            match self {
11774                Self::AddressEmptyCode(inner) => {
11775                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
11776                        inner,
11777                    )
11778                }
11779                Self::BLSSigVerificationFailed(inner) => {
11780                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
11781                        inner,
11782                    )
11783                }
11784                Self::BN254PairingProdFailed(inner) => {
11785                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
11786                        inner,
11787                    )
11788                }
11789                Self::BlsKeyAlreadyUsed(inner) => {
11790                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
11791                        inner,
11792                    )
11793                }
11794                Self::ERC1967InvalidImplementation(inner) => {
11795                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
11796                        inner,
11797                    )
11798                }
11799                Self::ERC1967NonPayable(inner) => {
11800                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
11801                        inner,
11802                    )
11803                }
11804                Self::ExitEscrowPeriodInvalid(inner) => {
11805                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
11806                        inner,
11807                    )
11808                }
11809                Self::FailedInnerCall(inner) => {
11810                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
11811                        inner,
11812                    )
11813                }
11814                Self::InsufficientAllowance(inner) => {
11815                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
11816                        inner,
11817                    )
11818                }
11819                Self::InsufficientBalance(inner) => {
11820                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
11821                        inner,
11822                    )
11823                }
11824                Self::InvalidCommission(inner) => {
11825                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
11826                        inner,
11827                    )
11828                }
11829                Self::InvalidG1(inner) => {
11830                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
11831                }
11832                Self::InvalidInitialization(inner) => {
11833                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
11834                        inner,
11835                    )
11836                }
11837                Self::InvalidSchnorrVK(inner) => {
11838                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
11839                        inner,
11840                    )
11841                }
11842                Self::NotInitializing(inner) => {
11843                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
11844                        inner,
11845                    )
11846                }
11847                Self::NothingToWithdraw(inner) => {
11848                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
11849                        inner,
11850                    )
11851                }
11852                Self::OwnableInvalidOwner(inner) => {
11853                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
11854                        inner,
11855                    )
11856                }
11857                Self::OwnableUnauthorizedAccount(inner) => {
11858                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
11859                        inner,
11860                    )
11861                }
11862                Self::OwnershipCannotBeRenounced(inner) => {
11863                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
11864                        inner,
11865                    )
11866                }
11867                Self::PowPrecompileFailed(inner) => {
11868                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
11869                        inner,
11870                    )
11871                }
11872                Self::PrematureWithdrawal(inner) => {
11873                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
11874                        inner,
11875                    )
11876                }
11877                Self::UUPSUnauthorizedCallContext(inner) => {
11878                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
11879                        inner,
11880                    )
11881                }
11882                Self::UUPSUnsupportedProxiableUUID(inner) => {
11883                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
11884                        inner,
11885                    )
11886                }
11887                Self::UndelegationAlreadyExists(inner) => {
11888                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
11889                        inner,
11890                    )
11891                }
11892                Self::ValidatorAlreadyExited(inner) => {
11893                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
11894                        inner,
11895                    )
11896                }
11897                Self::ValidatorAlreadyRegistered(inner) => {
11898                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
11899                        inner,
11900                    )
11901                }
11902                Self::ValidatorInactive(inner) => {
11903                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
11904                        inner,
11905                    )
11906                }
11907                Self::ValidatorNotExited(inner) => {
11908                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
11909                        inner,
11910                    )
11911                }
11912                Self::ZeroAddress(inner) => {
11913                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
11914                }
11915                Self::ZeroAmount(inner) => {
11916                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
11917                }
11918            }
11919        }
11920        #[inline]
11921        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11922            match self {
11923                Self::AddressEmptyCode(inner) => {
11924                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
11925                        inner,
11926                        out,
11927                    )
11928                }
11929                Self::BLSSigVerificationFailed(inner) => {
11930                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
11931                        inner,
11932                        out,
11933                    )
11934                }
11935                Self::BN254PairingProdFailed(inner) => {
11936                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
11937                        inner,
11938                        out,
11939                    )
11940                }
11941                Self::BlsKeyAlreadyUsed(inner) => {
11942                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
11943                        inner,
11944                        out,
11945                    )
11946                }
11947                Self::ERC1967InvalidImplementation(inner) => {
11948                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
11949                        inner,
11950                        out,
11951                    )
11952                }
11953                Self::ERC1967NonPayable(inner) => {
11954                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
11955                        inner,
11956                        out,
11957                    )
11958                }
11959                Self::ExitEscrowPeriodInvalid(inner) => {
11960                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
11961                        inner,
11962                        out,
11963                    )
11964                }
11965                Self::FailedInnerCall(inner) => {
11966                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
11967                        inner,
11968                        out,
11969                    )
11970                }
11971                Self::InsufficientAllowance(inner) => {
11972                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
11973                        inner,
11974                        out,
11975                    )
11976                }
11977                Self::InsufficientBalance(inner) => {
11978                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
11979                        inner,
11980                        out,
11981                    )
11982                }
11983                Self::InvalidCommission(inner) => {
11984                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
11985                        inner,
11986                        out,
11987                    )
11988                }
11989                Self::InvalidG1(inner) => {
11990                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
11991                }
11992                Self::InvalidInitialization(inner) => {
11993                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
11994                        inner,
11995                        out,
11996                    )
11997                }
11998                Self::InvalidSchnorrVK(inner) => {
11999                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
12000                        inner,
12001                        out,
12002                    )
12003                }
12004                Self::NotInitializing(inner) => {
12005                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12006                        inner,
12007                        out,
12008                    )
12009                }
12010                Self::NothingToWithdraw(inner) => {
12011                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
12012                        inner,
12013                        out,
12014                    )
12015                }
12016                Self::OwnableInvalidOwner(inner) => {
12017                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12018                        inner,
12019                        out,
12020                    )
12021                }
12022                Self::OwnableUnauthorizedAccount(inner) => {
12023                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12024                        inner,
12025                        out,
12026                    )
12027                }
12028                Self::OwnershipCannotBeRenounced(inner) => {
12029                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
12030                        inner,
12031                        out,
12032                    )
12033                }
12034                Self::PowPrecompileFailed(inner) => {
12035                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
12036                        inner,
12037                        out,
12038                    )
12039                }
12040                Self::PrematureWithdrawal(inner) => {
12041                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
12042                        inner,
12043                        out,
12044                    )
12045                }
12046                Self::UUPSUnauthorizedCallContext(inner) => {
12047                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12048                        inner,
12049                        out,
12050                    )
12051                }
12052                Self::UUPSUnsupportedProxiableUUID(inner) => {
12053                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12054                        inner,
12055                        out,
12056                    )
12057                }
12058                Self::UndelegationAlreadyExists(inner) => {
12059                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
12060                        inner,
12061                        out,
12062                    )
12063                }
12064                Self::ValidatorAlreadyExited(inner) => {
12065                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
12066                        inner,
12067                        out,
12068                    )
12069                }
12070                Self::ValidatorAlreadyRegistered(inner) => {
12071                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
12072                        inner,
12073                        out,
12074                    )
12075                }
12076                Self::ValidatorInactive(inner) => {
12077                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
12078                        inner,
12079                        out,
12080                    )
12081                }
12082                Self::ValidatorNotExited(inner) => {
12083                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
12084                        inner,
12085                        out,
12086                    )
12087                }
12088                Self::ZeroAddress(inner) => {
12089                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
12090                        inner,
12091                        out,
12092                    )
12093                }
12094                Self::ZeroAmount(inner) => {
12095                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
12096                }
12097            }
12098        }
12099    }
12100    ///Container for all the [`StakeTable`](self) events.
12101    #[derive(Clone)]
12102    #[derive(serde::Serialize, serde::Deserialize)]
12103    #[derive()]
12104    pub enum StakeTableEvents {
12105        #[allow(missing_docs)]
12106        ConsensusKeysUpdated(ConsensusKeysUpdated),
12107        #[allow(missing_docs)]
12108        Delegated(Delegated),
12109        #[allow(missing_docs)]
12110        Initialized(Initialized),
12111        #[allow(missing_docs)]
12112        OwnershipTransferred(OwnershipTransferred),
12113        #[allow(missing_docs)]
12114        Undelegated(Undelegated),
12115        #[allow(missing_docs)]
12116        Upgraded(Upgraded),
12117        #[allow(missing_docs)]
12118        ValidatorExit(ValidatorExit),
12119        #[allow(missing_docs)]
12120        ValidatorRegistered(ValidatorRegistered),
12121        #[allow(missing_docs)]
12122        Withdrawal(Withdrawal),
12123    }
12124    impl StakeTableEvents {
12125        /// All the selectors of this enum.
12126        ///
12127        /// Note that the selectors might not be in the same order as the variants.
12128        /// No guarantees are made about the order of the selectors.
12129        ///
12130        /// Prefer using `SolInterface` methods instead.
12131        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12132            [
12133                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
12134                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
12135                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
12136            ],
12137            [
12138                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
12139                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
12140                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
12141            ],
12142            [
12143                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
12144                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
12145                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
12146            ],
12147            [
12148                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
12149                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
12150                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12151            ],
12152            [
12153                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
12154                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
12155                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
12156            ],
12157            [
12158                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
12159                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
12160                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
12161            ],
12162            [
12163                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
12164                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
12165                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
12166            ],
12167            [
12168                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
12169                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
12170                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
12171            ],
12172            [
12173                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
12174                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
12175                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
12176            ],
12177        ];
12178        /// The names of the variants in the same order as `SELECTORS`.
12179        pub const VARIANT_NAMES: &'static [&'static str] = &[
12180            ::core::stringify!(Undelegated),
12181            ::core::stringify!(Withdrawal),
12182            ::core::stringify!(ConsensusKeysUpdated),
12183            ::core::stringify!(OwnershipTransferred),
12184            ::core::stringify!(Upgraded),
12185            ::core::stringify!(Initialized),
12186            ::core::stringify!(Delegated),
12187            ::core::stringify!(ValidatorRegistered),
12188            ::core::stringify!(ValidatorExit),
12189        ];
12190        /// The signatures in the same order as `SELECTORS`.
12191        pub const SIGNATURES: &'static [&'static str] = &[
12192            <Undelegated as alloy_sol_types::SolEvent>::SIGNATURE,
12193            <Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE,
12194            <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
12195            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
12196            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
12197            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
12198            <Delegated as alloy_sol_types::SolEvent>::SIGNATURE,
12199            <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE,
12200            <ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE,
12201        ];
12202        /// Returns the signature for the given selector, if known.
12203        #[inline]
12204        pub fn signature_by_selector(
12205            selector: [u8; 32usize],
12206        ) -> ::core::option::Option<&'static str> {
12207            match Self::SELECTORS.binary_search(&selector) {
12208                ::core::result::Result::Ok(idx) => {
12209                    ::core::option::Option::Some(Self::SIGNATURES[idx])
12210                }
12211                ::core::result::Result::Err(_) => ::core::option::Option::None,
12212            }
12213        }
12214        /// Returns the enum variant name for the given selector, if known.
12215        #[inline]
12216        pub fn name_by_selector(
12217            selector: [u8; 32usize],
12218        ) -> ::core::option::Option<&'static str> {
12219            let sig = Self::signature_by_selector(selector)?;
12220            sig.split_once('(').map(|(name, _)| name)
12221        }
12222    }
12223    #[automatically_derived]
12224    impl alloy_sol_types::SolEventInterface for StakeTableEvents {
12225        const NAME: &'static str = "StakeTableEvents";
12226        const COUNT: usize = 9usize;
12227        fn decode_raw_log(
12228            topics: &[alloy_sol_types::Word],
12229            data: &[u8],
12230        ) -> alloy_sol_types::Result<Self> {
12231            match topics.first().copied() {
12232                Some(
12233                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12234                ) => {
12235                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
12236                            topics,
12237                            data,
12238                        )
12239                        .map(Self::ConsensusKeysUpdated)
12240                }
12241                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12242                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
12243                            topics,
12244                            data,
12245                        )
12246                        .map(Self::Delegated)
12247                }
12248                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12249                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
12250                            topics,
12251                            data,
12252                        )
12253                        .map(Self::Initialized)
12254                }
12255                Some(
12256                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12257                ) => {
12258                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
12259                            topics,
12260                            data,
12261                        )
12262                        .map(Self::OwnershipTransferred)
12263                }
12264                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12265                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
12266                            topics,
12267                            data,
12268                        )
12269                        .map(Self::Undelegated)
12270                }
12271                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12272                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12273                        .map(Self::Upgraded)
12274                }
12275                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12276                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
12277                            topics,
12278                            data,
12279                        )
12280                        .map(Self::ValidatorExit)
12281                }
12282                Some(
12283                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12284                ) => {
12285                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
12286                            topics,
12287                            data,
12288                        )
12289                        .map(Self::ValidatorRegistered)
12290                }
12291                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12292                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
12293                            topics,
12294                            data,
12295                        )
12296                        .map(Self::Withdrawal)
12297                }
12298                _ => {
12299                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12300                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12301                        log: alloy_sol_types::private::Box::new(
12302                            alloy_sol_types::private::LogData::new_unchecked(
12303                                topics.to_vec(),
12304                                data.to_vec().into(),
12305                            ),
12306                        ),
12307                    })
12308                }
12309            }
12310        }
12311    }
12312    #[automatically_derived]
12313    impl alloy_sol_types::private::IntoLogData for StakeTableEvents {
12314        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12315            match self {
12316                Self::ConsensusKeysUpdated(inner) => {
12317                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12318                }
12319                Self::Delegated(inner) => {
12320                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12321                }
12322                Self::Initialized(inner) => {
12323                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12324                }
12325                Self::OwnershipTransferred(inner) => {
12326                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12327                }
12328                Self::Undelegated(inner) => {
12329                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12330                }
12331                Self::Upgraded(inner) => {
12332                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12333                }
12334                Self::ValidatorExit(inner) => {
12335                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12336                }
12337                Self::ValidatorRegistered(inner) => {
12338                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12339                }
12340                Self::Withdrawal(inner) => {
12341                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12342                }
12343            }
12344        }
12345        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12346            match self {
12347                Self::ConsensusKeysUpdated(inner) => {
12348                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12349                }
12350                Self::Delegated(inner) => {
12351                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12352                }
12353                Self::Initialized(inner) => {
12354                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12355                }
12356                Self::OwnershipTransferred(inner) => {
12357                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12358                }
12359                Self::Undelegated(inner) => {
12360                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12361                }
12362                Self::Upgraded(inner) => {
12363                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12364                }
12365                Self::ValidatorExit(inner) => {
12366                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12367                }
12368                Self::ValidatorRegistered(inner) => {
12369                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12370                }
12371                Self::Withdrawal(inner) => {
12372                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12373                }
12374            }
12375        }
12376    }
12377    use alloy::contract as alloy_contract;
12378    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
12379
12380See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
12381    #[inline]
12382    pub const fn new<
12383        P: alloy_contract::private::Provider<N>,
12384        N: alloy_contract::private::Network,
12385    >(
12386        address: alloy_sol_types::private::Address,
12387        __provider: P,
12388    ) -> StakeTableInstance<P, N> {
12389        StakeTableInstance::<P, N>::new(address, __provider)
12390    }
12391    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12392
12393Returns a new instance of the contract, if the deployment was successful.
12394
12395For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12396    #[inline]
12397    pub fn deploy<
12398        P: alloy_contract::private::Provider<N>,
12399        N: alloy_contract::private::Network,
12400    >(
12401        __provider: P,
12402    ) -> impl ::core::future::Future<
12403        Output = alloy_contract::Result<StakeTableInstance<P, N>>,
12404    > {
12405        StakeTableInstance::<P, N>::deploy(__provider)
12406    }
12407    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12408and constructor arguments, if any.
12409
12410This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12411the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12412    #[inline]
12413    pub fn deploy_builder<
12414        P: alloy_contract::private::Provider<N>,
12415        N: alloy_contract::private::Network,
12416    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12417        StakeTableInstance::<P, N>::deploy_builder(__provider)
12418    }
12419    /**A [`StakeTable`](self) instance.
12420
12421Contains type-safe methods for interacting with an on-chain instance of the
12422[`StakeTable`](self) contract located at a given `address`, using a given
12423provider `P`.
12424
12425If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12426documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12427be used to deploy a new instance of the contract.
12428
12429See the [module-level documentation](self) for all the available methods.*/
12430    #[derive(Clone)]
12431    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
12432        address: alloy_sol_types::private::Address,
12433        provider: P,
12434        _network: ::core::marker::PhantomData<N>,
12435    }
12436    #[automatically_derived]
12437    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
12438        #[inline]
12439        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12440            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
12441        }
12442    }
12443    /// Instantiation and getters/setters.
12444    impl<
12445        P: alloy_contract::private::Provider<N>,
12446        N: alloy_contract::private::Network,
12447    > StakeTableInstance<P, N> {
12448        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
12449
12450See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
12451        #[inline]
12452        pub const fn new(
12453            address: alloy_sol_types::private::Address,
12454            __provider: P,
12455        ) -> Self {
12456            Self {
12457                address,
12458                provider: __provider,
12459                _network: ::core::marker::PhantomData,
12460            }
12461        }
12462        /**Deploys this contract using the given `provider` and constructor arguments, if any.
12463
12464Returns a new instance of the contract, if the deployment was successful.
12465
12466For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12467        #[inline]
12468        pub async fn deploy(
12469            __provider: P,
12470        ) -> alloy_contract::Result<StakeTableInstance<P, N>> {
12471            let call_builder = Self::deploy_builder(__provider);
12472            let contract_address = call_builder.deploy().await?;
12473            Ok(Self::new(contract_address, call_builder.provider))
12474        }
12475        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12476and constructor arguments, if any.
12477
12478This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12479the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12480        #[inline]
12481        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12482            alloy_contract::RawCallBuilder::new_raw_deploy(
12483                __provider,
12484                ::core::clone::Clone::clone(&BYTECODE),
12485            )
12486        }
12487        /// Returns a reference to the address.
12488        #[inline]
12489        pub const fn address(&self) -> &alloy_sol_types::private::Address {
12490            &self.address
12491        }
12492        /// Sets the address.
12493        #[inline]
12494        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
12495            self.address = address;
12496        }
12497        /// Sets the address and returns `self`.
12498        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
12499            self.set_address(address);
12500            self
12501        }
12502        /// Returns a reference to the provider.
12503        #[inline]
12504        pub const fn provider(&self) -> &P {
12505            &self.provider
12506        }
12507    }
12508    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
12509        /// Clones the provider and returns a new instance with the cloned provider.
12510        #[inline]
12511        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
12512            StakeTableInstance {
12513                address: self.address,
12514                provider: ::core::clone::Clone::clone(&self.provider),
12515                _network: ::core::marker::PhantomData,
12516            }
12517        }
12518    }
12519    /// Function calls.
12520    impl<
12521        P: alloy_contract::private::Provider<N>,
12522        N: alloy_contract::private::Network,
12523    > StakeTableInstance<P, N> {
12524        /// Creates a new call builder using this contract instance's provider and address.
12525        ///
12526        /// Note that the call can be any function call, not just those defined in this
12527        /// contract. Prefer using the other methods for building type-safe contract calls.
12528        pub fn call_builder<C: alloy_sol_types::SolCall>(
12529            &self,
12530            call: &C,
12531        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
12532            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
12533        }
12534        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
12535        pub fn UPGRADE_INTERFACE_VERSION(
12536            &self,
12537        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
12538            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
12539        }
12540        ///Creates a new call builder for the [`_hashBlsKey`] function.
12541        pub fn _hashBlsKey(
12542            &self,
12543            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12544        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
12545            self.call_builder(&_hashBlsKeyCall { blsVK })
12546        }
12547        ///Creates a new call builder for the [`blsKeys`] function.
12548        pub fn blsKeys(
12549            &self,
12550            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
12551        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
12552            self.call_builder(&blsKeysCall { blsKeyHash })
12553        }
12554        ///Creates a new call builder for the [`claimValidatorExit`] function.
12555        pub fn claimValidatorExit(
12556            &self,
12557            validator: alloy::sol_types::private::Address,
12558        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
12559            self.call_builder(
12560                &claimValidatorExitCall {
12561                    validator,
12562                },
12563            )
12564        }
12565        ///Creates a new call builder for the [`claimWithdrawal`] function.
12566        pub fn claimWithdrawal(
12567            &self,
12568            validator: alloy::sol_types::private::Address,
12569        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
12570            self.call_builder(&claimWithdrawalCall { validator })
12571        }
12572        ///Creates a new call builder for the [`delegate`] function.
12573        pub fn delegate(
12574            &self,
12575            validator: alloy::sol_types::private::Address,
12576            amount: alloy::sol_types::private::primitives::aliases::U256,
12577        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
12578            self.call_builder(&delegateCall { validator, amount })
12579        }
12580        ///Creates a new call builder for the [`delegations`] function.
12581        pub fn delegations(
12582            &self,
12583            validator: alloy::sol_types::private::Address,
12584            delegator: alloy::sol_types::private::Address,
12585        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
12586            self.call_builder(
12587                &delegationsCall {
12588                    validator,
12589                    delegator,
12590                },
12591            )
12592        }
12593        ///Creates a new call builder for the [`deregisterValidator`] function.
12594        pub fn deregisterValidator(
12595            &self,
12596        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
12597            self.call_builder(&deregisterValidatorCall)
12598        }
12599        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
12600        pub fn exitEscrowPeriod(
12601            &self,
12602        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
12603            self.call_builder(&exitEscrowPeriodCall)
12604        }
12605        ///Creates a new call builder for the [`getVersion`] function.
12606        pub fn getVersion(
12607            &self,
12608        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
12609            self.call_builder(&getVersionCall)
12610        }
12611        ///Creates a new call builder for the [`initialize`] function.
12612        pub fn initialize(
12613            &self,
12614            _tokenAddress: alloy::sol_types::private::Address,
12615            _lightClientAddress: alloy::sol_types::private::Address,
12616            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
12617            _timelock: alloy::sol_types::private::Address,
12618        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
12619            self.call_builder(
12620                &initializeCall {
12621                    _tokenAddress,
12622                    _lightClientAddress,
12623                    _exitEscrowPeriod,
12624                    _timelock,
12625                },
12626            )
12627        }
12628        ///Creates a new call builder for the [`initializedAtBlock`] function.
12629        pub fn initializedAtBlock(
12630            &self,
12631        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
12632            self.call_builder(&initializedAtBlockCall)
12633        }
12634        ///Creates a new call builder for the [`lightClient`] function.
12635        pub fn lightClient(
12636            &self,
12637        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
12638            self.call_builder(&lightClientCall)
12639        }
12640        ///Creates a new call builder for the [`owner`] function.
12641        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
12642            self.call_builder(&ownerCall)
12643        }
12644        ///Creates a new call builder for the [`proxiableUUID`] function.
12645        pub fn proxiableUUID(
12646            &self,
12647        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
12648            self.call_builder(&proxiableUUIDCall)
12649        }
12650        ///Creates a new call builder for the [`registerValidator`] function.
12651        pub fn registerValidator(
12652            &self,
12653            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12654            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12655            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12656            commission: u16,
12657        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
12658            self.call_builder(
12659                &registerValidatorCall {
12660                    blsVK,
12661                    schnorrVK,
12662                    blsSig,
12663                    commission,
12664                },
12665            )
12666        }
12667        ///Creates a new call builder for the [`renounceOwnership`] function.
12668        pub fn renounceOwnership(
12669            &self,
12670        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
12671            self.call_builder(&renounceOwnershipCall)
12672        }
12673        ///Creates a new call builder for the [`token`] function.
12674        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
12675            self.call_builder(&tokenCall)
12676        }
12677        ///Creates a new call builder for the [`transferOwnership`] function.
12678        pub fn transferOwnership(
12679            &self,
12680            newOwner: alloy::sol_types::private::Address,
12681        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
12682            self.call_builder(&transferOwnershipCall { newOwner })
12683        }
12684        ///Creates a new call builder for the [`undelegate`] function.
12685        pub fn undelegate(
12686            &self,
12687            validator: alloy::sol_types::private::Address,
12688            amount: alloy::sol_types::private::primitives::aliases::U256,
12689        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
12690            self.call_builder(
12691                &undelegateCall {
12692                    validator,
12693                    amount,
12694                },
12695            )
12696        }
12697        ///Creates a new call builder for the [`undelegations`] function.
12698        pub fn undelegations(
12699            &self,
12700            validator: alloy::sol_types::private::Address,
12701            delegator: alloy::sol_types::private::Address,
12702        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
12703            self.call_builder(
12704                &undelegationsCall {
12705                    validator,
12706                    delegator,
12707                },
12708            )
12709        }
12710        ///Creates a new call builder for the [`updateConsensusKeys`] function.
12711        pub fn updateConsensusKeys(
12712            &self,
12713            newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12714            newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12715            newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12716        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
12717            self.call_builder(
12718                &updateConsensusKeysCall {
12719                    newBlsVK,
12720                    newSchnorrVK,
12721                    newBlsSig,
12722                },
12723            )
12724        }
12725        ///Creates a new call builder for the [`upgradeToAndCall`] function.
12726        pub fn upgradeToAndCall(
12727            &self,
12728            newImplementation: alloy::sol_types::private::Address,
12729            data: alloy::sol_types::private::Bytes,
12730        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
12731            self.call_builder(
12732                &upgradeToAndCallCall {
12733                    newImplementation,
12734                    data,
12735                },
12736            )
12737        }
12738        ///Creates a new call builder for the [`validatorExits`] function.
12739        pub fn validatorExits(
12740            &self,
12741            validator: alloy::sol_types::private::Address,
12742        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
12743            self.call_builder(&validatorExitsCall { validator })
12744        }
12745        ///Creates a new call builder for the [`validators`] function.
12746        pub fn validators(
12747            &self,
12748            account: alloy::sol_types::private::Address,
12749        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
12750            self.call_builder(&validatorsCall { account })
12751        }
12752    }
12753    /// Event filters.
12754    impl<
12755        P: alloy_contract::private::Provider<N>,
12756        N: alloy_contract::private::Network,
12757    > StakeTableInstance<P, N> {
12758        /// Creates a new event filter using this contract instance's provider and address.
12759        ///
12760        /// Note that the type can be any event, not just those defined in this contract.
12761        /// Prefer using the other methods for building type-safe event filters.
12762        pub fn event_filter<E: alloy_sol_types::SolEvent>(
12763            &self,
12764        ) -> alloy_contract::Event<&P, E, N> {
12765            alloy_contract::Event::new_sol(&self.provider, &self.address)
12766        }
12767        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
12768        pub fn ConsensusKeysUpdated_filter(
12769            &self,
12770        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
12771            self.event_filter::<ConsensusKeysUpdated>()
12772        }
12773        ///Creates a new event filter for the [`Delegated`] event.
12774        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
12775            self.event_filter::<Delegated>()
12776        }
12777        ///Creates a new event filter for the [`Initialized`] event.
12778        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
12779            self.event_filter::<Initialized>()
12780        }
12781        ///Creates a new event filter for the [`OwnershipTransferred`] event.
12782        pub fn OwnershipTransferred_filter(
12783            &self,
12784        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
12785            self.event_filter::<OwnershipTransferred>()
12786        }
12787        ///Creates a new event filter for the [`Undelegated`] event.
12788        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
12789            self.event_filter::<Undelegated>()
12790        }
12791        ///Creates a new event filter for the [`Upgraded`] event.
12792        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
12793            self.event_filter::<Upgraded>()
12794        }
12795        ///Creates a new event filter for the [`ValidatorExit`] event.
12796        pub fn ValidatorExit_filter(
12797            &self,
12798        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
12799            self.event_filter::<ValidatorExit>()
12800        }
12801        ///Creates a new event filter for the [`ValidatorRegistered`] event.
12802        pub fn ValidatorRegistered_filter(
12803            &self,
12804        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
12805            self.event_filter::<ValidatorRegistered>()
12806        }
12807        ///Creates a new event filter for the [`Withdrawal`] event.
12808        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
12809            self.event_filter::<Withdrawal>()
12810        }
12811    }
12812}