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        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    /**```solidity
169struct G1Point { BaseField x; BaseField y; }
170```*/
171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
172    #[derive(Clone)]
173    pub struct G1Point {
174        #[allow(missing_docs)]
175        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
176        #[allow(missing_docs)]
177        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
178    }
179    #[allow(
180        non_camel_case_types,
181        non_snake_case,
182        clippy::pub_underscore_fields,
183        clippy::style
184    )]
185    const _: () = {
186        use alloy::sol_types as alloy_sol_types;
187        #[doc(hidden)]
188        #[allow(dead_code)]
189        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
190        #[doc(hidden)]
191        type UnderlyingRustTuple<'a> = (
192            <BaseField as alloy::sol_types::SolType>::RustType,
193            <BaseField as alloy::sol_types::SolType>::RustType,
194        );
195        #[cfg(test)]
196        #[allow(dead_code, unreachable_patterns)]
197        fn _type_assertion(
198            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
199        ) {
200            match _t {
201                alloy_sol_types::private::AssertTypeEq::<
202                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
203                >(_) => {}
204            }
205        }
206        #[automatically_derived]
207        #[doc(hidden)]
208        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
209            fn from(value: G1Point) -> Self {
210                (value.x, value.y)
211            }
212        }
213        #[automatically_derived]
214        #[doc(hidden)]
215        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
216            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
217                Self { x: tuple.0, y: tuple.1 }
218            }
219        }
220        #[automatically_derived]
221        impl alloy_sol_types::SolValue for G1Point {
222            type SolType = Self;
223        }
224        #[automatically_derived]
225        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
226            #[inline]
227            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
228                (
229                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
230                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
231                )
232            }
233            #[inline]
234            fn stv_abi_encoded_size(&self) -> usize {
235                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
236                    return size;
237                }
238                let tuple = <UnderlyingRustTuple<
239                    '_,
240                > as ::core::convert::From<Self>>::from(self.clone());
241                <UnderlyingSolTuple<
242                    '_,
243                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
244            }
245            #[inline]
246            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
247                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
248            }
249            #[inline]
250            fn stv_abi_encode_packed_to(
251                &self,
252                out: &mut alloy_sol_types::private::Vec<u8>,
253            ) {
254                let tuple = <UnderlyingRustTuple<
255                    '_,
256                > as ::core::convert::From<Self>>::from(self.clone());
257                <UnderlyingSolTuple<
258                    '_,
259                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
260            }
261            #[inline]
262            fn stv_abi_packed_encoded_size(&self) -> usize {
263                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
264                    return size;
265                }
266                let tuple = <UnderlyingRustTuple<
267                    '_,
268                > as ::core::convert::From<Self>>::from(self.clone());
269                <UnderlyingSolTuple<
270                    '_,
271                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
272            }
273        }
274        #[automatically_derived]
275        impl alloy_sol_types::SolType for G1Point {
276            type RustType = Self;
277            type Token<'a> = <UnderlyingSolTuple<
278                'a,
279            > as alloy_sol_types::SolType>::Token<'a>;
280            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
281            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
282                '_,
283            > as alloy_sol_types::SolType>::ENCODED_SIZE;
284            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
285                '_,
286            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
287            #[inline]
288            fn valid_token(token: &Self::Token<'_>) -> bool {
289                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
290            }
291            #[inline]
292            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
293                let tuple = <UnderlyingSolTuple<
294                    '_,
295                > as alloy_sol_types::SolType>::detokenize(token);
296                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
297            }
298        }
299        #[automatically_derived]
300        impl alloy_sol_types::SolStruct for G1Point {
301            const NAME: &'static str = "G1Point";
302            #[inline]
303            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
304                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
305            }
306            #[inline]
307            fn eip712_components() -> alloy_sol_types::private::Vec<
308                alloy_sol_types::private::Cow<'static, str>,
309            > {
310                alloy_sol_types::private::Vec::new()
311            }
312            #[inline]
313            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
314                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
315            }
316            #[inline]
317            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
318                [
319                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
320                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
321                ]
322                    .concat()
323            }
324        }
325        #[automatically_derived]
326        impl alloy_sol_types::EventTopic for G1Point {
327            #[inline]
328            fn topic_preimage_length(rust: &Self::RustType) -> usize {
329                0usize
330                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
331                        &rust.x,
332                    )
333                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
334                        &rust.y,
335                    )
336            }
337            #[inline]
338            fn encode_topic_preimage(
339                rust: &Self::RustType,
340                out: &mut alloy_sol_types::private::Vec<u8>,
341            ) {
342                out.reserve(
343                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
344                );
345                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
346                    &rust.x,
347                    out,
348                );
349                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
350                    &rust.y,
351                    out,
352                );
353            }
354            #[inline]
355            fn encode_topic(
356                rust: &Self::RustType,
357            ) -> alloy_sol_types::abi::token::WordToken {
358                let mut out = alloy_sol_types::private::Vec::new();
359                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
360                    rust,
361                    &mut out,
362                );
363                alloy_sol_types::abi::token::WordToken(
364                    alloy_sol_types::private::keccak256(out),
365                )
366            }
367        }
368    };
369    #[derive(serde::Serialize, serde::Deserialize)]
370    #[derive(Default, Debug, PartialEq, Eq, Hash)]
371    /**```solidity
372struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
373```*/
374    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
375    #[derive(Clone)]
376    pub struct G2Point {
377        #[allow(missing_docs)]
378        pub x0: <BaseField as alloy::sol_types::SolType>::RustType,
379        #[allow(missing_docs)]
380        pub x1: <BaseField as alloy::sol_types::SolType>::RustType,
381        #[allow(missing_docs)]
382        pub y0: <BaseField as alloy::sol_types::SolType>::RustType,
383        #[allow(missing_docs)]
384        pub y1: <BaseField as alloy::sol_types::SolType>::RustType,
385    }
386    #[allow(
387        non_camel_case_types,
388        non_snake_case,
389        clippy::pub_underscore_fields,
390        clippy::style
391    )]
392    const _: () = {
393        use alloy::sol_types as alloy_sol_types;
394        #[doc(hidden)]
395        #[allow(dead_code)]
396        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
397        #[doc(hidden)]
398        type UnderlyingRustTuple<'a> = (
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            <BaseField as alloy::sol_types::SolType>::RustType,
403        );
404        #[cfg(test)]
405        #[allow(dead_code, unreachable_patterns)]
406        fn _type_assertion(
407            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
408        ) {
409            match _t {
410                alloy_sol_types::private::AssertTypeEq::<
411                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
412                >(_) => {}
413            }
414        }
415        #[automatically_derived]
416        #[doc(hidden)]
417        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
418            fn from(value: G2Point) -> Self {
419                (value.x0, value.x1, value.y0, value.y1)
420            }
421        }
422        #[automatically_derived]
423        #[doc(hidden)]
424        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
425            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
426                Self {
427                    x0: tuple.0,
428                    x1: tuple.1,
429                    y0: tuple.2,
430                    y1: tuple.3,
431                }
432            }
433        }
434        #[automatically_derived]
435        impl alloy_sol_types::SolValue for G2Point {
436            type SolType = Self;
437        }
438        #[automatically_derived]
439        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
440            #[inline]
441            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
442                (
443                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
444                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
445                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
446                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
447                )
448            }
449            #[inline]
450            fn stv_abi_encoded_size(&self) -> usize {
451                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
452                    return size;
453                }
454                let tuple = <UnderlyingRustTuple<
455                    '_,
456                > as ::core::convert::From<Self>>::from(self.clone());
457                <UnderlyingSolTuple<
458                    '_,
459                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
460            }
461            #[inline]
462            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
463                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
464            }
465            #[inline]
466            fn stv_abi_encode_packed_to(
467                &self,
468                out: &mut alloy_sol_types::private::Vec<u8>,
469            ) {
470                let tuple = <UnderlyingRustTuple<
471                    '_,
472                > as ::core::convert::From<Self>>::from(self.clone());
473                <UnderlyingSolTuple<
474                    '_,
475                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
476            }
477            #[inline]
478            fn stv_abi_packed_encoded_size(&self) -> usize {
479                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
480                    return size;
481                }
482                let tuple = <UnderlyingRustTuple<
483                    '_,
484                > as ::core::convert::From<Self>>::from(self.clone());
485                <UnderlyingSolTuple<
486                    '_,
487                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
488            }
489        }
490        #[automatically_derived]
491        impl alloy_sol_types::SolType for G2Point {
492            type RustType = Self;
493            type Token<'a> = <UnderlyingSolTuple<
494                'a,
495            > as alloy_sol_types::SolType>::Token<'a>;
496            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
497            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
498                '_,
499            > as alloy_sol_types::SolType>::ENCODED_SIZE;
500            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
501                '_,
502            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
503            #[inline]
504            fn valid_token(token: &Self::Token<'_>) -> bool {
505                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
506            }
507            #[inline]
508            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
509                let tuple = <UnderlyingSolTuple<
510                    '_,
511                > as alloy_sol_types::SolType>::detokenize(token);
512                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
513            }
514        }
515        #[automatically_derived]
516        impl alloy_sol_types::SolStruct for G2Point {
517            const NAME: &'static str = "G2Point";
518            #[inline]
519            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
520                alloy_sol_types::private::Cow::Borrowed(
521                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
522                )
523            }
524            #[inline]
525            fn eip712_components() -> alloy_sol_types::private::Vec<
526                alloy_sol_types::private::Cow<'static, str>,
527            > {
528                alloy_sol_types::private::Vec::new()
529            }
530            #[inline]
531            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
532                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
533            }
534            #[inline]
535            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
536                [
537                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0)
538                        .0,
539                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1)
540                        .0,
541                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0)
542                        .0,
543                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
544                ]
545                    .concat()
546            }
547        }
548        #[automatically_derived]
549        impl alloy_sol_types::EventTopic for G2Point {
550            #[inline]
551            fn topic_preimage_length(rust: &Self::RustType) -> usize {
552                0usize
553                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
554                        &rust.x0,
555                    )
556                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
557                        &rust.x1,
558                    )
559                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
560                        &rust.y0,
561                    )
562                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
563                        &rust.y1,
564                    )
565            }
566            #[inline]
567            fn encode_topic_preimage(
568                rust: &Self::RustType,
569                out: &mut alloy_sol_types::private::Vec<u8>,
570            ) {
571                out.reserve(
572                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
573                );
574                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
575                    &rust.x0,
576                    out,
577                );
578                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
579                    &rust.x1,
580                    out,
581                );
582                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
583                    &rust.y0,
584                    out,
585                );
586                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
587                    &rust.y1,
588                    out,
589                );
590            }
591            #[inline]
592            fn encode_topic(
593                rust: &Self::RustType,
594            ) -> alloy_sol_types::abi::token::WordToken {
595                let mut out = alloy_sol_types::private::Vec::new();
596                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
597                    rust,
598                    &mut out,
599                );
600                alloy_sol_types::abi::token::WordToken(
601                    alloy_sol_types::private::keccak256(out),
602                )
603            }
604        }
605    };
606    use alloy::contract as alloy_contract;
607    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
608
609See the [wrapper's documentation](`BN254Instance`) for more details.*/
610    #[inline]
611    pub const fn new<
612        P: alloy_contract::private::Provider<N>,
613        N: alloy_contract::private::Network,
614    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
615        BN254Instance::<P, N>::new(address, __provider)
616    }
617    /**A [`BN254`](self) instance.
618
619Contains type-safe methods for interacting with an on-chain instance of the
620[`BN254`](self) contract located at a given `address`, using a given
621provider `P`.
622
623If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
624documentation on how to provide it), the `deploy` and `deploy_builder` methods can
625be used to deploy a new instance of the contract.
626
627See the [module-level documentation](self) for all the available methods.*/
628    #[derive(Clone)]
629    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
630        address: alloy_sol_types::private::Address,
631        provider: P,
632        _network: ::core::marker::PhantomData<N>,
633    }
634    #[automatically_derived]
635    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
636        #[inline]
637        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
638            f.debug_tuple("BN254Instance").field(&self.address).finish()
639        }
640    }
641    /// Instantiation and getters/setters.
642    #[automatically_derived]
643    impl<
644        P: alloy_contract::private::Provider<N>,
645        N: alloy_contract::private::Network,
646    > BN254Instance<P, N> {
647        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
648
649See the [wrapper's documentation](`BN254Instance`) for more details.*/
650        #[inline]
651        pub const fn new(
652            address: alloy_sol_types::private::Address,
653            __provider: P,
654        ) -> Self {
655            Self {
656                address,
657                provider: __provider,
658                _network: ::core::marker::PhantomData,
659            }
660        }
661        /// Returns a reference to the address.
662        #[inline]
663        pub const fn address(&self) -> &alloy_sol_types::private::Address {
664            &self.address
665        }
666        /// Sets the address.
667        #[inline]
668        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
669            self.address = address;
670        }
671        /// Sets the address and returns `self`.
672        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
673            self.set_address(address);
674            self
675        }
676        /// Returns a reference to the provider.
677        #[inline]
678        pub const fn provider(&self) -> &P {
679            &self.provider
680        }
681    }
682    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
683        /// Clones the provider and returns a new instance with the cloned provider.
684        #[inline]
685        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
686            BN254Instance {
687                address: self.address,
688                provider: ::core::clone::Clone::clone(&self.provider),
689                _network: ::core::marker::PhantomData,
690            }
691        }
692    }
693    /// Function calls.
694    #[automatically_derived]
695    impl<
696        P: alloy_contract::private::Provider<N>,
697        N: alloy_contract::private::Network,
698    > BN254Instance<P, N> {
699        /// Creates a new call builder using this contract instance's provider and address.
700        ///
701        /// Note that the call can be any function call, not just those defined in this
702        /// contract. Prefer using the other methods for building type-safe contract calls.
703        pub fn call_builder<C: alloy_sol_types::SolCall>(
704            &self,
705            call: &C,
706        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
707            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
708        }
709    }
710    /// Event filters.
711    #[automatically_derived]
712    impl<
713        P: alloy_contract::private::Provider<N>,
714        N: alloy_contract::private::Network,
715    > BN254Instance<P, N> {
716        /// Creates a new event filter using this contract instance's provider and address.
717        ///
718        /// Note that the type can be any event, not just those defined in this contract.
719        /// Prefer using the other methods for building type-safe event filters.
720        pub fn event_filter<E: alloy_sol_types::SolEvent>(
721            &self,
722        ) -> alloy_contract::Event<&P, E, N> {
723            alloy_contract::Event::new_sol(&self.provider, &self.address)
724        }
725    }
726}
727///Module containing a contract's types and functions.
728/**
729
730```solidity
731library EdOnBN254 {
732    struct EdOnBN254Point { uint256 x; uint256 y; }
733}
734```*/
735#[allow(
736    non_camel_case_types,
737    non_snake_case,
738    clippy::pub_underscore_fields,
739    clippy::style,
740    clippy::empty_structs_with_brackets
741)]
742pub mod EdOnBN254 {
743    use super::*;
744    use alloy::sol_types as alloy_sol_types;
745    #[derive(serde::Serialize, serde::Deserialize)]
746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
747    /**```solidity
748struct EdOnBN254Point { uint256 x; uint256 y; }
749```*/
750    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
751    #[derive(Clone)]
752    pub struct EdOnBN254Point {
753        #[allow(missing_docs)]
754        pub x: alloy::sol_types::private::primitives::aliases::U256,
755        #[allow(missing_docs)]
756        pub y: alloy::sol_types::private::primitives::aliases::U256,
757    }
758    #[allow(
759        non_camel_case_types,
760        non_snake_case,
761        clippy::pub_underscore_fields,
762        clippy::style
763    )]
764    const _: () = {
765        use alloy::sol_types as alloy_sol_types;
766        #[doc(hidden)]
767        #[allow(dead_code)]
768        type UnderlyingSolTuple<'a> = (
769            alloy::sol_types::sol_data::Uint<256>,
770            alloy::sol_types::sol_data::Uint<256>,
771        );
772        #[doc(hidden)]
773        type UnderlyingRustTuple<'a> = (
774            alloy::sol_types::private::primitives::aliases::U256,
775            alloy::sol_types::private::primitives::aliases::U256,
776        );
777        #[cfg(test)]
778        #[allow(dead_code, unreachable_patterns)]
779        fn _type_assertion(
780            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
781        ) {
782            match _t {
783                alloy_sol_types::private::AssertTypeEq::<
784                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
785                >(_) => {}
786            }
787        }
788        #[automatically_derived]
789        #[doc(hidden)]
790        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
791            fn from(value: EdOnBN254Point) -> Self {
792                (value.x, value.y)
793            }
794        }
795        #[automatically_derived]
796        #[doc(hidden)]
797        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
798            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
799                Self { x: tuple.0, y: tuple.1 }
800            }
801        }
802        #[automatically_derived]
803        impl alloy_sol_types::SolValue for EdOnBN254Point {
804            type SolType = Self;
805        }
806        #[automatically_derived]
807        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
808            #[inline]
809            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
810                (
811                    <alloy::sol_types::sol_data::Uint<
812                        256,
813                    > as alloy_sol_types::SolType>::tokenize(&self.x),
814                    <alloy::sol_types::sol_data::Uint<
815                        256,
816                    > as alloy_sol_types::SolType>::tokenize(&self.y),
817                )
818            }
819            #[inline]
820            fn stv_abi_encoded_size(&self) -> usize {
821                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
822                    return size;
823                }
824                let tuple = <UnderlyingRustTuple<
825                    '_,
826                > as ::core::convert::From<Self>>::from(self.clone());
827                <UnderlyingSolTuple<
828                    '_,
829                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
830            }
831            #[inline]
832            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
833                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
834            }
835            #[inline]
836            fn stv_abi_encode_packed_to(
837                &self,
838                out: &mut alloy_sol_types::private::Vec<u8>,
839            ) {
840                let tuple = <UnderlyingRustTuple<
841                    '_,
842                > as ::core::convert::From<Self>>::from(self.clone());
843                <UnderlyingSolTuple<
844                    '_,
845                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
846            }
847            #[inline]
848            fn stv_abi_packed_encoded_size(&self) -> usize {
849                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
850                    return size;
851                }
852                let tuple = <UnderlyingRustTuple<
853                    '_,
854                > as ::core::convert::From<Self>>::from(self.clone());
855                <UnderlyingSolTuple<
856                    '_,
857                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
858            }
859        }
860        #[automatically_derived]
861        impl alloy_sol_types::SolType for EdOnBN254Point {
862            type RustType = Self;
863            type Token<'a> = <UnderlyingSolTuple<
864                'a,
865            > as alloy_sol_types::SolType>::Token<'a>;
866            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
867            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
868                '_,
869            > as alloy_sol_types::SolType>::ENCODED_SIZE;
870            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
871                '_,
872            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
873            #[inline]
874            fn valid_token(token: &Self::Token<'_>) -> bool {
875                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
876            }
877            #[inline]
878            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
879                let tuple = <UnderlyingSolTuple<
880                    '_,
881                > as alloy_sol_types::SolType>::detokenize(token);
882                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
883            }
884        }
885        #[automatically_derived]
886        impl alloy_sol_types::SolStruct for EdOnBN254Point {
887            const NAME: &'static str = "EdOnBN254Point";
888            #[inline]
889            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
890                alloy_sol_types::private::Cow::Borrowed(
891                    "EdOnBN254Point(uint256 x,uint256 y)",
892                )
893            }
894            #[inline]
895            fn eip712_components() -> alloy_sol_types::private::Vec<
896                alloy_sol_types::private::Cow<'static, str>,
897            > {
898                alloy_sol_types::private::Vec::new()
899            }
900            #[inline]
901            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
902                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
903            }
904            #[inline]
905            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
906                [
907                    <alloy::sol_types::sol_data::Uint<
908                        256,
909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
910                        .0,
911                    <alloy::sol_types::sol_data::Uint<
912                        256,
913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
914                        .0,
915                ]
916                    .concat()
917            }
918        }
919        #[automatically_derived]
920        impl alloy_sol_types::EventTopic for EdOnBN254Point {
921            #[inline]
922            fn topic_preimage_length(rust: &Self::RustType) -> usize {
923                0usize
924                    + <alloy::sol_types::sol_data::Uint<
925                        256,
926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
927                    + <alloy::sol_types::sol_data::Uint<
928                        256,
929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
930            }
931            #[inline]
932            fn encode_topic_preimage(
933                rust: &Self::RustType,
934                out: &mut alloy_sol_types::private::Vec<u8>,
935            ) {
936                out.reserve(
937                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
938                );
939                <alloy::sol_types::sol_data::Uint<
940                    256,
941                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
942                <alloy::sol_types::sol_data::Uint<
943                    256,
944                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
945            }
946            #[inline]
947            fn encode_topic(
948                rust: &Self::RustType,
949            ) -> alloy_sol_types::abi::token::WordToken {
950                let mut out = alloy_sol_types::private::Vec::new();
951                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
952                    rust,
953                    &mut out,
954                );
955                alloy_sol_types::abi::token::WordToken(
956                    alloy_sol_types::private::keccak256(out),
957                )
958            }
959        }
960    };
961    use alloy::contract as alloy_contract;
962    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
963
964See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
965    #[inline]
966    pub const fn new<
967        P: alloy_contract::private::Provider<N>,
968        N: alloy_contract::private::Network,
969    >(
970        address: alloy_sol_types::private::Address,
971        __provider: P,
972    ) -> EdOnBN254Instance<P, N> {
973        EdOnBN254Instance::<P, N>::new(address, __provider)
974    }
975    /**A [`EdOnBN254`](self) instance.
976
977Contains type-safe methods for interacting with an on-chain instance of the
978[`EdOnBN254`](self) contract located at a given `address`, using a given
979provider `P`.
980
981If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
982documentation on how to provide it), the `deploy` and `deploy_builder` methods can
983be used to deploy a new instance of the contract.
984
985See the [module-level documentation](self) for all the available methods.*/
986    #[derive(Clone)]
987    pub struct EdOnBN254Instance<P, N = alloy_contract::private::Ethereum> {
988        address: alloy_sol_types::private::Address,
989        provider: P,
990        _network: ::core::marker::PhantomData<N>,
991    }
992    #[automatically_derived]
993    impl<P, N> ::core::fmt::Debug for EdOnBN254Instance<P, N> {
994        #[inline]
995        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
996            f.debug_tuple("EdOnBN254Instance").field(&self.address).finish()
997        }
998    }
999    /// Instantiation and getters/setters.
1000    #[automatically_derived]
1001    impl<
1002        P: alloy_contract::private::Provider<N>,
1003        N: alloy_contract::private::Network,
1004    > EdOnBN254Instance<P, N> {
1005        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
1006
1007See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
1008        #[inline]
1009        pub const fn new(
1010            address: alloy_sol_types::private::Address,
1011            __provider: P,
1012        ) -> Self {
1013            Self {
1014                address,
1015                provider: __provider,
1016                _network: ::core::marker::PhantomData,
1017            }
1018        }
1019        /// Returns a reference to the address.
1020        #[inline]
1021        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1022            &self.address
1023        }
1024        /// Sets the address.
1025        #[inline]
1026        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1027            self.address = address;
1028        }
1029        /// Sets the address and returns `self`.
1030        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1031            self.set_address(address);
1032            self
1033        }
1034        /// Returns a reference to the provider.
1035        #[inline]
1036        pub const fn provider(&self) -> &P {
1037            &self.provider
1038        }
1039    }
1040    impl<P: ::core::clone::Clone, N> EdOnBN254Instance<&P, N> {
1041        /// Clones the provider and returns a new instance with the cloned provider.
1042        #[inline]
1043        pub fn with_cloned_provider(self) -> EdOnBN254Instance<P, N> {
1044            EdOnBN254Instance {
1045                address: self.address,
1046                provider: ::core::clone::Clone::clone(&self.provider),
1047                _network: ::core::marker::PhantomData,
1048            }
1049        }
1050    }
1051    /// Function calls.
1052    #[automatically_derived]
1053    impl<
1054        P: alloy_contract::private::Provider<N>,
1055        N: alloy_contract::private::Network,
1056    > EdOnBN254Instance<P, N> {
1057        /// Creates a new call builder using this contract instance's provider and address.
1058        ///
1059        /// Note that the call can be any function call, not just those defined in this
1060        /// contract. Prefer using the other methods for building type-safe contract calls.
1061        pub fn call_builder<C: alloy_sol_types::SolCall>(
1062            &self,
1063            call: &C,
1064        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1065            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1066        }
1067    }
1068    /// Event filters.
1069    #[automatically_derived]
1070    impl<
1071        P: alloy_contract::private::Provider<N>,
1072        N: alloy_contract::private::Network,
1073    > EdOnBN254Instance<P, N> {
1074        /// Creates a new event filter using this contract instance's provider and address.
1075        ///
1076        /// Note that the type can be any event, not just those defined in this contract.
1077        /// Prefer using the other methods for building type-safe event filters.
1078        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1079            &self,
1080        ) -> alloy_contract::Event<&P, E, N> {
1081            alloy_contract::Event::new_sol(&self.provider, &self.address)
1082        }
1083    }
1084}
1085/**
1086
1087Generated by the following Solidity interface...
1088```solidity
1089library BN254 {
1090    type BaseField is uint256;
1091    struct G1Point {
1092        BaseField x;
1093        BaseField y;
1094    }
1095    struct G2Point {
1096        BaseField x0;
1097        BaseField x1;
1098        BaseField y0;
1099        BaseField y1;
1100    }
1101}
1102
1103library EdOnBN254 {
1104    struct EdOnBN254Point {
1105        uint256 x;
1106        uint256 y;
1107    }
1108}
1109
1110interface StakeTable {
1111    type ValidatorStatus is uint8;
1112
1113    error AddressEmptyCode(address target);
1114    error BLSSigVerificationFailed();
1115    error BN254PairingProdFailed();
1116    error BlsKeyAlreadyUsed();
1117    error ERC1967InvalidImplementation(address implementation);
1118    error ERC1967NonPayable();
1119    error ExitEscrowPeriodInvalid();
1120    error FailedInnerCall();
1121    error InsufficientAllowance(uint256, uint256);
1122    error InsufficientBalance(uint256);
1123    error InvalidCommission();
1124    error InvalidG1();
1125    error InvalidInitialization();
1126    error InvalidSchnorrVK();
1127    error NotInitializing();
1128    error NothingToWithdraw();
1129    error OwnableInvalidOwner(address owner);
1130    error OwnableUnauthorizedAccount(address account);
1131    error PowPrecompileFailed();
1132    error PrematureWithdrawal();
1133    error UUPSUnauthorizedCallContext();
1134    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1135    error UndelegationAlreadyExists();
1136    error ValidatorAlreadyExited();
1137    error ValidatorAlreadyRegistered();
1138    error ValidatorInactive();
1139    error ValidatorNotExited();
1140    error ZeroAddress();
1141    error ZeroAmount();
1142
1143    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1144    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1145    event Initialized(uint64 version);
1146    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1147    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1148    event Upgraded(address indexed implementation);
1149    event ValidatorExit(address indexed validator);
1150    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1151    event Withdrawal(address indexed account, uint256 amount);
1152
1153    constructor();
1154
1155    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1156    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1157    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1158    function claimValidatorExit(address validator) external;
1159    function claimWithdrawal(address validator) external;
1160    function delegate(address validator, uint256 amount) external;
1161    function delegations(address validator, address delegator) external view returns (uint256 amount);
1162    function deregisterValidator() external;
1163    function exitEscrowPeriod() external view returns (uint256);
1164    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1165    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1166    function initializedAtBlock() external view returns (uint256);
1167    function lightClient() external view returns (address);
1168    function owner() external view returns (address);
1169    function proxiableUUID() external view returns (bytes32);
1170    function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
1171    function renounceOwnership() external;
1172    function token() external view returns (address);
1173    function transferOwnership(address newOwner) external;
1174    function undelegate(address validator, uint256 amount) external;
1175    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1176    function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
1177    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1178    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1179    function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
1180}
1181```
1182
1183...which was generated by the following JSON ABI:
1184```json
1185[
1186  {
1187    "type": "constructor",
1188    "inputs": [],
1189    "stateMutability": "nonpayable"
1190  },
1191  {
1192    "type": "function",
1193    "name": "UPGRADE_INTERFACE_VERSION",
1194    "inputs": [],
1195    "outputs": [
1196      {
1197        "name": "",
1198        "type": "string",
1199        "internalType": "string"
1200      }
1201    ],
1202    "stateMutability": "view"
1203  },
1204  {
1205    "type": "function",
1206    "name": "_hashBlsKey",
1207    "inputs": [
1208      {
1209        "name": "blsVK",
1210        "type": "tuple",
1211        "internalType": "struct BN254.G2Point",
1212        "components": [
1213          {
1214            "name": "x0",
1215            "type": "uint256",
1216            "internalType": "BN254.BaseField"
1217          },
1218          {
1219            "name": "x1",
1220            "type": "uint256",
1221            "internalType": "BN254.BaseField"
1222          },
1223          {
1224            "name": "y0",
1225            "type": "uint256",
1226            "internalType": "BN254.BaseField"
1227          },
1228          {
1229            "name": "y1",
1230            "type": "uint256",
1231            "internalType": "BN254.BaseField"
1232          }
1233        ]
1234      }
1235    ],
1236    "outputs": [
1237      {
1238        "name": "",
1239        "type": "bytes32",
1240        "internalType": "bytes32"
1241      }
1242    ],
1243    "stateMutability": "pure"
1244  },
1245  {
1246    "type": "function",
1247    "name": "blsKeys",
1248    "inputs": [
1249      {
1250        "name": "blsKeyHash",
1251        "type": "bytes32",
1252        "internalType": "bytes32"
1253      }
1254    ],
1255    "outputs": [
1256      {
1257        "name": "used",
1258        "type": "bool",
1259        "internalType": "bool"
1260      }
1261    ],
1262    "stateMutability": "view"
1263  },
1264  {
1265    "type": "function",
1266    "name": "claimValidatorExit",
1267    "inputs": [
1268      {
1269        "name": "validator",
1270        "type": "address",
1271        "internalType": "address"
1272      }
1273    ],
1274    "outputs": [],
1275    "stateMutability": "nonpayable"
1276  },
1277  {
1278    "type": "function",
1279    "name": "claimWithdrawal",
1280    "inputs": [
1281      {
1282        "name": "validator",
1283        "type": "address",
1284        "internalType": "address"
1285      }
1286    ],
1287    "outputs": [],
1288    "stateMutability": "nonpayable"
1289  },
1290  {
1291    "type": "function",
1292    "name": "delegate",
1293    "inputs": [
1294      {
1295        "name": "validator",
1296        "type": "address",
1297        "internalType": "address"
1298      },
1299      {
1300        "name": "amount",
1301        "type": "uint256",
1302        "internalType": "uint256"
1303      }
1304    ],
1305    "outputs": [],
1306    "stateMutability": "nonpayable"
1307  },
1308  {
1309    "type": "function",
1310    "name": "delegations",
1311    "inputs": [
1312      {
1313        "name": "validator",
1314        "type": "address",
1315        "internalType": "address"
1316      },
1317      {
1318        "name": "delegator",
1319        "type": "address",
1320        "internalType": "address"
1321      }
1322    ],
1323    "outputs": [
1324      {
1325        "name": "amount",
1326        "type": "uint256",
1327        "internalType": "uint256"
1328      }
1329    ],
1330    "stateMutability": "view"
1331  },
1332  {
1333    "type": "function",
1334    "name": "deregisterValidator",
1335    "inputs": [],
1336    "outputs": [],
1337    "stateMutability": "nonpayable"
1338  },
1339  {
1340    "type": "function",
1341    "name": "exitEscrowPeriod",
1342    "inputs": [],
1343    "outputs": [
1344      {
1345        "name": "",
1346        "type": "uint256",
1347        "internalType": "uint256"
1348      }
1349    ],
1350    "stateMutability": "view"
1351  },
1352  {
1353    "type": "function",
1354    "name": "getVersion",
1355    "inputs": [],
1356    "outputs": [
1357      {
1358        "name": "majorVersion",
1359        "type": "uint8",
1360        "internalType": "uint8"
1361      },
1362      {
1363        "name": "minorVersion",
1364        "type": "uint8",
1365        "internalType": "uint8"
1366      },
1367      {
1368        "name": "patchVersion",
1369        "type": "uint8",
1370        "internalType": "uint8"
1371      }
1372    ],
1373    "stateMutability": "pure"
1374  },
1375  {
1376    "type": "function",
1377    "name": "initialize",
1378    "inputs": [
1379      {
1380        "name": "_tokenAddress",
1381        "type": "address",
1382        "internalType": "address"
1383      },
1384      {
1385        "name": "_lightClientAddress",
1386        "type": "address",
1387        "internalType": "address"
1388      },
1389      {
1390        "name": "_exitEscrowPeriod",
1391        "type": "uint256",
1392        "internalType": "uint256"
1393      },
1394      {
1395        "name": "_timelock",
1396        "type": "address",
1397        "internalType": "address"
1398      }
1399    ],
1400    "outputs": [],
1401    "stateMutability": "nonpayable"
1402  },
1403  {
1404    "type": "function",
1405    "name": "initializedAtBlock",
1406    "inputs": [],
1407    "outputs": [
1408      {
1409        "name": "",
1410        "type": "uint256",
1411        "internalType": "uint256"
1412      }
1413    ],
1414    "stateMutability": "view"
1415  },
1416  {
1417    "type": "function",
1418    "name": "lightClient",
1419    "inputs": [],
1420    "outputs": [
1421      {
1422        "name": "",
1423        "type": "address",
1424        "internalType": "contract ILightClient"
1425      }
1426    ],
1427    "stateMutability": "view"
1428  },
1429  {
1430    "type": "function",
1431    "name": "owner",
1432    "inputs": [],
1433    "outputs": [
1434      {
1435        "name": "",
1436        "type": "address",
1437        "internalType": "address"
1438      }
1439    ],
1440    "stateMutability": "view"
1441  },
1442  {
1443    "type": "function",
1444    "name": "proxiableUUID",
1445    "inputs": [],
1446    "outputs": [
1447      {
1448        "name": "",
1449        "type": "bytes32",
1450        "internalType": "bytes32"
1451      }
1452    ],
1453    "stateMutability": "view"
1454  },
1455  {
1456    "type": "function",
1457    "name": "registerValidator",
1458    "inputs": [
1459      {
1460        "name": "blsVK",
1461        "type": "tuple",
1462        "internalType": "struct BN254.G2Point",
1463        "components": [
1464          {
1465            "name": "x0",
1466            "type": "uint256",
1467            "internalType": "BN254.BaseField"
1468          },
1469          {
1470            "name": "x1",
1471            "type": "uint256",
1472            "internalType": "BN254.BaseField"
1473          },
1474          {
1475            "name": "y0",
1476            "type": "uint256",
1477            "internalType": "BN254.BaseField"
1478          },
1479          {
1480            "name": "y1",
1481            "type": "uint256",
1482            "internalType": "BN254.BaseField"
1483          }
1484        ]
1485      },
1486      {
1487        "name": "schnorrVK",
1488        "type": "tuple",
1489        "internalType": "struct EdOnBN254.EdOnBN254Point",
1490        "components": [
1491          {
1492            "name": "x",
1493            "type": "uint256",
1494            "internalType": "uint256"
1495          },
1496          {
1497            "name": "y",
1498            "type": "uint256",
1499            "internalType": "uint256"
1500          }
1501        ]
1502      },
1503      {
1504        "name": "blsSig",
1505        "type": "tuple",
1506        "internalType": "struct BN254.G1Point",
1507        "components": [
1508          {
1509            "name": "x",
1510            "type": "uint256",
1511            "internalType": "BN254.BaseField"
1512          },
1513          {
1514            "name": "y",
1515            "type": "uint256",
1516            "internalType": "BN254.BaseField"
1517          }
1518        ]
1519      },
1520      {
1521        "name": "commission",
1522        "type": "uint16",
1523        "internalType": "uint16"
1524      }
1525    ],
1526    "outputs": [],
1527    "stateMutability": "nonpayable"
1528  },
1529  {
1530    "type": "function",
1531    "name": "renounceOwnership",
1532    "inputs": [],
1533    "outputs": [],
1534    "stateMutability": "nonpayable"
1535  },
1536  {
1537    "type": "function",
1538    "name": "token",
1539    "inputs": [],
1540    "outputs": [
1541      {
1542        "name": "",
1543        "type": "address",
1544        "internalType": "contract ERC20"
1545      }
1546    ],
1547    "stateMutability": "view"
1548  },
1549  {
1550    "type": "function",
1551    "name": "transferOwnership",
1552    "inputs": [
1553      {
1554        "name": "newOwner",
1555        "type": "address",
1556        "internalType": "address"
1557      }
1558    ],
1559    "outputs": [],
1560    "stateMutability": "nonpayable"
1561  },
1562  {
1563    "type": "function",
1564    "name": "undelegate",
1565    "inputs": [
1566      {
1567        "name": "validator",
1568        "type": "address",
1569        "internalType": "address"
1570      },
1571      {
1572        "name": "amount",
1573        "type": "uint256",
1574        "internalType": "uint256"
1575      }
1576    ],
1577    "outputs": [],
1578    "stateMutability": "nonpayable"
1579  },
1580  {
1581    "type": "function",
1582    "name": "undelegations",
1583    "inputs": [
1584      {
1585        "name": "validator",
1586        "type": "address",
1587        "internalType": "address"
1588      },
1589      {
1590        "name": "delegator",
1591        "type": "address",
1592        "internalType": "address"
1593      }
1594    ],
1595    "outputs": [
1596      {
1597        "name": "amount",
1598        "type": "uint256",
1599        "internalType": "uint256"
1600      },
1601      {
1602        "name": "unlocksAt",
1603        "type": "uint256",
1604        "internalType": "uint256"
1605      }
1606    ],
1607    "stateMutability": "view"
1608  },
1609  {
1610    "type": "function",
1611    "name": "updateConsensusKeys",
1612    "inputs": [
1613      {
1614        "name": "newBlsVK",
1615        "type": "tuple",
1616        "internalType": "struct BN254.G2Point",
1617        "components": [
1618          {
1619            "name": "x0",
1620            "type": "uint256",
1621            "internalType": "BN254.BaseField"
1622          },
1623          {
1624            "name": "x1",
1625            "type": "uint256",
1626            "internalType": "BN254.BaseField"
1627          },
1628          {
1629            "name": "y0",
1630            "type": "uint256",
1631            "internalType": "BN254.BaseField"
1632          },
1633          {
1634            "name": "y1",
1635            "type": "uint256",
1636            "internalType": "BN254.BaseField"
1637          }
1638        ]
1639      },
1640      {
1641        "name": "newSchnorrVK",
1642        "type": "tuple",
1643        "internalType": "struct EdOnBN254.EdOnBN254Point",
1644        "components": [
1645          {
1646            "name": "x",
1647            "type": "uint256",
1648            "internalType": "uint256"
1649          },
1650          {
1651            "name": "y",
1652            "type": "uint256",
1653            "internalType": "uint256"
1654          }
1655        ]
1656      },
1657      {
1658        "name": "newBlsSig",
1659        "type": "tuple",
1660        "internalType": "struct BN254.G1Point",
1661        "components": [
1662          {
1663            "name": "x",
1664            "type": "uint256",
1665            "internalType": "BN254.BaseField"
1666          },
1667          {
1668            "name": "y",
1669            "type": "uint256",
1670            "internalType": "BN254.BaseField"
1671          }
1672        ]
1673      }
1674    ],
1675    "outputs": [],
1676    "stateMutability": "nonpayable"
1677  },
1678  {
1679    "type": "function",
1680    "name": "upgradeToAndCall",
1681    "inputs": [
1682      {
1683        "name": "newImplementation",
1684        "type": "address",
1685        "internalType": "address"
1686      },
1687      {
1688        "name": "data",
1689        "type": "bytes",
1690        "internalType": "bytes"
1691      }
1692    ],
1693    "outputs": [],
1694    "stateMutability": "payable"
1695  },
1696  {
1697    "type": "function",
1698    "name": "validatorExits",
1699    "inputs": [
1700      {
1701        "name": "validator",
1702        "type": "address",
1703        "internalType": "address"
1704      }
1705    ],
1706    "outputs": [
1707      {
1708        "name": "unlocksAt",
1709        "type": "uint256",
1710        "internalType": "uint256"
1711      }
1712    ],
1713    "stateMutability": "view"
1714  },
1715  {
1716    "type": "function",
1717    "name": "validators",
1718    "inputs": [
1719      {
1720        "name": "account",
1721        "type": "address",
1722        "internalType": "address"
1723      }
1724    ],
1725    "outputs": [
1726      {
1727        "name": "delegatedAmount",
1728        "type": "uint256",
1729        "internalType": "uint256"
1730      },
1731      {
1732        "name": "status",
1733        "type": "uint8",
1734        "internalType": "enum StakeTable.ValidatorStatus"
1735      }
1736    ],
1737    "stateMutability": "view"
1738  },
1739  {
1740    "type": "event",
1741    "name": "ConsensusKeysUpdated",
1742    "inputs": [
1743      {
1744        "name": "account",
1745        "type": "address",
1746        "indexed": true,
1747        "internalType": "address"
1748      },
1749      {
1750        "name": "blsVK",
1751        "type": "tuple",
1752        "indexed": false,
1753        "internalType": "struct BN254.G2Point",
1754        "components": [
1755          {
1756            "name": "x0",
1757            "type": "uint256",
1758            "internalType": "BN254.BaseField"
1759          },
1760          {
1761            "name": "x1",
1762            "type": "uint256",
1763            "internalType": "BN254.BaseField"
1764          },
1765          {
1766            "name": "y0",
1767            "type": "uint256",
1768            "internalType": "BN254.BaseField"
1769          },
1770          {
1771            "name": "y1",
1772            "type": "uint256",
1773            "internalType": "BN254.BaseField"
1774          }
1775        ]
1776      },
1777      {
1778        "name": "schnorrVK",
1779        "type": "tuple",
1780        "indexed": false,
1781        "internalType": "struct EdOnBN254.EdOnBN254Point",
1782        "components": [
1783          {
1784            "name": "x",
1785            "type": "uint256",
1786            "internalType": "uint256"
1787          },
1788          {
1789            "name": "y",
1790            "type": "uint256",
1791            "internalType": "uint256"
1792          }
1793        ]
1794      }
1795    ],
1796    "anonymous": false
1797  },
1798  {
1799    "type": "event",
1800    "name": "Delegated",
1801    "inputs": [
1802      {
1803        "name": "delegator",
1804        "type": "address",
1805        "indexed": true,
1806        "internalType": "address"
1807      },
1808      {
1809        "name": "validator",
1810        "type": "address",
1811        "indexed": true,
1812        "internalType": "address"
1813      },
1814      {
1815        "name": "amount",
1816        "type": "uint256",
1817        "indexed": false,
1818        "internalType": "uint256"
1819      }
1820    ],
1821    "anonymous": false
1822  },
1823  {
1824    "type": "event",
1825    "name": "Initialized",
1826    "inputs": [
1827      {
1828        "name": "version",
1829        "type": "uint64",
1830        "indexed": false,
1831        "internalType": "uint64"
1832      }
1833    ],
1834    "anonymous": false
1835  },
1836  {
1837    "type": "event",
1838    "name": "OwnershipTransferred",
1839    "inputs": [
1840      {
1841        "name": "previousOwner",
1842        "type": "address",
1843        "indexed": true,
1844        "internalType": "address"
1845      },
1846      {
1847        "name": "newOwner",
1848        "type": "address",
1849        "indexed": true,
1850        "internalType": "address"
1851      }
1852    ],
1853    "anonymous": false
1854  },
1855  {
1856    "type": "event",
1857    "name": "Undelegated",
1858    "inputs": [
1859      {
1860        "name": "delegator",
1861        "type": "address",
1862        "indexed": true,
1863        "internalType": "address"
1864      },
1865      {
1866        "name": "validator",
1867        "type": "address",
1868        "indexed": true,
1869        "internalType": "address"
1870      },
1871      {
1872        "name": "amount",
1873        "type": "uint256",
1874        "indexed": false,
1875        "internalType": "uint256"
1876      }
1877    ],
1878    "anonymous": false
1879  },
1880  {
1881    "type": "event",
1882    "name": "Upgraded",
1883    "inputs": [
1884      {
1885        "name": "implementation",
1886        "type": "address",
1887        "indexed": true,
1888        "internalType": "address"
1889      }
1890    ],
1891    "anonymous": false
1892  },
1893  {
1894    "type": "event",
1895    "name": "ValidatorExit",
1896    "inputs": [
1897      {
1898        "name": "validator",
1899        "type": "address",
1900        "indexed": true,
1901        "internalType": "address"
1902      }
1903    ],
1904    "anonymous": false
1905  },
1906  {
1907    "type": "event",
1908    "name": "ValidatorRegistered",
1909    "inputs": [
1910      {
1911        "name": "account",
1912        "type": "address",
1913        "indexed": true,
1914        "internalType": "address"
1915      },
1916      {
1917        "name": "blsVk",
1918        "type": "tuple",
1919        "indexed": false,
1920        "internalType": "struct BN254.G2Point",
1921        "components": [
1922          {
1923            "name": "x0",
1924            "type": "uint256",
1925            "internalType": "BN254.BaseField"
1926          },
1927          {
1928            "name": "x1",
1929            "type": "uint256",
1930            "internalType": "BN254.BaseField"
1931          },
1932          {
1933            "name": "y0",
1934            "type": "uint256",
1935            "internalType": "BN254.BaseField"
1936          },
1937          {
1938            "name": "y1",
1939            "type": "uint256",
1940            "internalType": "BN254.BaseField"
1941          }
1942        ]
1943      },
1944      {
1945        "name": "schnorrVk",
1946        "type": "tuple",
1947        "indexed": false,
1948        "internalType": "struct EdOnBN254.EdOnBN254Point",
1949        "components": [
1950          {
1951            "name": "x",
1952            "type": "uint256",
1953            "internalType": "uint256"
1954          },
1955          {
1956            "name": "y",
1957            "type": "uint256",
1958            "internalType": "uint256"
1959          }
1960        ]
1961      },
1962      {
1963        "name": "commission",
1964        "type": "uint16",
1965        "indexed": false,
1966        "internalType": "uint16"
1967      }
1968    ],
1969    "anonymous": false
1970  },
1971  {
1972    "type": "event",
1973    "name": "Withdrawal",
1974    "inputs": [
1975      {
1976        "name": "account",
1977        "type": "address",
1978        "indexed": true,
1979        "internalType": "address"
1980      },
1981      {
1982        "name": "amount",
1983        "type": "uint256",
1984        "indexed": false,
1985        "internalType": "uint256"
1986      }
1987    ],
1988    "anonymous": false
1989  },
1990  {
1991    "type": "error",
1992    "name": "AddressEmptyCode",
1993    "inputs": [
1994      {
1995        "name": "target",
1996        "type": "address",
1997        "internalType": "address"
1998      }
1999    ]
2000  },
2001  {
2002    "type": "error",
2003    "name": "BLSSigVerificationFailed",
2004    "inputs": []
2005  },
2006  {
2007    "type": "error",
2008    "name": "BN254PairingProdFailed",
2009    "inputs": []
2010  },
2011  {
2012    "type": "error",
2013    "name": "BlsKeyAlreadyUsed",
2014    "inputs": []
2015  },
2016  {
2017    "type": "error",
2018    "name": "ERC1967InvalidImplementation",
2019    "inputs": [
2020      {
2021        "name": "implementation",
2022        "type": "address",
2023        "internalType": "address"
2024      }
2025    ]
2026  },
2027  {
2028    "type": "error",
2029    "name": "ERC1967NonPayable",
2030    "inputs": []
2031  },
2032  {
2033    "type": "error",
2034    "name": "ExitEscrowPeriodInvalid",
2035    "inputs": []
2036  },
2037  {
2038    "type": "error",
2039    "name": "FailedInnerCall",
2040    "inputs": []
2041  },
2042  {
2043    "type": "error",
2044    "name": "InsufficientAllowance",
2045    "inputs": [
2046      {
2047        "name": "",
2048        "type": "uint256",
2049        "internalType": "uint256"
2050      },
2051      {
2052        "name": "",
2053        "type": "uint256",
2054        "internalType": "uint256"
2055      }
2056    ]
2057  },
2058  {
2059    "type": "error",
2060    "name": "InsufficientBalance",
2061    "inputs": [
2062      {
2063        "name": "",
2064        "type": "uint256",
2065        "internalType": "uint256"
2066      }
2067    ]
2068  },
2069  {
2070    "type": "error",
2071    "name": "InvalidCommission",
2072    "inputs": []
2073  },
2074  {
2075    "type": "error",
2076    "name": "InvalidG1",
2077    "inputs": []
2078  },
2079  {
2080    "type": "error",
2081    "name": "InvalidInitialization",
2082    "inputs": []
2083  },
2084  {
2085    "type": "error",
2086    "name": "InvalidSchnorrVK",
2087    "inputs": []
2088  },
2089  {
2090    "type": "error",
2091    "name": "NotInitializing",
2092    "inputs": []
2093  },
2094  {
2095    "type": "error",
2096    "name": "NothingToWithdraw",
2097    "inputs": []
2098  },
2099  {
2100    "type": "error",
2101    "name": "OwnableInvalidOwner",
2102    "inputs": [
2103      {
2104        "name": "owner",
2105        "type": "address",
2106        "internalType": "address"
2107      }
2108    ]
2109  },
2110  {
2111    "type": "error",
2112    "name": "OwnableUnauthorizedAccount",
2113    "inputs": [
2114      {
2115        "name": "account",
2116        "type": "address",
2117        "internalType": "address"
2118      }
2119    ]
2120  },
2121  {
2122    "type": "error",
2123    "name": "PowPrecompileFailed",
2124    "inputs": []
2125  },
2126  {
2127    "type": "error",
2128    "name": "PrematureWithdrawal",
2129    "inputs": []
2130  },
2131  {
2132    "type": "error",
2133    "name": "UUPSUnauthorizedCallContext",
2134    "inputs": []
2135  },
2136  {
2137    "type": "error",
2138    "name": "UUPSUnsupportedProxiableUUID",
2139    "inputs": [
2140      {
2141        "name": "slot",
2142        "type": "bytes32",
2143        "internalType": "bytes32"
2144      }
2145    ]
2146  },
2147  {
2148    "type": "error",
2149    "name": "UndelegationAlreadyExists",
2150    "inputs": []
2151  },
2152  {
2153    "type": "error",
2154    "name": "ValidatorAlreadyExited",
2155    "inputs": []
2156  },
2157  {
2158    "type": "error",
2159    "name": "ValidatorAlreadyRegistered",
2160    "inputs": []
2161  },
2162  {
2163    "type": "error",
2164    "name": "ValidatorInactive",
2165    "inputs": []
2166  },
2167  {
2168    "type": "error",
2169    "name": "ValidatorNotExited",
2170    "inputs": []
2171  },
2172  {
2173    "type": "error",
2174    "name": "ZeroAddress",
2175    "inputs": []
2176  },
2177  {
2178    "type": "error",
2179    "name": "ZeroAmount",
2180    "inputs": []
2181  }
2182]
2183```*/
2184#[allow(
2185    non_camel_case_types,
2186    non_snake_case,
2187    clippy::pub_underscore_fields,
2188    clippy::style,
2189    clippy::empty_structs_with_brackets
2190)]
2191pub mod StakeTable {
2192    use super::*;
2193    use alloy::sol_types as alloy_sol_types;
2194    /// The creation / init bytecode of the contract.
2195    ///
2196    /// ```text
2197    ///0x60a060405230608052348015610013575f5ffd5b5061001c610029565b610024610029565b6100db565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100795760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612a366101015f395f81816112cb015281816112f401526114380152612a365ff3fe608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004612334565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d036600461245a565b6106d6565b3480156101e0575f5ffd5b506101846101ef3660046124b8565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b50610184610230366004612334565b61098a565b6101846102433660046124d1565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612576565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d3660046125ba565b610ce0565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b506103646103413660046125d4565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b506101846103933660046124b8565b610d3a565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad9190612605565b3480156103e0575f5ffd5b506104036103ef36600461263a565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c3660046124b8565b60056020525f908152604090205481565b348015610468575f5ffd5b50610184610477366004612651565b610e4a565b348015610487575f5ffd5b506102086104963660046125d4565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc3660046124b8565b610f76565b3480156104dc575f5ffd5b506105066104eb3660046124b8565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad9291906126af565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fb3565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d091906126df565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611034565b6001600160a01b0384165f908152600360205260408120805485929061064190849061270a565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c90849061270a565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110d8565b6106e984611125565b6106f285611160565b604080516001600160a01b03831660208201525f9101604051602081830303815290604052905061072481858861119c565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610ce0565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a061269b565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e661269b565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f908152600660209081526040808320878516845290915281205560025461094191168483611231565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fb3565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a7790849061271d565b92505081905550604051806040016040528084815260200160085442610a9d919061270a565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af090849061271d565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b446112c0565b610b4d82611364565b610b57828261136c565b5050565b5f610b6461142d565b505f516020612a0a5f395f51905f5290565b33610b8081610fb3565b610b8983611125565b610b9284611160565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc481848761119c565b600160045f610bd288610ce0565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c30929190612730565b60405180910390a25050505050565b33610c4981610fb3565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b904261270a565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611476565b610cde5f6114d1565b565b5f815f0151826020015183604001518460600151604051602001610d1d949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d7f57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dc757604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e0291168383611231565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e3d91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e8f5750825b90505f8267ffffffffffffffff166001148015610eab5750303b155b905081158015610eb9575080155b15610ed75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0157845460ff60401b1916600160401b1785555b610f0a86611541565b610f12611552565b610f1a61155a565b610f25898989611660565b8315610f6b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f7e611476565b6001600160a01b038116610fa757604051631e4fbdf760e01b81525f60048201526024016105f9565b610fb0816114d1565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610fe457610fe461269b565b036110025760405163508a793f60e01b815260040160405180910390fd5b60028160028111156110165761101661269b565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561108d5750833b153d17155b806110d15760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff1660028111156111075761110761269b565b14610fb05760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526111428282611709565b15610b57576040516306cf438f60e01b815260040160405180910390fd5b60045f61116c83610ce0565b815260208101919091526040015f205460ff1615610fb05760405162da8a5760e11b815260040160405180910390fd5b6111a58261172c565b5f6040518060600160405280602481526020016129c66024913990505f84826040516020016111d5929190612781565b60405160208183030381529060405290505f6111f082611793565b905061120d818561120088611880565b6112086118f7565b6119c4565b6112295760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f51141615161561127b5750823b153d17155b806112ba5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061134657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661133a5f516020612a0a5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610cde5760405163703e46dd60e11b815260040160405180910390fd5b610fb0611476565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113c6575060408051601f3d908101601f191682019092526113c3918101906126df565b60015b6113ee57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612a0a5f395f51905f52811461141e57604051632a87526960e21b8152600481018290526024016105f9565b6114288383611a73565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cde5760405163703e46dd60e11b815260040160405180910390fd5b336114a87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610cde5760405163118cdaa760e01b81523360048201526024016105f9565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611549611ac8565b610fb081611b11565b610cde611ac8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561159f5750825b90505f8267ffffffffffffffff1660011480156115bb5750303b155b9050811580156115c9575080155b156115e75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561161157845460ff60401b1916600160401b1785555b435f5583156110d157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116875760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166116ae5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b0319928316179092556001805492851692909116919091179055605a808210156117015760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b805182515f91148015611723575081602001518360200151145b90505b92915050565b805160208201515f915f5160206129ea5f395f51905f5291159015161561175257505050565b8251602084015182600384858586098509088382830914838210848410161693505050816114285760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f6117b083611b19565b90505f5160206129ea5f395f51905f5260035f82848509905082806117d7576117d761279d565b848209905082806117ea576117ea61279d565b82820890505f5f6117fa83611d22565b925090505b806118635784806118125761181261279d565b60018708955084806118265761182661279d565b868709925084806118395761183961279d565b8684099250848061184c5761184c61279d565b848408925061185a83611d22565b925090506117ff565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f80825260208201528151602083015115901516156118a7575090565b6040518060400160405280835f015181526020015f5160206129ea5f395f51905f5284602001516118d891906127b1565b6118ef905f5160206129ea5f395f51905f5261271d565b905292915050565b61191e60405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611a675760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b611a7c82611dea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ac0576114288282611e4d565b610b57611ebf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610cde57604051631afcd79f60e31b815260040160405180910390fd5b610f7e611ac8565b5f5f611b2483611ede565b805190915060308114611b3957611b396127d0565b5f8167ffffffffffffffff811115611b5357611b5361235c565b6040519080825280601f01601f191660200182016040528015611b7d576020820181803683370190505b5090505f5b82811015611bec57836001611b97838661271d565b611ba1919061271d565b81518110611bb157611bb16127e4565b602001015160f81c60f81b828281518110611bce57611bce6127e4565b60200101906001600160f81b03191690815f1a905350600101611b82565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611c7c578381611c28858861271d565b611c32919061270a565b81518110611c4257611c426127e4565b602001015160f81c60f81b60f81c828281518110611c6257611c626127e4565b60ff90921660209283029190910190910152600101611c14565b505f611c878261222a565b90506101005f5160206129ea5f395f51905f525f611ca5868961271d565b90505f5b81811015611d12575f886001611cbf848661271d565b611cc9919061271d565b81518110611cd957611cd96127e4565b016020015160f81c90508380611cf157611cf161279d565b85870995508380611d0457611d0461279d565b818708955050600101611ca9565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206129ea5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611db057604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115611dc957611dc6838261271d565b92505b8080611dd757611dd761279d565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611e1f57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612a0a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611e6991906127f8565b5f60405180830381855af49150503d805f8114611ea1576040519150601f19603f3d011682016040523d82523d5f602084013e611ea6565b606091505b5091509150611eb6858383612291565b95945050505050565b3415610cde5760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611f1e929190612781565b6040516020818303038152906040529050808460f81b604051602001611f45929190612803565b604051602081830303815290604052905080604051602001611f67919061282d565b60408051601f1981840301815290829052915061010160f01b90611f919083908390602001612845565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff8111156120015761200161235c565b6040519080825280601f01601f19166020018201604052801561202b576020820181803683370190505b5090505f8260405160200161204291815260200190565b60408051601f1981840301815291905290505f5b81518110156120ac57818181518110612071576120716127e4565b602001015160f81c60f81b83828151811061208e5761208e6127e4565b60200101906001600160f81b03191690815f1a905350600101612056565b505f846040516020016120c191815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612153575f8382815181106120fa576120fa6127e4565b602001015160f81c60f81b838381518110612117576121176127e4565b602001015160f81c60f81b1890508881604051602001612138929190612869565b60408051601f198184030181529190529850506001016120df565b508688876040516020016121699392919061288d565b6040516020818303038152906040529650868051906020012093508360405160200161219791815260200190565b60408051601f1981840301815291905291505f5b6121b88a60ff8d1661271d565b811015612219578281815181106121d1576121d16127e4565b01602001516001600160f81b031916846121eb838d61270a565b815181106121fb576121fb6127e4565b60200101906001600160f81b03191690815f1a9053506001016121ab565b50919b9a5050505050505050505050565b5f80805b835181101561228a57838181518110612249576122496127e4565b602002602001015160ff1681600861226191906128c0565b61226c9060026129ba565b61227691906128c0565b612280908361270a565b915060010161222e565b5092915050565b6060826122a6576122a1826122f0565b6122e9565b81511580156122bd57506001600160a01b0384163b155b156122e657604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b8051156123005780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461232f575f5ffd5b919050565b5f5f60408385031215612345575f5ffd5b61234e83612319565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156123935761239361235c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156123c2576123c261235c565b604052919050565b5f608082840312156123da575f5ffd5b6040516080810167ffffffffffffffff811182821017156123fd576123fd61235c565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561243b575f5ffd5b612443612370565b823581526020928301359281019290925250919050565b5f5f5f5f610120858703121561246e575f5ffd5b61247886866123ca565b9350612487866080870161242b565b92506124968660c0870161242b565b915061010085013561ffff811681146124ad575f5ffd5b939692955090935050565b5f602082840312156124c8575f5ffd5b61172382612319565b5f5f604083850312156124e2575f5ffd5b6124eb83612319565b9150602083013567ffffffffffffffff811115612506575f5ffd5b8301601f81018513612516575f5ffd5b803567ffffffffffffffff8111156125305761253061235c565b612543601f8201601f1916602001612399565b818152866020838501011115612557575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f6101008486031215612589575f5ffd5b61259385856123ca565b92506125a2856080860161242b565b91506125b18560c0860161242b565b90509250925092565b5f608082840312156125ca575f5ffd5b61172383836123ca565b5f5f604083850312156125e5575f5ffd5b6125ee83612319565b91506125fc60208401612319565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561264a575f5ffd5b5035919050565b5f5f5f5f60808587031215612664575f5ffd5b61266d85612319565b935061267b60208601612319565b92506040850135915061269060608601612319565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106126d257634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f602082840312156126ef575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611726576117266126f6565b81810381811115611726576117266126f6565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c081016122e9565b5f81518060208401855e5f93019283525090919050565b5f61279561278f838661276a565b8461276a565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f826127cb57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611723828461276a565b5f61280e828561276a565b5f81526001600160f81b03199390931660018401525050600201919050565b5f612838828461276a565b5f81526001019392505050565b5f612850828561276a565b6001600160f01b03199390931683525050600201919050565b5f612874828561276a565b6001600160f81b03199390931683525050600101919050565b5f612898828661276a565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417611726576117266126f6565b6001815b6001841115612912578085048111156128f6576128f66126f6565b600184161561290457908102905b60019390931c9280026128db565b935093915050565b5f8261292857506001611726565b8161293457505f611726565b816001811461294a576002811461295457612970565b6001915050611726565b60ff841115612965576129656126f6565b50506001821b611726565b5060208310610133831016604e8410600b8410161715612993575081810a611726565b61299f5f1984846128d7565b805f19048211156129b2576129b26126f6565b029392505050565b5f611723838361291a56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
2198    /// ```
2199    #[rustfmt::skip]
2200    #[allow(clippy::all)]
2201    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2202        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*6a\x01\x01_9_\x81\x81a\x12\xCB\x01R\x81\x81a\x12\xF4\x01Ra\x148\x01Ra*6_\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#4V[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$ZV[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a$\xB8V[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#4V[a\t\x8AV[a\x01\x84a\x02C6`\x04a$\xD1V[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a%vV[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%\xBAV[a\x0C\xE0V[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a%\xD4V[`\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$\xB8V[a\r:V[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&\x05V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&:V[`\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$\xB8V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a&QV[a\x0EJV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a%\xD4V[`\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$\xB8V[a\x0FvV[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a$\xB8V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a&\xAFV[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xB3V[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&\xDFV[\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\x104V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\nV[\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'\nV[\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\xD8V[a\x06\xE9\x84a\x11%V[a\x06\xF2\x85a\x11`V[`@\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\x9CV[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\xE0V[\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&\x9BV[\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&\x9BV[\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\x121V[\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\xB3V[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'\x1DV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\nV[\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'\x1DV[\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\xC0V[a\x0BM\x82a\x13dV[a\x0BW\x82\x82a\x13lV[PPV[_a\x0Bda\x14-V[P_Q` a*\n_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xB3V[a\x0B\x89\x83a\x11%V[a\x0B\x92\x84a\x11`V[`@\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\x9CV[`\x01`\x04_a\x0B\xD2\x88a\x0C\xE0V[\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'0V[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xB3V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\nV[`\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\x14vV[a\x0C\xDE_a\x14\xD1V[V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r\x1D\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\x7FW`@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\xC7W`@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\x02\x91\x16\x83\x83a\x121V[\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\x0E=\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\x8FWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xABWP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xB9WP\x80\x15[\x15a\x0E\xD7W`@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\x01W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\n\x86a\x15AV[a\x0F\x12a\x15RV[a\x0F\x1Aa\x15ZV[a\x0F%\x89\x89\x89a\x16`V[\x83\x15a\x0FkW\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~a\x14vV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xA7W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xB0\x81a\x14\xD1V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xE4Wa\x0F\xE4a&\x9BV[\x03a\x10\x02W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10\x16Wa\x10\x16a&\x9BV[\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\x8DWP\x83;\x15=\x17\x15[\x80a\x10\xD1W`@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\x07Wa\x11\x07a&\x9BV[\x14a\x0F\xB0W`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11B\x82\x82a\x17\tV[\x15a\x0BWW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11l\x83a\x0C\xE0V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xB0W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xA5\x82a\x17,V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a)\xC6`$\x919\x90P_\x84\x82`@Q` \x01a\x11\xD5\x92\x91\x90a'\x81V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x11\xF0\x82a\x17\x93V[\x90Pa\x12\r\x81\x85a\x12\0\x88a\x18\x80V[a\x12\x08a\x18\xF7V[a\x19\xC4V[a\x12)W`@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{WP\x82;\x15=\x17\x15[\x80a\x12\xBAW`@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\x13FWP\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\x13:_Q` a*\n_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\xDEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xB0a\x14vV[\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\xC6WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x13\xC3\x91\x81\x01\x90a&\xDFV[`\x01[a\x13\xEEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\n_9_Q\x90_R\x81\x14a\x14\x1EW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x14(\x83\x83a\x1AsV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0C\xDEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x14\xA8\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xDEW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x15Ia\x1A\xC8V[a\x0F\xB0\x81a\x1B\x11V[a\x0C\xDEa\x1A\xC8V[\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\x9FWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x15\xBBWP0;\x15[\x90P\x81\x15\x80\x15a\x15\xC9WP\x80\x15[\x15a\x15\xE7W`@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\x16\x11W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xD1W\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\x87W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x16\xAEW`@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\x90U`Z\x80\x82\x10\x15a\x17\x01W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\x80Q\x82Q_\x91\x14\x80\x15a\x17#WP\x81` \x01Q\x83` \x01Q\x14[\x90P[\x92\x91PPV[\x80Q` \x82\x01Q_\x91_Q` a)\xEA_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x17RWPPPV[\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\x14(W`@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\xB0\x83a\x1B\x19V[\x90P_Q` a)\xEA_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x17\xD7Wa\x17\xD7a'\x9DV[\x84\x82\t\x90P\x82\x80a\x17\xEAWa\x17\xEAa'\x9DV[\x82\x82\x08\x90P__a\x17\xFA\x83a\x1D\"V[\x92P\x90P[\x80a\x18cW\x84\x80a\x18\x12Wa\x18\x12a'\x9DV[`\x01\x87\x08\x95P\x84\x80a\x18&Wa\x18&a'\x9DV[\x86\x87\t\x92P\x84\x80a\x189Wa\x189a'\x9DV[\x86\x84\t\x92P\x84\x80a\x18LWa\x18La'\x9DV[\x84\x84\x08\x92Pa\x18Z\x83a\x1D\"V[\x92P\x90Pa\x17\xFFV[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\xA7WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a)\xEA_9_Q\x90_R\x84` \x01Qa\x18\xD8\x91\x90a'\xB1V[a\x18\xEF\x90_Q` a)\xEA_9_Q\x90_Ra'\x1DV[\x90R\x92\x91PPV[a\x19\x1E`@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\x1AgW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a\x1A|\x82a\x1D\xEAV[`@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\xC0Wa\x14(\x82\x82a\x1EMV[a\x0BWa\x1E\xBFV[\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\x0C\xDEW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F~a\x1A\xC8V[__a\x1B$\x83a\x1E\xDEV[\x80Q\x90\x91P`0\x81\x14a\x1B9Wa\x1B9a'\xD0V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1BSWa\x1BSa#\\V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1B}W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1B\xECW\x83`\x01a\x1B\x97\x83\x86a'\x1DV[a\x1B\xA1\x91\x90a'\x1DV[\x81Q\x81\x10a\x1B\xB1Wa\x1B\xB1a'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1B\xCEWa\x1B\xCEa'\xE4V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1B\x82V[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|W\x83\x81a\x1C(\x85\x88a'\x1DV[a\x1C2\x91\x90a'\nV[\x81Q\x81\x10a\x1CBWa\x1CBa'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1CbWa\x1Cba'\xE4V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C\x14V[P_a\x1C\x87\x82a\"*V[\x90Pa\x01\0_Q` a)\xEA_9_Q\x90_R_a\x1C\xA5\x86\x89a'\x1DV[\x90P_[\x81\x81\x10\x15a\x1D\x12W_\x88`\x01a\x1C\xBF\x84\x86a'\x1DV[a\x1C\xC9\x91\x90a'\x1DV[\x81Q\x81\x10a\x1C\xD9Wa\x1C\xD9a'\xE4V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1C\xF1Wa\x1C\xF1a'\x9DV[\x85\x87\t\x95P\x83\x80a\x1D\x04Wa\x1D\x04a'\x9DV[\x81\x87\x08\x95PP`\x01\x01a\x1C\xA9V[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)\xEA_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\xB0W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a\x1D\xC9Wa\x1D\xC6\x83\x82a'\x1DV[\x92P[\x80\x80a\x1D\xD7Wa\x1D\xD7a'\x9DV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E\x1FW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\n_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\x1Ei\x91\x90a'\xF8V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1E\xA1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\xA6V[``\x91P[P\x91P\x91Pa\x1E\xB6\x85\x83\x83a\"\x91V[\x95\x94PPPPPV[4\x15a\x0C\xDEW`@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\x1F\x1E\x92\x91\x90a'\x81V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a\x1FE\x92\x91\x90a(\x03V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a\x1Fg\x91\x90a(-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a\x1F\x91\x90\x83\x90\x83\x90` \x01a(EV[`@\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 \x01Wa \x01a#\\V[`@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 B\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a \xACW\x81\x81\x81Q\x81\x10a qWa qa'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a \x8EWa \x8Ea'\xE4V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a VV[P_\x84`@Q` \x01a \xC1\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!SW_\x83\x82\x81Q\x81\x10a \xFAWa \xFAa'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!\x17Wa!\x17a'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!8\x92\x91\x90a(iV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a \xDFV[P\x86\x88\x87`@Q` \x01a!i\x93\x92\x91\x90a(\x8DV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a!\x97\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a!\xB8\x8A`\xFF\x8D\x16a'\x1DV[\x81\x10\x15a\"\x19W\x82\x81\x81Q\x81\x10a!\xD1Wa!\xD1a'\xE4V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a!\xEB\x83\x8Da'\nV[\x81Q\x81\x10a!\xFBWa!\xFBa'\xE4V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a!\xABV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\"\x8AW\x83\x81\x81Q\x81\x10a\"IWa\"Ia'\xE4V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a\"a\x91\x90a(\xC0V[a\"l\x90`\x02a)\xBAV[a\"v\x91\x90a(\xC0V[a\"\x80\x90\x83a'\nV[\x91P`\x01\x01a\".V[P\x92\x91PPV[``\x82a\"\xA6Wa\"\xA1\x82a\"\xF0V[a\"\xE9V[\x81Q\x15\x80\x15a\"\xBDWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\"\xE6W`@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#\0W\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#/W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a#EW__\xFD[a#N\x83a#\x19V[\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#\x93Wa#\x93a#\\V[`@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#\xC2Wa#\xC2a#\\V[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a#\xDAW__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xFDWa#\xFDa#\\V[`@\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$;W__\xFD[a$Ca#pV[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a$nW__\xFD[a$x\x86\x86a#\xCAV[\x93Pa$\x87\x86`\x80\x87\x01a$+V[\x92Pa$\x96\x86`\xC0\x87\x01a$+V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a$\xADW__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a$\xC8W__\xFD[a\x17#\x82a#\x19V[__`@\x83\x85\x03\x12\x15a$\xE2W__\xFD[a$\xEB\x83a#\x19V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x06W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\x16W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%0Wa%0a#\\V[a%C`\x1F\x82\x01`\x1F\x19\x16` \x01a#\x99V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%WW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a%\x89W__\xFD[a%\x93\x85\x85a#\xCAV[\x92Pa%\xA2\x85`\x80\x86\x01a$+V[\x91Pa%\xB1\x85`\xC0\x86\x01a$+V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a%\xCAW__\xFD[a\x17#\x83\x83a#\xCAV[__`@\x83\x85\x03\x12\x15a%\xE5W__\xFD[a%\xEE\x83a#\x19V[\x91Pa%\xFC` \x84\x01a#\x19V[\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&JW__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a&dW__\xFD[a&m\x85a#\x19V[\x93Pa&{` \x86\x01a#\x19V[\x92P`@\x85\x015\x91Pa&\x90``\x86\x01a#\x19V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a&\xD2WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\xEFW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x17&Wa\x17&a&\xF6V[\x81\x81\x03\x81\x81\x11\x15a\x17&Wa\x17&a&\xF6V[\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\"\xE9V[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a'\x95a'\x8F\x83\x86a'jV[\x84a'jV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a'\xCBWcNH{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\x17#\x82\x84a'jV[_a(\x0E\x82\x85a'jV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(8\x82\x84a'jV[_\x81R`\x01\x01\x93\x92PPPV[_a(P\x82\x85a'jV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a(t\x82\x85a'jV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a(\x98\x82\x86a'jV[`\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\x17&Wa\x17&a&\xF6V[`\x01\x81[`\x01\x84\x11\x15a)\x12W\x80\x85\x04\x81\x11\x15a(\xF6Wa(\xF6a&\xF6V[`\x01\x84\x16\x15a)\x04W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a(\xDBV[\x93P\x93\x91PPV[_\x82a)(WP`\x01a\x17&V[\x81a)4WP_a\x17&V[\x81`\x01\x81\x14a)JW`\x02\x81\x14a)TWa)pV[`\x01\x91PPa\x17&V[`\xFF\x84\x11\x15a)eWa)ea&\xF6V[PP`\x01\x82\x1Ba\x17&V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a)\x93WP\x81\x81\na\x17&V[a)\x9F_\x19\x84\x84a(\xD7V[\x80_\x19\x04\x82\x11\x15a)\xB2Wa)\xB2a&\xF6V[\x02\x93\x92PPPV[_a\x17#\x83\x83a)\x1AV\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",
2203    );
2204    /// The runtime bytecode of the contract, as deployed on the network.
2205    ///
2206    /// ```text
2207    ///0x608060405260043610610161575f3560e01c80639b30a5e6116100cd578063b5700e6811610087578063c64814dd11610062578063c64814dd1461047c578063f2fde38b146104b2578063fa52c7d8146104d1578063fc0c546a14610514575f5ffd5b8063b5700e6814610413578063b5ecb34414610432578063be2030941461045d575f5ffd5b80639b30a5e6146102f35780639e9a8f3114610312578063a2d78dd514610327578063a3066aab14610379578063ad3cb1cc14610398578063b3e6ebd5146103d5575f5ffd5b80634f1ef2861161011e5780634f1ef2861461023557806352d1902d146102485780635544c2f11461025c5780636a911ccf1461027b578063715018a61461028f5780638da5cb5b146102a3575f5ffd5b8063026e402b146101655780630d8e6e2c1461018657806313b9057a146101b65780632140fecd146101d55780633e9df9b5146101f45780634d99dd1614610216575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004612334565b610533565b005b348015610191575f5ffd5b5060408051600181525f60208201819052918101919091526060015b60405180910390f35b3480156101c1575f5ffd5b506101846101d036600461245a565b6106d6565b3480156101e0575f5ffd5b506101846101ef3660046124b8565b610869565b3480156101ff575f5ffd5b506102085f5481565b6040519081526020016101ad565b348015610221575f5ffd5b50610184610230366004612334565b61098a565b6101846102433660046124d1565b610b3c565b348015610253575f5ffd5b50610208610b5b565b348015610267575f5ffd5b50610184610276366004612576565b610b76565b348015610286575f5ffd5b50610184610c3f565b34801561029a575f5ffd5b50610184610ccd565b3480156102ae575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101ad565b3480156102fe575f5ffd5b5061020861030d3660046125ba565b610ce0565b34801561031d575f5ffd5b5061020860085481565b348015610332575f5ffd5b506103646103413660046125d4565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101ad565b348015610384575f5ffd5b506101846103933660046124b8565b610d3a565b3480156103a3575f5ffd5b506103c8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ad9190612605565b3480156103e0575f5ffd5b506104036103ef36600461263a565b60046020525f908152604090205460ff1681565b60405190151581526020016101ad565b34801561041e575f5ffd5b506001546102db906001600160a01b031681565b34801561043d575f5ffd5b5061020861044c3660046124b8565b60056020525f908152604090205481565b348015610468575f5ffd5b50610184610477366004612651565b610e4a565b348015610487575f5ffd5b506102086104963660046125d4565b600660209081525f928352604080842090915290825290205481565b3480156104bd575f5ffd5b506101846104cc3660046124b8565b610f76565b3480156104dc575f5ffd5b506105066104eb3660046124b8565b60036020525f90815260409020805460019091015460ff1682565b6040516101ad9291906126af565b34801561051f575f5ffd5b506002546102db906001600160a01b031681565b61053c82610fb3565b335f82900361055e57604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa1580156105ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d091906126df565b9050828110156106025760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b60025461061a906001600160a01b0316833086611034565b6001600160a01b0384165f908152600360205260408120805485929061064190849061270a565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061067c90849061270a565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516106c891815260200190565b60405180910390a350505050565b336106e0816110d8565b6106e984611125565b6106f285611160565b604080516001600160a01b03831660208201525f9101604051602081830303815290604052905061072481858861119c565b6127108361ffff16111561074b5760405163dc81db8560e01b815260040160405180910390fd5b600160045f61075989610ce0565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f8152602001600160028111156107a0576107a061269b565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156107e6576107e661269b565b02179055505060408051885181526020808a01518183015289830151828401526060808b0151908301528851608083015288015160a082015261ffff861660c082015290516001600160a01b03851692507ff6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f9181900360e00190a2505050505050565b6001600160a01b0381165f9081526005602052604081205433918190036108a3576040516379298a5360e11b815260040160405180910390fd5b804210156108c457604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209386168352929052908120549081900361090c57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f908152600660209081526040808320878516845290915281205560025461094191168483611231565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161097c91815260200190565b60405180910390a250505050565b61099382610fb3565b335f8290036109b557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156109f85760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015610a4157604051639266535160e01b8152600481018290526024016105f9565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610a7790849061271d565b92505081905550604051806040016040528084815260200160085442610a9d919061270a565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290610af090849061271d565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516106c891815260200190565b610b446112c0565b610b4d82611364565b610b57828261136c565b5050565b5f610b6461142d565b505f516020612a0a5f395f51905f5290565b33610b8081610fb3565b610b8983611125565b610b9284611160565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610bc481848761119c565b600160045f610bd288610ce0565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167f80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d8686604051610c30929190612730565b60405180910390a25050505050565b33610c4981610fb3565b6001600160a01b0381165f908152600360205260409020600101805460ff19166002179055600854610c7b904261270a565b6001600160a01b0382165f8181526005602090815260408083209490945560039052828120819055915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b610cd5611476565b610cde5f6114d1565b565b5f815f0151826020015183604001518460600151604051602001610d1d949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003610d7f57604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015610dc757604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083208685168452909152812081815560010155600254610e0291168383611231565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610e3d91815260200190565b60405180910390a2505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610e8f5750825b90505f8267ffffffffffffffff166001148015610eab5750303b155b905081158015610eb9575080155b15610ed75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f0157845460ff60401b1916600160401b1785555b610f0a86611541565b610f12611552565b610f1a61155a565b610f25898989611660565b8315610f6b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610f7e611476565b6001600160a01b038116610fa757604051631e4fbdf760e01b81525f60048201526024016105f9565b610fb0816114d1565b50565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115610fe457610fe461269b565b036110025760405163508a793f60e01b815260040160405180910390fd5b60028160028111156110165761101661269b565b03610b575760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561108d5750833b153d17155b806110d15760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016105f9565b5050505050565b6001600160a01b0381165f9081526003602052604081206001015460ff1660028111156111075761110761269b565b14610fb05760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526111428282611709565b15610b57576040516306cf438f60e01b815260040160405180910390fd5b60045f61116c83610ce0565b815260208101919091526040015f205460ff1615610fb05760405162da8a5760e11b815260040160405180910390fd5b6111a58261172c565b5f6040518060600160405280602481526020016129c66024913990505f84826040516020016111d5929190612781565b60405160208183030381529060405290505f6111f082611793565b905061120d818561120088611880565b6112086118f7565b6119c4565b6112295760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f51141615161561127b5750823b153d17155b806112ba5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016105f9565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061134657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661133a5f516020612a0a5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610cde5760405163703e46dd60e11b815260040160405180910390fd5b610fb0611476565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113c6575060408051601f3d908101601f191682019092526113c3918101906126df565b60015b6113ee57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105f9565b5f516020612a0a5f395f51905f52811461141e57604051632a87526960e21b8152600481018290526024016105f9565b6114288383611a73565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cde5760405163703e46dd60e11b815260040160405180910390fd5b336114a87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610cde5760405163118cdaa760e01b81523360048201526024016105f9565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611549611ac8565b610fb081611b11565b610cde611ac8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561159f5750825b90505f8267ffffffffffffffff1660011480156115bb5750303b155b9050811580156115c9575080155b156115e75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561161157845460ff60401b1916600160401b1785555b435f5583156110d157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b0383166116875760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166116ae5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b0319928316179092556001805492851692909116919091179055605a808210156117015760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b805182515f91148015611723575081602001518360200151145b90505b92915050565b805160208201515f915f5160206129ea5f395f51905f5291159015161561175257505050565b8251602084015182600384858586098509088382830914838210848410161693505050816114285760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f6117b083611b19565b90505f5160206129ea5f395f51905f5260035f82848509905082806117d7576117d761279d565b848209905082806117ea576117ea61279d565b82820890505f5f6117fa83611d22565b925090505b806118635784806118125761181261279d565b60018708955084806118265761182661279d565b868709925084806118395761183961279d565b8684099250848061184c5761184c61279d565b848408925061185a83611d22565b925090506117ff565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f80825260208201528151602083015115901516156118a7575090565b6040518060400160405280835f015181526020015f5160206129ea5f395f51905f5284602001516118d891906127b1565b6118ef905f5160206129ea5f395f51905f5261271d565b905292915050565b61191e60405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080611a675760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b611a7c82611dea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ac0576114288282611e4d565b610b57611ebf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610cde57604051631afcd79f60e31b815260040160405180910390fd5b610f7e611ac8565b5f5f611b2483611ede565b805190915060308114611b3957611b396127d0565b5f8167ffffffffffffffff811115611b5357611b5361235c565b6040519080825280601f01601f191660200182016040528015611b7d576020820181803683370190505b5090505f5b82811015611bec57836001611b97838661271d565b611ba1919061271d565b81518110611bb157611bb16127e4565b602001015160f81c60f81b828281518110611bce57611bce6127e4565b60200101906001600160f81b03191690815f1a905350600101611b82565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015611c7c578381611c28858861271d565b611c32919061270a565b81518110611c4257611c426127e4565b602001015160f81c60f81b60f81c828281518110611c6257611c626127e4565b60ff90921660209283029190910190910152600101611c14565b505f611c878261222a565b90506101005f5160206129ea5f395f51905f525f611ca5868961271d565b90505f5b81811015611d12575f886001611cbf848661271d565b611cc9919061271d565b81518110611cd957611cd96127e4565b016020015160f81c90508380611cf157611cf161279d565b85870995508380611d0457611d0461279d565b818708955050600101611ca9565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206129ea5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083611db057604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115611dc957611dc6838261271d565b92505b8080611dd757611dd761279d565b8384099690961496919550909350505050565b806001600160a01b03163b5f03611e1f57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105f9565b5f516020612a0a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611e6991906127f8565b5f60405180830381855af49150503d805f8114611ea1576040519150601f19603f3d011682016040523d82523d5f602084013e611ea6565b606091505b5091509150611eb6858383612291565b95945050505050565b3415610cde5760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001611f1e929190612781565b6040516020818303038152906040529050808460f81b604051602001611f45929190612803565b604051602081830303815290604052905080604051602001611f67919061282d565b60408051601f1981840301815290829052915061010160f01b90611f919083908390602001612845565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff881667ffffffffffffffff8111156120015761200161235c565b6040519080825280601f01601f19166020018201604052801561202b576020820181803683370190505b5090505f8260405160200161204291815260200190565b60408051601f1981840301815291905290505f5b81518110156120ac57818181518110612071576120716127e4565b602001015160f81c60f81b83828151811061208e5761208e6127e4565b60200101906001600160f81b03191690815f1a905350600101612056565b505f846040516020016120c191815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015612153575f8382815181106120fa576120fa6127e4565b602001015160f81c60f81b838381518110612117576121176127e4565b602001015160f81c60f81b1890508881604051602001612138929190612869565b60408051601f198184030181529190529850506001016120df565b508688876040516020016121699392919061288d565b6040516020818303038152906040529650868051906020012093508360405160200161219791815260200190565b60408051601f1981840301815291905291505f5b6121b88a60ff8d1661271d565b811015612219578281815181106121d1576121d16127e4565b01602001516001600160f81b031916846121eb838d61270a565b815181106121fb576121fb6127e4565b60200101906001600160f81b03191690815f1a9053506001016121ab565b50919b9a5050505050505050505050565b5f80805b835181101561228a57838181518110612249576122496127e4565b602002602001015160ff1681600861226191906128c0565b61226c9060026129ba565b61227691906128c0565b612280908361270a565b915060010161222e565b5092915050565b6060826122a6576122a1826122f0565b6122e9565b81511580156122bd57506001600160a01b0384163b155b156122e657604051639996b31560e01b81526001600160a01b03851660048201526024016105f9565b50805b9392505050565b8051156123005780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461232f575f5ffd5b919050565b5f5f60408385031215612345575f5ffd5b61234e83612319565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156123935761239361235c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156123c2576123c261235c565b604052919050565b5f608082840312156123da575f5ffd5b6040516080810167ffffffffffffffff811182821017156123fd576123fd61235c565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f6040828403121561243b575f5ffd5b612443612370565b823581526020928301359281019290925250919050565b5f5f5f5f610120858703121561246e575f5ffd5b61247886866123ca565b9350612487866080870161242b565b92506124968660c0870161242b565b915061010085013561ffff811681146124ad575f5ffd5b939692955090935050565b5f602082840312156124c8575f5ffd5b61172382612319565b5f5f604083850312156124e2575f5ffd5b6124eb83612319565b9150602083013567ffffffffffffffff811115612506575f5ffd5b8301601f81018513612516575f5ffd5b803567ffffffffffffffff8111156125305761253061235c565b612543601f8201601f1916602001612399565b818152866020838501011115612557575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f6101008486031215612589575f5ffd5b61259385856123ca565b92506125a2856080860161242b565b91506125b18560c0860161242b565b90509250925092565b5f608082840312156125ca575f5ffd5b61172383836123ca565b5f5f604083850312156125e5575f5ffd5b6125ee83612319565b91506125fc60208401612319565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561264a575f5ffd5b5035919050565b5f5f5f5f60808587031215612664575f5ffd5b61266d85612319565b935061267b60208601612319565b92506040850135915061269060608601612319565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b82815260408101600383106126d257634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f602082840312156126ef575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611726576117266126f6565b81810381811115611726576117266126f6565b825181526020808401518183015260408085015190830152606080850151908301528251608083015282015160a082015260c081016122e9565b5f81518060208401855e5f93019283525090919050565b5f61279561278f838661276a565b8461276a565b949350505050565b634e487b7160e01b5f52601260045260245ffd5b5f826127cb57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f611723828461276a565b5f61280e828561276a565b5f81526001600160f81b03199390931660018401525050600201919050565b5f612838828461276a565b5f81526001019392505050565b5f612850828561276a565b6001600160f01b03199390931683525050600201919050565b5f612874828561276a565b6001600160f81b03199390931683525050600101919050565b5f612898828661276a565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417611726576117266126f6565b6001815b6001841115612912578085048111156128f6576128f66126f6565b600184161561290457908102905b60019390931c9280026128db565b935093915050565b5f8261292857506001611726565b8161293457505f611726565b816001811461294a576002811461295457612970565b6001915050611726565b60ff841115612965576129656126f6565b50506001821b611726565b5060208310610133831016604e8410600b8410161715612993575081810a611726565b61299f5f1984846128d7565b805f19048211156129b2576129b26126f6565b029392505050565b5f611723838361291a56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
2208    /// ```
2209    #[rustfmt::skip]
2210    #[allow(clippy::all)]
2211    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2212        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#4V[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$ZV[a\x06\xD6V[4\x80\x15a\x01\xE0W__\xFD[Pa\x01\x84a\x01\xEF6`\x04a$\xB8V[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#4V[a\t\x8AV[a\x01\x84a\x02C6`\x04a$\xD1V[a\x0B<V[4\x80\x15a\x02SW__\xFD[Pa\x02\x08a\x0B[V[4\x80\x15a\x02gW__\xFD[Pa\x01\x84a\x02v6`\x04a%vV[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%\xBAV[a\x0C\xE0V[4\x80\x15a\x03\x1DW__\xFD[Pa\x02\x08`\x08T\x81V[4\x80\x15a\x032W__\xFD[Pa\x03da\x03A6`\x04a%\xD4V[`\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$\xB8V[a\r:V[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&\x05V[4\x80\x15a\x03\xE0W__\xFD[Pa\x04\x03a\x03\xEF6`\x04a&:V[`\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$\xB8V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04hW__\xFD[Pa\x01\x84a\x04w6`\x04a&QV[a\x0EJV[4\x80\x15a\x04\x87W__\xFD[Pa\x02\x08a\x04\x966`\x04a%\xD4V[`\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$\xB8V[a\x0FvV[4\x80\x15a\x04\xDCW__\xFD[Pa\x05\x06a\x04\xEB6`\x04a$\xB8V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x01\xAD\x92\x91\x90a&\xAFV[4\x80\x15a\x05\x1FW__\xFD[P`\x02Ta\x02\xDB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05<\x82a\x0F\xB3V[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&\xDFV[\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\x104V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x06A\x90\x84\x90a'\nV[\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'\nV[\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\xD8V[a\x06\xE9\x84a\x11%V[a\x06\xF2\x85a\x11`V[`@\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\x9CV[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\xE0V[\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&\x9BV[\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&\x9BV[\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\x121V[\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\xB3V[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'\x1DV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\n\x9D\x91\x90a'\nV[\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'\x1DV[\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\xC0V[a\x0BM\x82a\x13dV[a\x0BW\x82\x82a\x13lV[PPV[_a\x0Bda\x14-V[P_Q` a*\n_9_Q\x90_R\x90V[3a\x0B\x80\x81a\x0F\xB3V[a\x0B\x89\x83a\x11%V[a\x0B\x92\x84a\x11`V[`@\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\x9CV[`\x01`\x04_a\x0B\xD2\x88a\x0C\xE0V[\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'0V[`@Q\x80\x91\x03\x90\xA2PPPPPV[3a\x0CI\x81a\x0F\xB3V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x0C{\x90Ba'\nV[`\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\x14vV[a\x0C\xDE_a\x14\xD1V[V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\r\x1D\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\x7FW`@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\xC7W`@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\x02\x91\x16\x83\x83a\x121V[\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\x0E=\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\x8FWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x0E\xABWP0;\x15[\x90P\x81\x15\x80\x15a\x0E\xB9WP\x80\x15[\x15a\x0E\xD7W`@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\x01W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\n\x86a\x15AV[a\x0F\x12a\x15RV[a\x0F\x1Aa\x15ZV[a\x0F%\x89\x89\x89a\x16`V[\x83\x15a\x0FkW\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~a\x14vV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x0F\xA7W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x05\xF9V[a\x0F\xB0\x81a\x14\xD1V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x0F\xE4Wa\x0F\xE4a&\x9BV[\x03a\x10\x02W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x10\x16Wa\x10\x16a&\x9BV[\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\x8DWP\x83;\x15=\x17\x15[\x80a\x10\xD1W`@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\x07Wa\x11\x07a&\x9BV[\x14a\x0F\xB0W`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11B\x82\x82a\x17\tV[\x15a\x0BWW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x11l\x83a\x0C\xE0V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x0F\xB0W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xA5\x82a\x17,V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a)\xC6`$\x919\x90P_\x84\x82`@Q` \x01a\x11\xD5\x92\x91\x90a'\x81V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x11\xF0\x82a\x17\x93V[\x90Pa\x12\r\x81\x85a\x12\0\x88a\x18\x80V[a\x12\x08a\x18\xF7V[a\x19\xC4V[a\x12)W`@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{WP\x82;\x15=\x17\x15[\x80a\x12\xBAW`@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\x13FWP\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\x13:_Q` a*\n_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0C\xDEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xB0a\x14vV[\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\xC6WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x13\xC3\x91\x81\x01\x90a&\xDFV[`\x01[a\x13\xEEW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\n_9_Q\x90_R\x81\x14a\x14\x1EW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x05\xF9V[a\x14(\x83\x83a\x1AsV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0C\xDEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3a\x14\xA8\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xDEW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x05\xF9V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x15Ia\x1A\xC8V[a\x0F\xB0\x81a\x1B\x11V[a\x0C\xDEa\x1A\xC8V[\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\x9FWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x15\xBBWP0;\x15[\x90P\x81\x15\x80\x15a\x15\xC9WP\x80\x15[\x15a\x15\xE7W`@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\x16\x11W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\x10\xD1W\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\x87W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x16\xAEW`@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\x90U`Z\x80\x82\x10\x15a\x17\x01W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[\x80Q\x82Q_\x91\x14\x80\x15a\x17#WP\x81` \x01Q\x83` \x01Q\x14[\x90P[\x92\x91PPV[\x80Q` \x82\x01Q_\x91_Q` a)\xEA_9_Q\x90_R\x91\x15\x90\x15\x16\x15a\x17RWPPPV[\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\x14(W`@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\xB0\x83a\x1B\x19V[\x90P_Q` a)\xEA_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a\x17\xD7Wa\x17\xD7a'\x9DV[\x84\x82\t\x90P\x82\x80a\x17\xEAWa\x17\xEAa'\x9DV[\x82\x82\x08\x90P__a\x17\xFA\x83a\x1D\"V[\x92P\x90P[\x80a\x18cW\x84\x80a\x18\x12Wa\x18\x12a'\x9DV[`\x01\x87\x08\x95P\x84\x80a\x18&Wa\x18&a'\x9DV[\x86\x87\t\x92P\x84\x80a\x189Wa\x189a'\x9DV[\x86\x84\t\x92P\x84\x80a\x18LWa\x18La'\x9DV[\x84\x84\x08\x92Pa\x18Z\x83a\x1D\"V[\x92P\x90Pa\x17\xFFV[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\xA7WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a)\xEA_9_Q\x90_R\x84` \x01Qa\x18\xD8\x91\x90a'\xB1V[a\x18\xEF\x90_Q` a)\xEA_9_Q\x90_Ra'\x1DV[\x90R\x92\x91PPV[a\x19\x1E`@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\x1AgW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[a\x1A|\x82a\x1D\xEAV[`@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\xC0Wa\x14(\x82\x82a\x1EMV[a\x0BWa\x1E\xBFV[\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\x0C\xDEW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F~a\x1A\xC8V[__a\x1B$\x83a\x1E\xDEV[\x80Q\x90\x91P`0\x81\x14a\x1B9Wa\x1B9a'\xD0V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1BSWa\x1BSa#\\V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1B}W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x1B\xECW\x83`\x01a\x1B\x97\x83\x86a'\x1DV[a\x1B\xA1\x91\x90a'\x1DV[\x81Q\x81\x10a\x1B\xB1Wa\x1B\xB1a'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a\x1B\xCEWa\x1B\xCEa'\xE4V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a\x1B\x82V[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|W\x83\x81a\x1C(\x85\x88a'\x1DV[a\x1C2\x91\x90a'\nV[\x81Q\x81\x10a\x1CBWa\x1CBa'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a\x1CbWa\x1Cba'\xE4V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x1C\x14V[P_a\x1C\x87\x82a\"*V[\x90Pa\x01\0_Q` a)\xEA_9_Q\x90_R_a\x1C\xA5\x86\x89a'\x1DV[\x90P_[\x81\x81\x10\x15a\x1D\x12W_\x88`\x01a\x1C\xBF\x84\x86a'\x1DV[a\x1C\xC9\x91\x90a'\x1DV[\x81Q\x81\x10a\x1C\xD9Wa\x1C\xD9a'\xE4V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a\x1C\xF1Wa\x1C\xF1a'\x9DV[\x85\x87\t\x95P\x83\x80a\x1D\x04Wa\x1D\x04a'\x9DV[\x81\x87\x08\x95PP`\x01\x01a\x1C\xA9V[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)\xEA_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\xB0W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a\x1D\xC9Wa\x1D\xC6\x83\x82a'\x1DV[\x92P[\x80\x80a\x1D\xD7Wa\x1D\xD7a'\x9DV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1E\x1FW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x05\xF9V[_Q` a*\n_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\x1Ei\x91\x90a'\xF8V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1E\xA1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\xA6V[``\x91P[P\x91P\x91Pa\x1E\xB6\x85\x83\x83a\"\x91V[\x95\x94PPPPPV[4\x15a\x0C\xDEW`@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\x1F\x1E\x92\x91\x90a'\x81V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a\x1FE\x92\x91\x90a(\x03V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a\x1Fg\x91\x90a(-V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a\x1F\x91\x90\x83\x90\x83\x90` \x01a(EV[`@\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 \x01Wa \x01a#\\V[`@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 B\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a \xACW\x81\x81\x81Q\x81\x10a qWa qa'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a \x8EWa \x8Ea'\xE4V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a VV[P_\x84`@Q` \x01a \xC1\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!SW_\x83\x82\x81Q\x81\x10a \xFAWa \xFAa'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a!\x17Wa!\x17a'\xE4V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a!8\x92\x91\x90a(iV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a \xDFV[P\x86\x88\x87`@Q` \x01a!i\x93\x92\x91\x90a(\x8DV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a!\x97\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a!\xB8\x8A`\xFF\x8D\x16a'\x1DV[\x81\x10\x15a\"\x19W\x82\x81\x81Q\x81\x10a!\xD1Wa!\xD1a'\xE4V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a!\xEB\x83\x8Da'\nV[\x81Q\x81\x10a!\xFBWa!\xFBa'\xE4V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a!\xABV[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\"\x8AW\x83\x81\x81Q\x81\x10a\"IWa\"Ia'\xE4V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a\"a\x91\x90a(\xC0V[a\"l\x90`\x02a)\xBAV[a\"v\x91\x90a(\xC0V[a\"\x80\x90\x83a'\nV[\x91P`\x01\x01a\".V[P\x92\x91PPV[``\x82a\"\xA6Wa\"\xA1\x82a\"\xF0V[a\"\xE9V[\x81Q\x15\x80\x15a\"\xBDWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\"\xE6W`@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#\0W\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#/W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a#EW__\xFD[a#N\x83a#\x19V[\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#\x93Wa#\x93a#\\V[`@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#\xC2Wa#\xC2a#\\V[`@R\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a#\xDAW__\xFD[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a#\xFDWa#\xFDa#\\V[`@\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$;W__\xFD[a$Ca#pV[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[____a\x01 \x85\x87\x03\x12\x15a$nW__\xFD[a$x\x86\x86a#\xCAV[\x93Pa$\x87\x86`\x80\x87\x01a$+V[\x92Pa$\x96\x86`\xC0\x87\x01a$+V[\x91Pa\x01\0\x85\x015a\xFF\xFF\x81\x16\x81\x14a$\xADW__\xFD[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15a$\xC8W__\xFD[a\x17#\x82a#\x19V[__`@\x83\x85\x03\x12\x15a$\xE2W__\xFD[a$\xEB\x83a#\x19V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x06W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\x16W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%0Wa%0a#\\V[a%C`\x1F\x82\x01`\x1F\x19\x16` \x01a#\x99V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%WW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a%\x89W__\xFD[a%\x93\x85\x85a#\xCAV[\x92Pa%\xA2\x85`\x80\x86\x01a$+V[\x91Pa%\xB1\x85`\xC0\x86\x01a$+V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a%\xCAW__\xFD[a\x17#\x83\x83a#\xCAV[__`@\x83\x85\x03\x12\x15a%\xE5W__\xFD[a%\xEE\x83a#\x19V[\x91Pa%\xFC` \x84\x01a#\x19V[\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&JW__\xFD[P5\x91\x90PV[____`\x80\x85\x87\x03\x12\x15a&dW__\xFD[a&m\x85a#\x19V[\x93Pa&{` \x86\x01a#\x19V[\x92P`@\x85\x015\x91Pa&\x90``\x86\x01a#\x19V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a&\xD2WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\xEFW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x17&Wa\x17&a&\xF6V[\x81\x81\x03\x81\x81\x11\x15a\x17&Wa\x17&a&\xF6V[\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\"\xE9V[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a'\x95a'\x8F\x83\x86a'jV[\x84a'jV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a'\xCBWcNH{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\x17#\x82\x84a'jV[_a(\x0E\x82\x85a'jV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a(8\x82\x84a'jV[_\x81R`\x01\x01\x93\x92PPPV[_a(P\x82\x85a'jV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a(t\x82\x85a'jV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a(\x98\x82\x86a'jV[`\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\x17&Wa\x17&a&\xF6V[`\x01\x81[`\x01\x84\x11\x15a)\x12W\x80\x85\x04\x81\x11\x15a(\xF6Wa(\xF6a&\xF6V[`\x01\x84\x16\x15a)\x04W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a(\xDBV[\x93P\x93\x91PPV[_\x82a)(WP`\x01a\x17&V[\x81a)4WP_a\x17&V[\x81`\x01\x81\x14a)JW`\x02\x81\x14a)TWa)pV[`\x01\x91PPa\x17&V[`\xFF\x84\x11\x15a)eWa)ea&\xF6V[PP`\x01\x82\x1Ba\x17&V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a)\x93WP\x81\x81\na\x17&V[a)\x9F_\x19\x84\x84a(\xD7V[\x80_\x19\x04\x82\x11\x15a)\xB2Wa)\xB2a&\xF6V[\x02\x93\x92PPPV[_a\x17#\x83\x83a)\x1AV\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",
2213    );
2214    #[derive(serde::Serialize, serde::Deserialize)]
2215    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2217    #[derive(Clone)]
2218    pub struct ValidatorStatus(u8);
2219    const _: () = {
2220        use alloy::sol_types as alloy_sol_types;
2221        #[automatically_derived]
2222        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
2223            #[inline]
2224            fn stv_to_tokens(
2225                &self,
2226            ) -> <alloy::sol_types::sol_data::Uint<
2227                8,
2228            > as alloy_sol_types::SolType>::Token<'_> {
2229                alloy_sol_types::private::SolTypeValue::<
2230                    alloy::sol_types::sol_data::Uint<8>,
2231                >::stv_to_tokens(self)
2232            }
2233            #[inline]
2234            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2235                <alloy::sol_types::sol_data::Uint<
2236                    8,
2237                > as alloy_sol_types::SolType>::tokenize(self)
2238                    .0
2239            }
2240            #[inline]
2241            fn stv_abi_encode_packed_to(
2242                &self,
2243                out: &mut alloy_sol_types::private::Vec<u8>,
2244            ) {
2245                <alloy::sol_types::sol_data::Uint<
2246                    8,
2247                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
2248            }
2249            #[inline]
2250            fn stv_abi_packed_encoded_size(&self) -> usize {
2251                <alloy::sol_types::sol_data::Uint<
2252                    8,
2253                > as alloy_sol_types::SolType>::abi_encoded_size(self)
2254            }
2255        }
2256        #[automatically_derived]
2257        impl ValidatorStatus {
2258            /// The Solidity type name.
2259            pub const NAME: &'static str = stringify!(@ name);
2260            /// Convert from the underlying value type.
2261            #[inline]
2262            pub const fn from_underlying(value: u8) -> Self {
2263                Self(value)
2264            }
2265            /// Return the underlying value.
2266            #[inline]
2267            pub const fn into_underlying(self) -> u8 {
2268                self.0
2269            }
2270            /// Return the single encoding of this value, delegating to the
2271            /// underlying type.
2272            #[inline]
2273            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
2274                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
2275            }
2276            /// Return the packed encoding of this value, delegating to the
2277            /// underlying type.
2278            #[inline]
2279            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
2280                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
2281            }
2282        }
2283        #[automatically_derived]
2284        impl From<u8> for ValidatorStatus {
2285            fn from(value: u8) -> Self {
2286                Self::from_underlying(value)
2287            }
2288        }
2289        #[automatically_derived]
2290        impl From<ValidatorStatus> for u8 {
2291            fn from(value: ValidatorStatus) -> Self {
2292                value.into_underlying()
2293            }
2294        }
2295        #[automatically_derived]
2296        impl alloy_sol_types::SolType for ValidatorStatus {
2297            type RustType = u8;
2298            type Token<'a> = <alloy::sol_types::sol_data::Uint<
2299                8,
2300            > as alloy_sol_types::SolType>::Token<'a>;
2301            const SOL_NAME: &'static str = Self::NAME;
2302            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2303                8,
2304            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2305            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
2306                8,
2307            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2308            #[inline]
2309            fn valid_token(token: &Self::Token<'_>) -> bool {
2310                Self::type_check(token).is_ok()
2311            }
2312            #[inline]
2313            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
2314                <alloy::sol_types::sol_data::Uint<
2315                    8,
2316                > as alloy_sol_types::SolType>::type_check(token)
2317            }
2318            #[inline]
2319            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2320                <alloy::sol_types::sol_data::Uint<
2321                    8,
2322                > as alloy_sol_types::SolType>::detokenize(token)
2323            }
2324        }
2325        #[automatically_derived]
2326        impl alloy_sol_types::EventTopic for ValidatorStatus {
2327            #[inline]
2328            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2329                <alloy::sol_types::sol_data::Uint<
2330                    8,
2331                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
2332            }
2333            #[inline]
2334            fn encode_topic_preimage(
2335                rust: &Self::RustType,
2336                out: &mut alloy_sol_types::private::Vec<u8>,
2337            ) {
2338                <alloy::sol_types::sol_data::Uint<
2339                    8,
2340                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
2341            }
2342            #[inline]
2343            fn encode_topic(
2344                rust: &Self::RustType,
2345            ) -> alloy_sol_types::abi::token::WordToken {
2346                <alloy::sol_types::sol_data::Uint<
2347                    8,
2348                > as alloy_sol_types::EventTopic>::encode_topic(rust)
2349            }
2350        }
2351    };
2352    #[derive(serde::Serialize, serde::Deserialize)]
2353    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2354    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
2355```solidity
2356error AddressEmptyCode(address target);
2357```*/
2358    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2359    #[derive(Clone)]
2360    pub struct AddressEmptyCode {
2361        #[allow(missing_docs)]
2362        pub target: alloy::sol_types::private::Address,
2363    }
2364    #[allow(
2365        non_camel_case_types,
2366        non_snake_case,
2367        clippy::pub_underscore_fields,
2368        clippy::style
2369    )]
2370    const _: () = {
2371        use alloy::sol_types as alloy_sol_types;
2372        #[doc(hidden)]
2373        #[allow(dead_code)]
2374        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2375        #[doc(hidden)]
2376        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2377        #[cfg(test)]
2378        #[allow(dead_code, unreachable_patterns)]
2379        fn _type_assertion(
2380            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2381        ) {
2382            match _t {
2383                alloy_sol_types::private::AssertTypeEq::<
2384                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2385                >(_) => {}
2386            }
2387        }
2388        #[automatically_derived]
2389        #[doc(hidden)]
2390        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
2391            fn from(value: AddressEmptyCode) -> Self {
2392                (value.target,)
2393            }
2394        }
2395        #[automatically_derived]
2396        #[doc(hidden)]
2397        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
2398            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2399                Self { target: tuple.0 }
2400            }
2401        }
2402        #[automatically_derived]
2403        impl alloy_sol_types::SolError for AddressEmptyCode {
2404            type Parameters<'a> = UnderlyingSolTuple<'a>;
2405            type Token<'a> = <Self::Parameters<
2406                'a,
2407            > as alloy_sol_types::SolType>::Token<'a>;
2408            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
2409            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
2410            #[inline]
2411            fn new<'a>(
2412                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2413            ) -> Self {
2414                tuple.into()
2415            }
2416            #[inline]
2417            fn tokenize(&self) -> Self::Token<'_> {
2418                (
2419                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2420                        &self.target,
2421                    ),
2422                )
2423            }
2424            #[inline]
2425            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2426                <Self::Parameters<
2427                    '_,
2428                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2429                    .map(Self::new)
2430            }
2431        }
2432    };
2433    #[derive(serde::Serialize, serde::Deserialize)]
2434    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2435    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
2436```solidity
2437error BLSSigVerificationFailed();
2438```*/
2439    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2440    #[derive(Clone)]
2441    pub struct BLSSigVerificationFailed;
2442    #[allow(
2443        non_camel_case_types,
2444        non_snake_case,
2445        clippy::pub_underscore_fields,
2446        clippy::style
2447    )]
2448    const _: () = {
2449        use alloy::sol_types as alloy_sol_types;
2450        #[doc(hidden)]
2451        #[allow(dead_code)]
2452        type UnderlyingSolTuple<'a> = ();
2453        #[doc(hidden)]
2454        type UnderlyingRustTuple<'a> = ();
2455        #[cfg(test)]
2456        #[allow(dead_code, unreachable_patterns)]
2457        fn _type_assertion(
2458            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2459        ) {
2460            match _t {
2461                alloy_sol_types::private::AssertTypeEq::<
2462                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2463                >(_) => {}
2464            }
2465        }
2466        #[automatically_derived]
2467        #[doc(hidden)]
2468        impl ::core::convert::From<BLSSigVerificationFailed>
2469        for UnderlyingRustTuple<'_> {
2470            fn from(value: BLSSigVerificationFailed) -> Self {
2471                ()
2472            }
2473        }
2474        #[automatically_derived]
2475        #[doc(hidden)]
2476        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2477        for BLSSigVerificationFailed {
2478            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2479                Self
2480            }
2481        }
2482        #[automatically_derived]
2483        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
2484            type Parameters<'a> = UnderlyingSolTuple<'a>;
2485            type Token<'a> = <Self::Parameters<
2486                'a,
2487            > as alloy_sol_types::SolType>::Token<'a>;
2488            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
2489            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
2490            #[inline]
2491            fn new<'a>(
2492                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2493            ) -> Self {
2494                tuple.into()
2495            }
2496            #[inline]
2497            fn tokenize(&self) -> Self::Token<'_> {
2498                ()
2499            }
2500            #[inline]
2501            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2502                <Self::Parameters<
2503                    '_,
2504                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2505                    .map(Self::new)
2506            }
2507        }
2508    };
2509    #[derive(serde::Serialize, serde::Deserialize)]
2510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2511    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
2512```solidity
2513error BN254PairingProdFailed();
2514```*/
2515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2516    #[derive(Clone)]
2517    pub struct BN254PairingProdFailed;
2518    #[allow(
2519        non_camel_case_types,
2520        non_snake_case,
2521        clippy::pub_underscore_fields,
2522        clippy::style
2523    )]
2524    const _: () = {
2525        use alloy::sol_types as alloy_sol_types;
2526        #[doc(hidden)]
2527        #[allow(dead_code)]
2528        type UnderlyingSolTuple<'a> = ();
2529        #[doc(hidden)]
2530        type UnderlyingRustTuple<'a> = ();
2531        #[cfg(test)]
2532        #[allow(dead_code, unreachable_patterns)]
2533        fn _type_assertion(
2534            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2535        ) {
2536            match _t {
2537                alloy_sol_types::private::AssertTypeEq::<
2538                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2539                >(_) => {}
2540            }
2541        }
2542        #[automatically_derived]
2543        #[doc(hidden)]
2544        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
2545            fn from(value: BN254PairingProdFailed) -> Self {
2546                ()
2547            }
2548        }
2549        #[automatically_derived]
2550        #[doc(hidden)]
2551        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
2552            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2553                Self
2554            }
2555        }
2556        #[automatically_derived]
2557        impl alloy_sol_types::SolError for BN254PairingProdFailed {
2558            type Parameters<'a> = UnderlyingSolTuple<'a>;
2559            type Token<'a> = <Self::Parameters<
2560                'a,
2561            > as alloy_sol_types::SolType>::Token<'a>;
2562            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
2563            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
2564            #[inline]
2565            fn new<'a>(
2566                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2567            ) -> Self {
2568                tuple.into()
2569            }
2570            #[inline]
2571            fn tokenize(&self) -> Self::Token<'_> {
2572                ()
2573            }
2574            #[inline]
2575            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2576                <Self::Parameters<
2577                    '_,
2578                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2579                    .map(Self::new)
2580            }
2581        }
2582    };
2583    #[derive(serde::Serialize, serde::Deserialize)]
2584    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2585    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
2586```solidity
2587error BlsKeyAlreadyUsed();
2588```*/
2589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2590    #[derive(Clone)]
2591    pub struct BlsKeyAlreadyUsed;
2592    #[allow(
2593        non_camel_case_types,
2594        non_snake_case,
2595        clippy::pub_underscore_fields,
2596        clippy::style
2597    )]
2598    const _: () = {
2599        use alloy::sol_types as alloy_sol_types;
2600        #[doc(hidden)]
2601        #[allow(dead_code)]
2602        type UnderlyingSolTuple<'a> = ();
2603        #[doc(hidden)]
2604        type UnderlyingRustTuple<'a> = ();
2605        #[cfg(test)]
2606        #[allow(dead_code, unreachable_patterns)]
2607        fn _type_assertion(
2608            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2609        ) {
2610            match _t {
2611                alloy_sol_types::private::AssertTypeEq::<
2612                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2613                >(_) => {}
2614            }
2615        }
2616        #[automatically_derived]
2617        #[doc(hidden)]
2618        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
2619            fn from(value: BlsKeyAlreadyUsed) -> Self {
2620                ()
2621            }
2622        }
2623        #[automatically_derived]
2624        #[doc(hidden)]
2625        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
2626            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2627                Self
2628            }
2629        }
2630        #[automatically_derived]
2631        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
2632            type Parameters<'a> = UnderlyingSolTuple<'a>;
2633            type Token<'a> = <Self::Parameters<
2634                'a,
2635            > as alloy_sol_types::SolType>::Token<'a>;
2636            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
2637            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
2638            #[inline]
2639            fn new<'a>(
2640                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2641            ) -> Self {
2642                tuple.into()
2643            }
2644            #[inline]
2645            fn tokenize(&self) -> Self::Token<'_> {
2646                ()
2647            }
2648            #[inline]
2649            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2650                <Self::Parameters<
2651                    '_,
2652                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2653                    .map(Self::new)
2654            }
2655        }
2656    };
2657    #[derive(serde::Serialize, serde::Deserialize)]
2658    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2659    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
2660```solidity
2661error ERC1967InvalidImplementation(address implementation);
2662```*/
2663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2664    #[derive(Clone)]
2665    pub struct ERC1967InvalidImplementation {
2666        #[allow(missing_docs)]
2667        pub implementation: alloy::sol_types::private::Address,
2668    }
2669    #[allow(
2670        non_camel_case_types,
2671        non_snake_case,
2672        clippy::pub_underscore_fields,
2673        clippy::style
2674    )]
2675    const _: () = {
2676        use alloy::sol_types as alloy_sol_types;
2677        #[doc(hidden)]
2678        #[allow(dead_code)]
2679        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2680        #[doc(hidden)]
2681        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2682        #[cfg(test)]
2683        #[allow(dead_code, unreachable_patterns)]
2684        fn _type_assertion(
2685            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2686        ) {
2687            match _t {
2688                alloy_sol_types::private::AssertTypeEq::<
2689                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2690                >(_) => {}
2691            }
2692        }
2693        #[automatically_derived]
2694        #[doc(hidden)]
2695        impl ::core::convert::From<ERC1967InvalidImplementation>
2696        for UnderlyingRustTuple<'_> {
2697            fn from(value: ERC1967InvalidImplementation) -> Self {
2698                (value.implementation,)
2699            }
2700        }
2701        #[automatically_derived]
2702        #[doc(hidden)]
2703        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2704        for ERC1967InvalidImplementation {
2705            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2706                Self { implementation: tuple.0 }
2707            }
2708        }
2709        #[automatically_derived]
2710        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
2711            type Parameters<'a> = UnderlyingSolTuple<'a>;
2712            type Token<'a> = <Self::Parameters<
2713                'a,
2714            > as alloy_sol_types::SolType>::Token<'a>;
2715            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
2716            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
2717            #[inline]
2718            fn new<'a>(
2719                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2720            ) -> Self {
2721                tuple.into()
2722            }
2723            #[inline]
2724            fn tokenize(&self) -> Self::Token<'_> {
2725                (
2726                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2727                        &self.implementation,
2728                    ),
2729                )
2730            }
2731            #[inline]
2732            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2733                <Self::Parameters<
2734                    '_,
2735                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2736                    .map(Self::new)
2737            }
2738        }
2739    };
2740    #[derive(serde::Serialize, serde::Deserialize)]
2741    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2742    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
2743```solidity
2744error ERC1967NonPayable();
2745```*/
2746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2747    #[derive(Clone)]
2748    pub struct ERC1967NonPayable;
2749    #[allow(
2750        non_camel_case_types,
2751        non_snake_case,
2752        clippy::pub_underscore_fields,
2753        clippy::style
2754    )]
2755    const _: () = {
2756        use alloy::sol_types as alloy_sol_types;
2757        #[doc(hidden)]
2758        #[allow(dead_code)]
2759        type UnderlyingSolTuple<'a> = ();
2760        #[doc(hidden)]
2761        type UnderlyingRustTuple<'a> = ();
2762        #[cfg(test)]
2763        #[allow(dead_code, unreachable_patterns)]
2764        fn _type_assertion(
2765            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2766        ) {
2767            match _t {
2768                alloy_sol_types::private::AssertTypeEq::<
2769                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2770                >(_) => {}
2771            }
2772        }
2773        #[automatically_derived]
2774        #[doc(hidden)]
2775        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
2776            fn from(value: ERC1967NonPayable) -> Self {
2777                ()
2778            }
2779        }
2780        #[automatically_derived]
2781        #[doc(hidden)]
2782        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
2783            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2784                Self
2785            }
2786        }
2787        #[automatically_derived]
2788        impl alloy_sol_types::SolError for ERC1967NonPayable {
2789            type Parameters<'a> = UnderlyingSolTuple<'a>;
2790            type Token<'a> = <Self::Parameters<
2791                'a,
2792            > as alloy_sol_types::SolType>::Token<'a>;
2793            const SIGNATURE: &'static str = "ERC1967NonPayable()";
2794            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
2795            #[inline]
2796            fn new<'a>(
2797                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2798            ) -> Self {
2799                tuple.into()
2800            }
2801            #[inline]
2802            fn tokenize(&self) -> Self::Token<'_> {
2803                ()
2804            }
2805            #[inline]
2806            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2807                <Self::Parameters<
2808                    '_,
2809                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2810                    .map(Self::new)
2811            }
2812        }
2813    };
2814    #[derive(serde::Serialize, serde::Deserialize)]
2815    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2816    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
2817```solidity
2818error ExitEscrowPeriodInvalid();
2819```*/
2820    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2821    #[derive(Clone)]
2822    pub struct ExitEscrowPeriodInvalid;
2823    #[allow(
2824        non_camel_case_types,
2825        non_snake_case,
2826        clippy::pub_underscore_fields,
2827        clippy::style
2828    )]
2829    const _: () = {
2830        use alloy::sol_types as alloy_sol_types;
2831        #[doc(hidden)]
2832        #[allow(dead_code)]
2833        type UnderlyingSolTuple<'a> = ();
2834        #[doc(hidden)]
2835        type UnderlyingRustTuple<'a> = ();
2836        #[cfg(test)]
2837        #[allow(dead_code, unreachable_patterns)]
2838        fn _type_assertion(
2839            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2840        ) {
2841            match _t {
2842                alloy_sol_types::private::AssertTypeEq::<
2843                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2844                >(_) => {}
2845            }
2846        }
2847        #[automatically_derived]
2848        #[doc(hidden)]
2849        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
2850            fn from(value: ExitEscrowPeriodInvalid) -> Self {
2851                ()
2852            }
2853        }
2854        #[automatically_derived]
2855        #[doc(hidden)]
2856        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
2857            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2858                Self
2859            }
2860        }
2861        #[automatically_derived]
2862        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
2863            type Parameters<'a> = UnderlyingSolTuple<'a>;
2864            type Token<'a> = <Self::Parameters<
2865                'a,
2866            > as alloy_sol_types::SolType>::Token<'a>;
2867            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
2868            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
2869            #[inline]
2870            fn new<'a>(
2871                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2872            ) -> Self {
2873                tuple.into()
2874            }
2875            #[inline]
2876            fn tokenize(&self) -> Self::Token<'_> {
2877                ()
2878            }
2879            #[inline]
2880            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2881                <Self::Parameters<
2882                    '_,
2883                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2884                    .map(Self::new)
2885            }
2886        }
2887    };
2888    #[derive(serde::Serialize, serde::Deserialize)]
2889    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2890    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
2891```solidity
2892error FailedInnerCall();
2893```*/
2894    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2895    #[derive(Clone)]
2896    pub struct FailedInnerCall;
2897    #[allow(
2898        non_camel_case_types,
2899        non_snake_case,
2900        clippy::pub_underscore_fields,
2901        clippy::style
2902    )]
2903    const _: () = {
2904        use alloy::sol_types as alloy_sol_types;
2905        #[doc(hidden)]
2906        #[allow(dead_code)]
2907        type UnderlyingSolTuple<'a> = ();
2908        #[doc(hidden)]
2909        type UnderlyingRustTuple<'a> = ();
2910        #[cfg(test)]
2911        #[allow(dead_code, unreachable_patterns)]
2912        fn _type_assertion(
2913            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2914        ) {
2915            match _t {
2916                alloy_sol_types::private::AssertTypeEq::<
2917                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2918                >(_) => {}
2919            }
2920        }
2921        #[automatically_derived]
2922        #[doc(hidden)]
2923        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
2924            fn from(value: FailedInnerCall) -> Self {
2925                ()
2926            }
2927        }
2928        #[automatically_derived]
2929        #[doc(hidden)]
2930        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
2931            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2932                Self
2933            }
2934        }
2935        #[automatically_derived]
2936        impl alloy_sol_types::SolError for FailedInnerCall {
2937            type Parameters<'a> = UnderlyingSolTuple<'a>;
2938            type Token<'a> = <Self::Parameters<
2939                'a,
2940            > as alloy_sol_types::SolType>::Token<'a>;
2941            const SIGNATURE: &'static str = "FailedInnerCall()";
2942            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
2943            #[inline]
2944            fn new<'a>(
2945                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2946            ) -> Self {
2947                tuple.into()
2948            }
2949            #[inline]
2950            fn tokenize(&self) -> Self::Token<'_> {
2951                ()
2952            }
2953            #[inline]
2954            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2955                <Self::Parameters<
2956                    '_,
2957                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2958                    .map(Self::new)
2959            }
2960        }
2961    };
2962    #[derive(serde::Serialize, serde::Deserialize)]
2963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2964    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
2965```solidity
2966error InsufficientAllowance(uint256, uint256);
2967```*/
2968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2969    #[derive(Clone)]
2970    pub struct InsufficientAllowance {
2971        #[allow(missing_docs)]
2972        pub _0: alloy::sol_types::private::primitives::aliases::U256,
2973        #[allow(missing_docs)]
2974        pub _1: alloy::sol_types::private::primitives::aliases::U256,
2975    }
2976    #[allow(
2977        non_camel_case_types,
2978        non_snake_case,
2979        clippy::pub_underscore_fields,
2980        clippy::style
2981    )]
2982    const _: () = {
2983        use alloy::sol_types as alloy_sol_types;
2984        #[doc(hidden)]
2985        #[allow(dead_code)]
2986        type UnderlyingSolTuple<'a> = (
2987            alloy::sol_types::sol_data::Uint<256>,
2988            alloy::sol_types::sol_data::Uint<256>,
2989        );
2990        #[doc(hidden)]
2991        type UnderlyingRustTuple<'a> = (
2992            alloy::sol_types::private::primitives::aliases::U256,
2993            alloy::sol_types::private::primitives::aliases::U256,
2994        );
2995        #[cfg(test)]
2996        #[allow(dead_code, unreachable_patterns)]
2997        fn _type_assertion(
2998            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2999        ) {
3000            match _t {
3001                alloy_sol_types::private::AssertTypeEq::<
3002                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3003                >(_) => {}
3004            }
3005        }
3006        #[automatically_derived]
3007        #[doc(hidden)]
3008        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
3009            fn from(value: InsufficientAllowance) -> Self {
3010                (value._0, value._1)
3011            }
3012        }
3013        #[automatically_derived]
3014        #[doc(hidden)]
3015        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
3016            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3017                Self { _0: tuple.0, _1: tuple.1 }
3018            }
3019        }
3020        #[automatically_derived]
3021        impl alloy_sol_types::SolError for InsufficientAllowance {
3022            type Parameters<'a> = UnderlyingSolTuple<'a>;
3023            type Token<'a> = <Self::Parameters<
3024                'a,
3025            > as alloy_sol_types::SolType>::Token<'a>;
3026            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
3027            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
3028            #[inline]
3029            fn new<'a>(
3030                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3031            ) -> Self {
3032                tuple.into()
3033            }
3034            #[inline]
3035            fn tokenize(&self) -> Self::Token<'_> {
3036                (
3037                    <alloy::sol_types::sol_data::Uint<
3038                        256,
3039                    > as alloy_sol_types::SolType>::tokenize(&self._0),
3040                    <alloy::sol_types::sol_data::Uint<
3041                        256,
3042                    > as alloy_sol_types::SolType>::tokenize(&self._1),
3043                )
3044            }
3045            #[inline]
3046            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3047                <Self::Parameters<
3048                    '_,
3049                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3050                    .map(Self::new)
3051            }
3052        }
3053    };
3054    #[derive(serde::Serialize, serde::Deserialize)]
3055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3056    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
3057```solidity
3058error InsufficientBalance(uint256);
3059```*/
3060    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3061    #[derive(Clone)]
3062    pub struct InsufficientBalance(
3063        pub alloy::sol_types::private::primitives::aliases::U256,
3064    );
3065    #[allow(
3066        non_camel_case_types,
3067        non_snake_case,
3068        clippy::pub_underscore_fields,
3069        clippy::style
3070    )]
3071    const _: () = {
3072        use alloy::sol_types as alloy_sol_types;
3073        #[doc(hidden)]
3074        #[allow(dead_code)]
3075        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3076        #[doc(hidden)]
3077        type UnderlyingRustTuple<'a> = (
3078            alloy::sol_types::private::primitives::aliases::U256,
3079        );
3080        #[cfg(test)]
3081        #[allow(dead_code, unreachable_patterns)]
3082        fn _type_assertion(
3083            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3084        ) {
3085            match _t {
3086                alloy_sol_types::private::AssertTypeEq::<
3087                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3088                >(_) => {}
3089            }
3090        }
3091        #[automatically_derived]
3092        #[doc(hidden)]
3093        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
3094            fn from(value: InsufficientBalance) -> Self {
3095                (value.0,)
3096            }
3097        }
3098        #[automatically_derived]
3099        #[doc(hidden)]
3100        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
3101            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3102                Self(tuple.0)
3103            }
3104        }
3105        #[automatically_derived]
3106        impl alloy_sol_types::SolError for InsufficientBalance {
3107            type Parameters<'a> = UnderlyingSolTuple<'a>;
3108            type Token<'a> = <Self::Parameters<
3109                'a,
3110            > as alloy_sol_types::SolType>::Token<'a>;
3111            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
3112            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
3113            #[inline]
3114            fn new<'a>(
3115                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3116            ) -> Self {
3117                tuple.into()
3118            }
3119            #[inline]
3120            fn tokenize(&self) -> Self::Token<'_> {
3121                (
3122                    <alloy::sol_types::sol_data::Uint<
3123                        256,
3124                    > as alloy_sol_types::SolType>::tokenize(&self.0),
3125                )
3126            }
3127            #[inline]
3128            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3129                <Self::Parameters<
3130                    '_,
3131                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3132                    .map(Self::new)
3133            }
3134        }
3135    };
3136    #[derive(serde::Serialize, serde::Deserialize)]
3137    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3138    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
3139```solidity
3140error InvalidCommission();
3141```*/
3142    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3143    #[derive(Clone)]
3144    pub struct InvalidCommission;
3145    #[allow(
3146        non_camel_case_types,
3147        non_snake_case,
3148        clippy::pub_underscore_fields,
3149        clippy::style
3150    )]
3151    const _: () = {
3152        use alloy::sol_types as alloy_sol_types;
3153        #[doc(hidden)]
3154        #[allow(dead_code)]
3155        type UnderlyingSolTuple<'a> = ();
3156        #[doc(hidden)]
3157        type UnderlyingRustTuple<'a> = ();
3158        #[cfg(test)]
3159        #[allow(dead_code, unreachable_patterns)]
3160        fn _type_assertion(
3161            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3162        ) {
3163            match _t {
3164                alloy_sol_types::private::AssertTypeEq::<
3165                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3166                >(_) => {}
3167            }
3168        }
3169        #[automatically_derived]
3170        #[doc(hidden)]
3171        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
3172            fn from(value: InvalidCommission) -> Self {
3173                ()
3174            }
3175        }
3176        #[automatically_derived]
3177        #[doc(hidden)]
3178        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
3179            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3180                Self
3181            }
3182        }
3183        #[automatically_derived]
3184        impl alloy_sol_types::SolError for InvalidCommission {
3185            type Parameters<'a> = UnderlyingSolTuple<'a>;
3186            type Token<'a> = <Self::Parameters<
3187                'a,
3188            > as alloy_sol_types::SolType>::Token<'a>;
3189            const SIGNATURE: &'static str = "InvalidCommission()";
3190            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
3191            #[inline]
3192            fn new<'a>(
3193                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3194            ) -> Self {
3195                tuple.into()
3196            }
3197            #[inline]
3198            fn tokenize(&self) -> Self::Token<'_> {
3199                ()
3200            }
3201            #[inline]
3202            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3203                <Self::Parameters<
3204                    '_,
3205                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3206                    .map(Self::new)
3207            }
3208        }
3209    };
3210    #[derive(serde::Serialize, serde::Deserialize)]
3211    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3212    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
3213```solidity
3214error InvalidG1();
3215```*/
3216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3217    #[derive(Clone)]
3218    pub struct InvalidG1;
3219    #[allow(
3220        non_camel_case_types,
3221        non_snake_case,
3222        clippy::pub_underscore_fields,
3223        clippy::style
3224    )]
3225    const _: () = {
3226        use alloy::sol_types as alloy_sol_types;
3227        #[doc(hidden)]
3228        #[allow(dead_code)]
3229        type UnderlyingSolTuple<'a> = ();
3230        #[doc(hidden)]
3231        type UnderlyingRustTuple<'a> = ();
3232        #[cfg(test)]
3233        #[allow(dead_code, unreachable_patterns)]
3234        fn _type_assertion(
3235            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3236        ) {
3237            match _t {
3238                alloy_sol_types::private::AssertTypeEq::<
3239                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3240                >(_) => {}
3241            }
3242        }
3243        #[automatically_derived]
3244        #[doc(hidden)]
3245        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
3246            fn from(value: InvalidG1) -> Self {
3247                ()
3248            }
3249        }
3250        #[automatically_derived]
3251        #[doc(hidden)]
3252        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
3253            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3254                Self
3255            }
3256        }
3257        #[automatically_derived]
3258        impl alloy_sol_types::SolError for InvalidG1 {
3259            type Parameters<'a> = UnderlyingSolTuple<'a>;
3260            type Token<'a> = <Self::Parameters<
3261                'a,
3262            > as alloy_sol_types::SolType>::Token<'a>;
3263            const SIGNATURE: &'static str = "InvalidG1()";
3264            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
3265            #[inline]
3266            fn new<'a>(
3267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3268            ) -> Self {
3269                tuple.into()
3270            }
3271            #[inline]
3272            fn tokenize(&self) -> Self::Token<'_> {
3273                ()
3274            }
3275            #[inline]
3276            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3277                <Self::Parameters<
3278                    '_,
3279                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3280                    .map(Self::new)
3281            }
3282        }
3283    };
3284    #[derive(serde::Serialize, serde::Deserialize)]
3285    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3286    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
3287```solidity
3288error InvalidInitialization();
3289```*/
3290    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3291    #[derive(Clone)]
3292    pub struct InvalidInitialization;
3293    #[allow(
3294        non_camel_case_types,
3295        non_snake_case,
3296        clippy::pub_underscore_fields,
3297        clippy::style
3298    )]
3299    const _: () = {
3300        use alloy::sol_types as alloy_sol_types;
3301        #[doc(hidden)]
3302        #[allow(dead_code)]
3303        type UnderlyingSolTuple<'a> = ();
3304        #[doc(hidden)]
3305        type UnderlyingRustTuple<'a> = ();
3306        #[cfg(test)]
3307        #[allow(dead_code, unreachable_patterns)]
3308        fn _type_assertion(
3309            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3310        ) {
3311            match _t {
3312                alloy_sol_types::private::AssertTypeEq::<
3313                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3314                >(_) => {}
3315            }
3316        }
3317        #[automatically_derived]
3318        #[doc(hidden)]
3319        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
3320            fn from(value: InvalidInitialization) -> Self {
3321                ()
3322            }
3323        }
3324        #[automatically_derived]
3325        #[doc(hidden)]
3326        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
3327            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3328                Self
3329            }
3330        }
3331        #[automatically_derived]
3332        impl alloy_sol_types::SolError for InvalidInitialization {
3333            type Parameters<'a> = UnderlyingSolTuple<'a>;
3334            type Token<'a> = <Self::Parameters<
3335                'a,
3336            > as alloy_sol_types::SolType>::Token<'a>;
3337            const SIGNATURE: &'static str = "InvalidInitialization()";
3338            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
3339            #[inline]
3340            fn new<'a>(
3341                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3342            ) -> Self {
3343                tuple.into()
3344            }
3345            #[inline]
3346            fn tokenize(&self) -> Self::Token<'_> {
3347                ()
3348            }
3349            #[inline]
3350            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3351                <Self::Parameters<
3352                    '_,
3353                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3354                    .map(Self::new)
3355            }
3356        }
3357    };
3358    #[derive(serde::Serialize, serde::Deserialize)]
3359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3360    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
3361```solidity
3362error InvalidSchnorrVK();
3363```*/
3364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3365    #[derive(Clone)]
3366    pub struct InvalidSchnorrVK;
3367    #[allow(
3368        non_camel_case_types,
3369        non_snake_case,
3370        clippy::pub_underscore_fields,
3371        clippy::style
3372    )]
3373    const _: () = {
3374        use alloy::sol_types as alloy_sol_types;
3375        #[doc(hidden)]
3376        #[allow(dead_code)]
3377        type UnderlyingSolTuple<'a> = ();
3378        #[doc(hidden)]
3379        type UnderlyingRustTuple<'a> = ();
3380        #[cfg(test)]
3381        #[allow(dead_code, unreachable_patterns)]
3382        fn _type_assertion(
3383            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3384        ) {
3385            match _t {
3386                alloy_sol_types::private::AssertTypeEq::<
3387                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3388                >(_) => {}
3389            }
3390        }
3391        #[automatically_derived]
3392        #[doc(hidden)]
3393        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
3394            fn from(value: InvalidSchnorrVK) -> Self {
3395                ()
3396            }
3397        }
3398        #[automatically_derived]
3399        #[doc(hidden)]
3400        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
3401            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3402                Self
3403            }
3404        }
3405        #[automatically_derived]
3406        impl alloy_sol_types::SolError for InvalidSchnorrVK {
3407            type Parameters<'a> = UnderlyingSolTuple<'a>;
3408            type Token<'a> = <Self::Parameters<
3409                'a,
3410            > as alloy_sol_types::SolType>::Token<'a>;
3411            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
3412            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
3413            #[inline]
3414            fn new<'a>(
3415                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3416            ) -> Self {
3417                tuple.into()
3418            }
3419            #[inline]
3420            fn tokenize(&self) -> Self::Token<'_> {
3421                ()
3422            }
3423            #[inline]
3424            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3425                <Self::Parameters<
3426                    '_,
3427                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3428                    .map(Self::new)
3429            }
3430        }
3431    };
3432    #[derive(serde::Serialize, serde::Deserialize)]
3433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3434    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
3435```solidity
3436error NotInitializing();
3437```*/
3438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3439    #[derive(Clone)]
3440    pub struct NotInitializing;
3441    #[allow(
3442        non_camel_case_types,
3443        non_snake_case,
3444        clippy::pub_underscore_fields,
3445        clippy::style
3446    )]
3447    const _: () = {
3448        use alloy::sol_types as alloy_sol_types;
3449        #[doc(hidden)]
3450        #[allow(dead_code)]
3451        type UnderlyingSolTuple<'a> = ();
3452        #[doc(hidden)]
3453        type UnderlyingRustTuple<'a> = ();
3454        #[cfg(test)]
3455        #[allow(dead_code, unreachable_patterns)]
3456        fn _type_assertion(
3457            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3458        ) {
3459            match _t {
3460                alloy_sol_types::private::AssertTypeEq::<
3461                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3462                >(_) => {}
3463            }
3464        }
3465        #[automatically_derived]
3466        #[doc(hidden)]
3467        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
3468            fn from(value: NotInitializing) -> Self {
3469                ()
3470            }
3471        }
3472        #[automatically_derived]
3473        #[doc(hidden)]
3474        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
3475            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3476                Self
3477            }
3478        }
3479        #[automatically_derived]
3480        impl alloy_sol_types::SolError for NotInitializing {
3481            type Parameters<'a> = UnderlyingSolTuple<'a>;
3482            type Token<'a> = <Self::Parameters<
3483                'a,
3484            > as alloy_sol_types::SolType>::Token<'a>;
3485            const SIGNATURE: &'static str = "NotInitializing()";
3486            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
3487            #[inline]
3488            fn new<'a>(
3489                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3490            ) -> Self {
3491                tuple.into()
3492            }
3493            #[inline]
3494            fn tokenize(&self) -> Self::Token<'_> {
3495                ()
3496            }
3497            #[inline]
3498            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3499                <Self::Parameters<
3500                    '_,
3501                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3502                    .map(Self::new)
3503            }
3504        }
3505    };
3506    #[derive(serde::Serialize, serde::Deserialize)]
3507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3508    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
3509```solidity
3510error NothingToWithdraw();
3511```*/
3512    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3513    #[derive(Clone)]
3514    pub struct NothingToWithdraw;
3515    #[allow(
3516        non_camel_case_types,
3517        non_snake_case,
3518        clippy::pub_underscore_fields,
3519        clippy::style
3520    )]
3521    const _: () = {
3522        use alloy::sol_types as alloy_sol_types;
3523        #[doc(hidden)]
3524        #[allow(dead_code)]
3525        type UnderlyingSolTuple<'a> = ();
3526        #[doc(hidden)]
3527        type UnderlyingRustTuple<'a> = ();
3528        #[cfg(test)]
3529        #[allow(dead_code, unreachable_patterns)]
3530        fn _type_assertion(
3531            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3532        ) {
3533            match _t {
3534                alloy_sol_types::private::AssertTypeEq::<
3535                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3536                >(_) => {}
3537            }
3538        }
3539        #[automatically_derived]
3540        #[doc(hidden)]
3541        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
3542            fn from(value: NothingToWithdraw) -> Self {
3543                ()
3544            }
3545        }
3546        #[automatically_derived]
3547        #[doc(hidden)]
3548        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
3549            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3550                Self
3551            }
3552        }
3553        #[automatically_derived]
3554        impl alloy_sol_types::SolError for NothingToWithdraw {
3555            type Parameters<'a> = UnderlyingSolTuple<'a>;
3556            type Token<'a> = <Self::Parameters<
3557                'a,
3558            > as alloy_sol_types::SolType>::Token<'a>;
3559            const SIGNATURE: &'static str = "NothingToWithdraw()";
3560            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
3561            #[inline]
3562            fn new<'a>(
3563                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3564            ) -> Self {
3565                tuple.into()
3566            }
3567            #[inline]
3568            fn tokenize(&self) -> Self::Token<'_> {
3569                ()
3570            }
3571            #[inline]
3572            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3573                <Self::Parameters<
3574                    '_,
3575                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3576                    .map(Self::new)
3577            }
3578        }
3579    };
3580    #[derive(serde::Serialize, serde::Deserialize)]
3581    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3582    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
3583```solidity
3584error OwnableInvalidOwner(address owner);
3585```*/
3586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3587    #[derive(Clone)]
3588    pub struct OwnableInvalidOwner {
3589        #[allow(missing_docs)]
3590        pub owner: alloy::sol_types::private::Address,
3591    }
3592    #[allow(
3593        non_camel_case_types,
3594        non_snake_case,
3595        clippy::pub_underscore_fields,
3596        clippy::style
3597    )]
3598    const _: () = {
3599        use alloy::sol_types as alloy_sol_types;
3600        #[doc(hidden)]
3601        #[allow(dead_code)]
3602        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3603        #[doc(hidden)]
3604        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3605        #[cfg(test)]
3606        #[allow(dead_code, unreachable_patterns)]
3607        fn _type_assertion(
3608            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3609        ) {
3610            match _t {
3611                alloy_sol_types::private::AssertTypeEq::<
3612                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3613                >(_) => {}
3614            }
3615        }
3616        #[automatically_derived]
3617        #[doc(hidden)]
3618        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
3619            fn from(value: OwnableInvalidOwner) -> Self {
3620                (value.owner,)
3621            }
3622        }
3623        #[automatically_derived]
3624        #[doc(hidden)]
3625        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
3626            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3627                Self { owner: tuple.0 }
3628            }
3629        }
3630        #[automatically_derived]
3631        impl alloy_sol_types::SolError for OwnableInvalidOwner {
3632            type Parameters<'a> = UnderlyingSolTuple<'a>;
3633            type Token<'a> = <Self::Parameters<
3634                'a,
3635            > as alloy_sol_types::SolType>::Token<'a>;
3636            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
3637            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
3638            #[inline]
3639            fn new<'a>(
3640                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3641            ) -> Self {
3642                tuple.into()
3643            }
3644            #[inline]
3645            fn tokenize(&self) -> Self::Token<'_> {
3646                (
3647                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3648                        &self.owner,
3649                    ),
3650                )
3651            }
3652            #[inline]
3653            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3654                <Self::Parameters<
3655                    '_,
3656                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3657                    .map(Self::new)
3658            }
3659        }
3660    };
3661    #[derive(serde::Serialize, serde::Deserialize)]
3662    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3663    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
3664```solidity
3665error OwnableUnauthorizedAccount(address account);
3666```*/
3667    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3668    #[derive(Clone)]
3669    pub struct OwnableUnauthorizedAccount {
3670        #[allow(missing_docs)]
3671        pub account: alloy::sol_types::private::Address,
3672    }
3673    #[allow(
3674        non_camel_case_types,
3675        non_snake_case,
3676        clippy::pub_underscore_fields,
3677        clippy::style
3678    )]
3679    const _: () = {
3680        use alloy::sol_types as alloy_sol_types;
3681        #[doc(hidden)]
3682        #[allow(dead_code)]
3683        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3684        #[doc(hidden)]
3685        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3686        #[cfg(test)]
3687        #[allow(dead_code, unreachable_patterns)]
3688        fn _type_assertion(
3689            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3690        ) {
3691            match _t {
3692                alloy_sol_types::private::AssertTypeEq::<
3693                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3694                >(_) => {}
3695            }
3696        }
3697        #[automatically_derived]
3698        #[doc(hidden)]
3699        impl ::core::convert::From<OwnableUnauthorizedAccount>
3700        for UnderlyingRustTuple<'_> {
3701            fn from(value: OwnableUnauthorizedAccount) -> Self {
3702                (value.account,)
3703            }
3704        }
3705        #[automatically_derived]
3706        #[doc(hidden)]
3707        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3708        for OwnableUnauthorizedAccount {
3709            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3710                Self { account: tuple.0 }
3711            }
3712        }
3713        #[automatically_derived]
3714        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
3715            type Parameters<'a> = UnderlyingSolTuple<'a>;
3716            type Token<'a> = <Self::Parameters<
3717                'a,
3718            > as alloy_sol_types::SolType>::Token<'a>;
3719            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
3720            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
3721            #[inline]
3722            fn new<'a>(
3723                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3724            ) -> Self {
3725                tuple.into()
3726            }
3727            #[inline]
3728            fn tokenize(&self) -> Self::Token<'_> {
3729                (
3730                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3731                        &self.account,
3732                    ),
3733                )
3734            }
3735            #[inline]
3736            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3737                <Self::Parameters<
3738                    '_,
3739                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3740                    .map(Self::new)
3741            }
3742        }
3743    };
3744    #[derive(serde::Serialize, serde::Deserialize)]
3745    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3746    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
3747```solidity
3748error PowPrecompileFailed();
3749```*/
3750    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3751    #[derive(Clone)]
3752    pub struct PowPrecompileFailed;
3753    #[allow(
3754        non_camel_case_types,
3755        non_snake_case,
3756        clippy::pub_underscore_fields,
3757        clippy::style
3758    )]
3759    const _: () = {
3760        use alloy::sol_types as alloy_sol_types;
3761        #[doc(hidden)]
3762        #[allow(dead_code)]
3763        type UnderlyingSolTuple<'a> = ();
3764        #[doc(hidden)]
3765        type UnderlyingRustTuple<'a> = ();
3766        #[cfg(test)]
3767        #[allow(dead_code, unreachable_patterns)]
3768        fn _type_assertion(
3769            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3770        ) {
3771            match _t {
3772                alloy_sol_types::private::AssertTypeEq::<
3773                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3774                >(_) => {}
3775            }
3776        }
3777        #[automatically_derived]
3778        #[doc(hidden)]
3779        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
3780            fn from(value: PowPrecompileFailed) -> Self {
3781                ()
3782            }
3783        }
3784        #[automatically_derived]
3785        #[doc(hidden)]
3786        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
3787            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3788                Self
3789            }
3790        }
3791        #[automatically_derived]
3792        impl alloy_sol_types::SolError for PowPrecompileFailed {
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 = "PowPrecompileFailed()";
3798            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
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 `PrematureWithdrawal()` and selector `0x5a774357`.
3821```solidity
3822error PrematureWithdrawal();
3823```*/
3824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3825    #[derive(Clone)]
3826    pub struct PrematureWithdrawal;
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<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
3854            fn from(value: PrematureWithdrawal) -> Self {
3855                ()
3856            }
3857        }
3858        #[automatically_derived]
3859        #[doc(hidden)]
3860        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
3861            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3862                Self
3863            }
3864        }
3865        #[automatically_derived]
3866        impl alloy_sol_types::SolError for PrematureWithdrawal {
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 = "PrematureWithdrawal()";
3872            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
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 `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
3895```solidity
3896error UUPSUnauthorizedCallContext();
3897```*/
3898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3899    #[derive(Clone)]
3900    pub struct UUPSUnauthorizedCallContext;
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<UUPSUnauthorizedCallContext>
3928        for UnderlyingRustTuple<'_> {
3929            fn from(value: UUPSUnauthorizedCallContext) -> Self {
3930                ()
3931            }
3932        }
3933        #[automatically_derived]
3934        #[doc(hidden)]
3935        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3936        for UUPSUnauthorizedCallContext {
3937            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3938                Self
3939            }
3940        }
3941        #[automatically_derived]
3942        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
3943            type Parameters<'a> = UnderlyingSolTuple<'a>;
3944            type Token<'a> = <Self::Parameters<
3945                'a,
3946            > as alloy_sol_types::SolType>::Token<'a>;
3947            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
3948            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
3949            #[inline]
3950            fn new<'a>(
3951                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3952            ) -> Self {
3953                tuple.into()
3954            }
3955            #[inline]
3956            fn tokenize(&self) -> Self::Token<'_> {
3957                ()
3958            }
3959            #[inline]
3960            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3961                <Self::Parameters<
3962                    '_,
3963                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3964                    .map(Self::new)
3965            }
3966        }
3967    };
3968    #[derive(serde::Serialize, serde::Deserialize)]
3969    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3970    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
3971```solidity
3972error UUPSUnsupportedProxiableUUID(bytes32 slot);
3973```*/
3974    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3975    #[derive(Clone)]
3976    pub struct UUPSUnsupportedProxiableUUID {
3977        #[allow(missing_docs)]
3978        pub slot: alloy::sol_types::private::FixedBytes<32>,
3979    }
3980    #[allow(
3981        non_camel_case_types,
3982        non_snake_case,
3983        clippy::pub_underscore_fields,
3984        clippy::style
3985    )]
3986    const _: () = {
3987        use alloy::sol_types as alloy_sol_types;
3988        #[doc(hidden)]
3989        #[allow(dead_code)]
3990        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3991        #[doc(hidden)]
3992        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3993        #[cfg(test)]
3994        #[allow(dead_code, unreachable_patterns)]
3995        fn _type_assertion(
3996            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3997        ) {
3998            match _t {
3999                alloy_sol_types::private::AssertTypeEq::<
4000                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4001                >(_) => {}
4002            }
4003        }
4004        #[automatically_derived]
4005        #[doc(hidden)]
4006        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
4007        for UnderlyingRustTuple<'_> {
4008            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
4009                (value.slot,)
4010            }
4011        }
4012        #[automatically_derived]
4013        #[doc(hidden)]
4014        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4015        for UUPSUnsupportedProxiableUUID {
4016            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4017                Self { slot: tuple.0 }
4018            }
4019        }
4020        #[automatically_derived]
4021        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
4022            type Parameters<'a> = UnderlyingSolTuple<'a>;
4023            type Token<'a> = <Self::Parameters<
4024                'a,
4025            > as alloy_sol_types::SolType>::Token<'a>;
4026            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
4027            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
4028            #[inline]
4029            fn new<'a>(
4030                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4031            ) -> Self {
4032                tuple.into()
4033            }
4034            #[inline]
4035            fn tokenize(&self) -> Self::Token<'_> {
4036                (
4037                    <alloy::sol_types::sol_data::FixedBytes<
4038                        32,
4039                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
4040                )
4041            }
4042            #[inline]
4043            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4044                <Self::Parameters<
4045                    '_,
4046                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4047                    .map(Self::new)
4048            }
4049        }
4050    };
4051    #[derive(serde::Serialize, serde::Deserialize)]
4052    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4053    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
4054```solidity
4055error UndelegationAlreadyExists();
4056```*/
4057    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4058    #[derive(Clone)]
4059    pub struct UndelegationAlreadyExists;
4060    #[allow(
4061        non_camel_case_types,
4062        non_snake_case,
4063        clippy::pub_underscore_fields,
4064        clippy::style
4065    )]
4066    const _: () = {
4067        use alloy::sol_types as alloy_sol_types;
4068        #[doc(hidden)]
4069        #[allow(dead_code)]
4070        type UnderlyingSolTuple<'a> = ();
4071        #[doc(hidden)]
4072        type UnderlyingRustTuple<'a> = ();
4073        #[cfg(test)]
4074        #[allow(dead_code, unreachable_patterns)]
4075        fn _type_assertion(
4076            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4077        ) {
4078            match _t {
4079                alloy_sol_types::private::AssertTypeEq::<
4080                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4081                >(_) => {}
4082            }
4083        }
4084        #[automatically_derived]
4085        #[doc(hidden)]
4086        impl ::core::convert::From<UndelegationAlreadyExists>
4087        for UnderlyingRustTuple<'_> {
4088            fn from(value: UndelegationAlreadyExists) -> Self {
4089                ()
4090            }
4091        }
4092        #[automatically_derived]
4093        #[doc(hidden)]
4094        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4095        for UndelegationAlreadyExists {
4096            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4097                Self
4098            }
4099        }
4100        #[automatically_derived]
4101        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
4102            type Parameters<'a> = UnderlyingSolTuple<'a>;
4103            type Token<'a> = <Self::Parameters<
4104                'a,
4105            > as alloy_sol_types::SolType>::Token<'a>;
4106            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
4107            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
4108            #[inline]
4109            fn new<'a>(
4110                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4111            ) -> Self {
4112                tuple.into()
4113            }
4114            #[inline]
4115            fn tokenize(&self) -> Self::Token<'_> {
4116                ()
4117            }
4118            #[inline]
4119            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4120                <Self::Parameters<
4121                    '_,
4122                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4123                    .map(Self::new)
4124            }
4125        }
4126    };
4127    #[derive(serde::Serialize, serde::Deserialize)]
4128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4129    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
4130```solidity
4131error ValidatorAlreadyExited();
4132```*/
4133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4134    #[derive(Clone)]
4135    pub struct ValidatorAlreadyExited;
4136    #[allow(
4137        non_camel_case_types,
4138        non_snake_case,
4139        clippy::pub_underscore_fields,
4140        clippy::style
4141    )]
4142    const _: () = {
4143        use alloy::sol_types as alloy_sol_types;
4144        #[doc(hidden)]
4145        #[allow(dead_code)]
4146        type UnderlyingSolTuple<'a> = ();
4147        #[doc(hidden)]
4148        type UnderlyingRustTuple<'a> = ();
4149        #[cfg(test)]
4150        #[allow(dead_code, unreachable_patterns)]
4151        fn _type_assertion(
4152            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4153        ) {
4154            match _t {
4155                alloy_sol_types::private::AssertTypeEq::<
4156                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4157                >(_) => {}
4158            }
4159        }
4160        #[automatically_derived]
4161        #[doc(hidden)]
4162        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
4163            fn from(value: ValidatorAlreadyExited) -> Self {
4164                ()
4165            }
4166        }
4167        #[automatically_derived]
4168        #[doc(hidden)]
4169        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
4170            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4171                Self
4172            }
4173        }
4174        #[automatically_derived]
4175        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
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 = "ValidatorAlreadyExited()";
4181            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
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 `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
4204```solidity
4205error ValidatorAlreadyRegistered();
4206```*/
4207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4208    #[derive(Clone)]
4209    pub struct ValidatorAlreadyRegistered;
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<ValidatorAlreadyRegistered>
4237        for UnderlyingRustTuple<'_> {
4238            fn from(value: ValidatorAlreadyRegistered) -> Self {
4239                ()
4240            }
4241        }
4242        #[automatically_derived]
4243        #[doc(hidden)]
4244        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4245        for ValidatorAlreadyRegistered {
4246            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4247                Self
4248            }
4249        }
4250        #[automatically_derived]
4251        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
4252            type Parameters<'a> = UnderlyingSolTuple<'a>;
4253            type Token<'a> = <Self::Parameters<
4254                'a,
4255            > as alloy_sol_types::SolType>::Token<'a>;
4256            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
4257            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
4258            #[inline]
4259            fn new<'a>(
4260                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4261            ) -> Self {
4262                tuple.into()
4263            }
4264            #[inline]
4265            fn tokenize(&self) -> Self::Token<'_> {
4266                ()
4267            }
4268            #[inline]
4269            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4270                <Self::Parameters<
4271                    '_,
4272                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4273                    .map(Self::new)
4274            }
4275        }
4276    };
4277    #[derive(serde::Serialize, serde::Deserialize)]
4278    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4279    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
4280```solidity
4281error ValidatorInactive();
4282```*/
4283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4284    #[derive(Clone)]
4285    pub struct ValidatorInactive;
4286    #[allow(
4287        non_camel_case_types,
4288        non_snake_case,
4289        clippy::pub_underscore_fields,
4290        clippy::style
4291    )]
4292    const _: () = {
4293        use alloy::sol_types as alloy_sol_types;
4294        #[doc(hidden)]
4295        #[allow(dead_code)]
4296        type UnderlyingSolTuple<'a> = ();
4297        #[doc(hidden)]
4298        type UnderlyingRustTuple<'a> = ();
4299        #[cfg(test)]
4300        #[allow(dead_code, unreachable_patterns)]
4301        fn _type_assertion(
4302            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4303        ) {
4304            match _t {
4305                alloy_sol_types::private::AssertTypeEq::<
4306                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4307                >(_) => {}
4308            }
4309        }
4310        #[automatically_derived]
4311        #[doc(hidden)]
4312        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
4313            fn from(value: ValidatorInactive) -> Self {
4314                ()
4315            }
4316        }
4317        #[automatically_derived]
4318        #[doc(hidden)]
4319        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
4320            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4321                Self
4322            }
4323        }
4324        #[automatically_derived]
4325        impl alloy_sol_types::SolError for ValidatorInactive {
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 = "ValidatorInactive()";
4331            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
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 `ValidatorNotExited()` and selector `0xf25314a6`.
4354```solidity
4355error ValidatorNotExited();
4356```*/
4357    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4358    #[derive(Clone)]
4359    pub struct ValidatorNotExited;
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<ValidatorNotExited> for UnderlyingRustTuple<'_> {
4387            fn from(value: ValidatorNotExited) -> Self {
4388                ()
4389            }
4390        }
4391        #[automatically_derived]
4392        #[doc(hidden)]
4393        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
4394            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4395                Self
4396            }
4397        }
4398        #[automatically_derived]
4399        impl alloy_sol_types::SolError for ValidatorNotExited {
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 = "ValidatorNotExited()";
4405            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
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 `ZeroAddress()` and selector `0xd92e233d`.
4428```solidity
4429error ZeroAddress();
4430```*/
4431    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4432    #[derive(Clone)]
4433    pub struct ZeroAddress;
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<ZeroAddress> for UnderlyingRustTuple<'_> {
4461            fn from(value: ZeroAddress) -> Self {
4462                ()
4463            }
4464        }
4465        #[automatically_derived]
4466        #[doc(hidden)]
4467        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
4468            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4469                Self
4470            }
4471        }
4472        #[automatically_derived]
4473        impl alloy_sol_types::SolError for ZeroAddress {
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 = "ZeroAddress()";
4479            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
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 `ZeroAmount()` and selector `0x1f2a2005`.
4502```solidity
4503error ZeroAmount();
4504```*/
4505    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4506    #[derive(Clone)]
4507    pub struct ZeroAmount;
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<ZeroAmount> for UnderlyingRustTuple<'_> {
4535            fn from(value: ZeroAmount) -> Self {
4536                ()
4537            }
4538        }
4539        #[automatically_derived]
4540        #[doc(hidden)]
4541        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
4542            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4543                Self
4544            }
4545        }
4546        #[automatically_derived]
4547        impl alloy_sol_types::SolError for ZeroAmount {
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 = "ZeroAmount()";
4553            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
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()]
4575    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
4576```solidity
4577event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
4578```*/
4579    #[allow(
4580        non_camel_case_types,
4581        non_snake_case,
4582        clippy::pub_underscore_fields,
4583        clippy::style
4584    )]
4585    #[derive(Clone)]
4586    pub struct ConsensusKeysUpdated {
4587        #[allow(missing_docs)]
4588        pub account: alloy::sol_types::private::Address,
4589        #[allow(missing_docs)]
4590        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
4591        #[allow(missing_docs)]
4592        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
4593    }
4594    #[allow(
4595        non_camel_case_types,
4596        non_snake_case,
4597        clippy::pub_underscore_fields,
4598        clippy::style
4599    )]
4600    const _: () = {
4601        use alloy::sol_types as alloy_sol_types;
4602        #[automatically_derived]
4603        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
4604            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
4605            type DataToken<'a> = <Self::DataTuple<
4606                'a,
4607            > as alloy_sol_types::SolType>::Token<'a>;
4608            type TopicList = (
4609                alloy_sol_types::sol_data::FixedBytes<32>,
4610                alloy::sol_types::sol_data::Address,
4611            );
4612            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
4613            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4614                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
4615                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
4616                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
4617            ]);
4618            const ANONYMOUS: bool = false;
4619            #[allow(unused_variables)]
4620            #[inline]
4621            fn new(
4622                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4623                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4624            ) -> Self {
4625                Self {
4626                    account: topics.1,
4627                    blsVK: data.0,
4628                    schnorrVK: data.1,
4629                }
4630            }
4631            #[inline]
4632            fn check_signature(
4633                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4634            ) -> alloy_sol_types::Result<()> {
4635                if topics.0 != Self::SIGNATURE_HASH {
4636                    return Err(
4637                        alloy_sol_types::Error::invalid_event_signature_hash(
4638                            Self::SIGNATURE,
4639                            topics.0,
4640                            Self::SIGNATURE_HASH,
4641                        ),
4642                    );
4643                }
4644                Ok(())
4645            }
4646            #[inline]
4647            fn tokenize_body(&self) -> Self::DataToken<'_> {
4648                (
4649                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
4650                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
4651                        &self.schnorrVK,
4652                    ),
4653                )
4654            }
4655            #[inline]
4656            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4657                (Self::SIGNATURE_HASH.into(), self.account.clone())
4658            }
4659            #[inline]
4660            fn encode_topics_raw(
4661                &self,
4662                out: &mut [alloy_sol_types::abi::token::WordToken],
4663            ) -> alloy_sol_types::Result<()> {
4664                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4665                    return Err(alloy_sol_types::Error::Overrun);
4666                }
4667                out[0usize] = alloy_sol_types::abi::token::WordToken(
4668                    Self::SIGNATURE_HASH,
4669                );
4670                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4671                    &self.account,
4672                );
4673                Ok(())
4674            }
4675        }
4676        #[automatically_derived]
4677        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
4678            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4679                From::from(self)
4680            }
4681            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4682                From::from(&self)
4683            }
4684        }
4685        #[automatically_derived]
4686        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
4687            #[inline]
4688            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
4689                alloy_sol_types::SolEvent::encode_log_data(this)
4690            }
4691        }
4692    };
4693    #[derive(serde::Serialize, serde::Deserialize)]
4694    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4695    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
4696```solidity
4697event Delegated(address indexed delegator, address indexed validator, uint256 amount);
4698```*/
4699    #[allow(
4700        non_camel_case_types,
4701        non_snake_case,
4702        clippy::pub_underscore_fields,
4703        clippy::style
4704    )]
4705    #[derive(Clone)]
4706    pub struct Delegated {
4707        #[allow(missing_docs)]
4708        pub delegator: alloy::sol_types::private::Address,
4709        #[allow(missing_docs)]
4710        pub validator: alloy::sol_types::private::Address,
4711        #[allow(missing_docs)]
4712        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4713    }
4714    #[allow(
4715        non_camel_case_types,
4716        non_snake_case,
4717        clippy::pub_underscore_fields,
4718        clippy::style
4719    )]
4720    const _: () = {
4721        use alloy::sol_types as alloy_sol_types;
4722        #[automatically_derived]
4723        impl alloy_sol_types::SolEvent for Delegated {
4724            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4725            type DataToken<'a> = <Self::DataTuple<
4726                'a,
4727            > as alloy_sol_types::SolType>::Token<'a>;
4728            type TopicList = (
4729                alloy_sol_types::sol_data::FixedBytes<32>,
4730                alloy::sol_types::sol_data::Address,
4731                alloy::sol_types::sol_data::Address,
4732            );
4733            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
4734            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4735                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
4736                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
4737                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
4738            ]);
4739            const ANONYMOUS: bool = false;
4740            #[allow(unused_variables)]
4741            #[inline]
4742            fn new(
4743                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4744                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4745            ) -> Self {
4746                Self {
4747                    delegator: topics.1,
4748                    validator: topics.2,
4749                    amount: data.0,
4750                }
4751            }
4752            #[inline]
4753            fn check_signature(
4754                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4755            ) -> alloy_sol_types::Result<()> {
4756                if topics.0 != Self::SIGNATURE_HASH {
4757                    return Err(
4758                        alloy_sol_types::Error::invalid_event_signature_hash(
4759                            Self::SIGNATURE,
4760                            topics.0,
4761                            Self::SIGNATURE_HASH,
4762                        ),
4763                    );
4764                }
4765                Ok(())
4766            }
4767            #[inline]
4768            fn tokenize_body(&self) -> Self::DataToken<'_> {
4769                (
4770                    <alloy::sol_types::sol_data::Uint<
4771                        256,
4772                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4773                )
4774            }
4775            #[inline]
4776            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4777                (
4778                    Self::SIGNATURE_HASH.into(),
4779                    self.delegator.clone(),
4780                    self.validator.clone(),
4781                )
4782            }
4783            #[inline]
4784            fn encode_topics_raw(
4785                &self,
4786                out: &mut [alloy_sol_types::abi::token::WordToken],
4787            ) -> alloy_sol_types::Result<()> {
4788                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4789                    return Err(alloy_sol_types::Error::Overrun);
4790                }
4791                out[0usize] = alloy_sol_types::abi::token::WordToken(
4792                    Self::SIGNATURE_HASH,
4793                );
4794                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4795                    &self.delegator,
4796                );
4797                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4798                    &self.validator,
4799                );
4800                Ok(())
4801            }
4802        }
4803        #[automatically_derived]
4804        impl alloy_sol_types::private::IntoLogData for Delegated {
4805            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4806                From::from(self)
4807            }
4808            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4809                From::from(&self)
4810            }
4811        }
4812        #[automatically_derived]
4813        impl From<&Delegated> for alloy_sol_types::private::LogData {
4814            #[inline]
4815            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
4816                alloy_sol_types::SolEvent::encode_log_data(this)
4817            }
4818        }
4819    };
4820    #[derive(serde::Serialize, serde::Deserialize)]
4821    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4822    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
4823```solidity
4824event Initialized(uint64 version);
4825```*/
4826    #[allow(
4827        non_camel_case_types,
4828        non_snake_case,
4829        clippy::pub_underscore_fields,
4830        clippy::style
4831    )]
4832    #[derive(Clone)]
4833    pub struct Initialized {
4834        #[allow(missing_docs)]
4835        pub version: u64,
4836    }
4837    #[allow(
4838        non_camel_case_types,
4839        non_snake_case,
4840        clippy::pub_underscore_fields,
4841        clippy::style
4842    )]
4843    const _: () = {
4844        use alloy::sol_types as alloy_sol_types;
4845        #[automatically_derived]
4846        impl alloy_sol_types::SolEvent for Initialized {
4847            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
4848            type DataToken<'a> = <Self::DataTuple<
4849                'a,
4850            > as alloy_sol_types::SolType>::Token<'a>;
4851            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
4852            const SIGNATURE: &'static str = "Initialized(uint64)";
4853            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4854                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
4855                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
4856                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
4857            ]);
4858            const ANONYMOUS: bool = false;
4859            #[allow(unused_variables)]
4860            #[inline]
4861            fn new(
4862                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4863                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4864            ) -> Self {
4865                Self { version: data.0 }
4866            }
4867            #[inline]
4868            fn check_signature(
4869                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4870            ) -> alloy_sol_types::Result<()> {
4871                if topics.0 != Self::SIGNATURE_HASH {
4872                    return Err(
4873                        alloy_sol_types::Error::invalid_event_signature_hash(
4874                            Self::SIGNATURE,
4875                            topics.0,
4876                            Self::SIGNATURE_HASH,
4877                        ),
4878                    );
4879                }
4880                Ok(())
4881            }
4882            #[inline]
4883            fn tokenize_body(&self) -> Self::DataToken<'_> {
4884                (
4885                    <alloy::sol_types::sol_data::Uint<
4886                        64,
4887                    > as alloy_sol_types::SolType>::tokenize(&self.version),
4888                )
4889            }
4890            #[inline]
4891            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4892                (Self::SIGNATURE_HASH.into(),)
4893            }
4894            #[inline]
4895            fn encode_topics_raw(
4896                &self,
4897                out: &mut [alloy_sol_types::abi::token::WordToken],
4898            ) -> alloy_sol_types::Result<()> {
4899                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4900                    return Err(alloy_sol_types::Error::Overrun);
4901                }
4902                out[0usize] = alloy_sol_types::abi::token::WordToken(
4903                    Self::SIGNATURE_HASH,
4904                );
4905                Ok(())
4906            }
4907        }
4908        #[automatically_derived]
4909        impl alloy_sol_types::private::IntoLogData for Initialized {
4910            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4911                From::from(self)
4912            }
4913            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4914                From::from(&self)
4915            }
4916        }
4917        #[automatically_derived]
4918        impl From<&Initialized> for alloy_sol_types::private::LogData {
4919            #[inline]
4920            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
4921                alloy_sol_types::SolEvent::encode_log_data(this)
4922            }
4923        }
4924    };
4925    #[derive(serde::Serialize, serde::Deserialize)]
4926    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4927    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
4928```solidity
4929event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
4930```*/
4931    #[allow(
4932        non_camel_case_types,
4933        non_snake_case,
4934        clippy::pub_underscore_fields,
4935        clippy::style
4936    )]
4937    #[derive(Clone)]
4938    pub struct OwnershipTransferred {
4939        #[allow(missing_docs)]
4940        pub previousOwner: alloy::sol_types::private::Address,
4941        #[allow(missing_docs)]
4942        pub newOwner: alloy::sol_types::private::Address,
4943    }
4944    #[allow(
4945        non_camel_case_types,
4946        non_snake_case,
4947        clippy::pub_underscore_fields,
4948        clippy::style
4949    )]
4950    const _: () = {
4951        use alloy::sol_types as alloy_sol_types;
4952        #[automatically_derived]
4953        impl alloy_sol_types::SolEvent for OwnershipTransferred {
4954            type DataTuple<'a> = ();
4955            type DataToken<'a> = <Self::DataTuple<
4956                'a,
4957            > as alloy_sol_types::SolType>::Token<'a>;
4958            type TopicList = (
4959                alloy_sol_types::sol_data::FixedBytes<32>,
4960                alloy::sol_types::sol_data::Address,
4961                alloy::sol_types::sol_data::Address,
4962            );
4963            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
4964            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4965                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
4966                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
4967                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
4968            ]);
4969            const ANONYMOUS: bool = false;
4970            #[allow(unused_variables)]
4971            #[inline]
4972            fn new(
4973                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4974                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4975            ) -> Self {
4976                Self {
4977                    previousOwner: topics.1,
4978                    newOwner: topics.2,
4979                }
4980            }
4981            #[inline]
4982            fn check_signature(
4983                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4984            ) -> alloy_sol_types::Result<()> {
4985                if topics.0 != Self::SIGNATURE_HASH {
4986                    return Err(
4987                        alloy_sol_types::Error::invalid_event_signature_hash(
4988                            Self::SIGNATURE,
4989                            topics.0,
4990                            Self::SIGNATURE_HASH,
4991                        ),
4992                    );
4993                }
4994                Ok(())
4995            }
4996            #[inline]
4997            fn tokenize_body(&self) -> Self::DataToken<'_> {
4998                ()
4999            }
5000            #[inline]
5001            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5002                (
5003                    Self::SIGNATURE_HASH.into(),
5004                    self.previousOwner.clone(),
5005                    self.newOwner.clone(),
5006                )
5007            }
5008            #[inline]
5009            fn encode_topics_raw(
5010                &self,
5011                out: &mut [alloy_sol_types::abi::token::WordToken],
5012            ) -> alloy_sol_types::Result<()> {
5013                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5014                    return Err(alloy_sol_types::Error::Overrun);
5015                }
5016                out[0usize] = alloy_sol_types::abi::token::WordToken(
5017                    Self::SIGNATURE_HASH,
5018                );
5019                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5020                    &self.previousOwner,
5021                );
5022                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5023                    &self.newOwner,
5024                );
5025                Ok(())
5026            }
5027        }
5028        #[automatically_derived]
5029        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5030            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5031                From::from(self)
5032            }
5033            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5034                From::from(&self)
5035            }
5036        }
5037        #[automatically_derived]
5038        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5039            #[inline]
5040            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5041                alloy_sol_types::SolEvent::encode_log_data(this)
5042            }
5043        }
5044    };
5045    #[derive(serde::Serialize, serde::Deserialize)]
5046    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5047    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
5048```solidity
5049event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
5050```*/
5051    #[allow(
5052        non_camel_case_types,
5053        non_snake_case,
5054        clippy::pub_underscore_fields,
5055        clippy::style
5056    )]
5057    #[derive(Clone)]
5058    pub struct Undelegated {
5059        #[allow(missing_docs)]
5060        pub delegator: alloy::sol_types::private::Address,
5061        #[allow(missing_docs)]
5062        pub validator: alloy::sol_types::private::Address,
5063        #[allow(missing_docs)]
5064        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5065    }
5066    #[allow(
5067        non_camel_case_types,
5068        non_snake_case,
5069        clippy::pub_underscore_fields,
5070        clippy::style
5071    )]
5072    const _: () = {
5073        use alloy::sol_types as alloy_sol_types;
5074        #[automatically_derived]
5075        impl alloy_sol_types::SolEvent for Undelegated {
5076            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5077            type DataToken<'a> = <Self::DataTuple<
5078                'a,
5079            > as alloy_sol_types::SolType>::Token<'a>;
5080            type TopicList = (
5081                alloy_sol_types::sol_data::FixedBytes<32>,
5082                alloy::sol_types::sol_data::Address,
5083                alloy::sol_types::sol_data::Address,
5084            );
5085            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
5086            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5087                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
5088                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
5089                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
5090            ]);
5091            const ANONYMOUS: bool = false;
5092            #[allow(unused_variables)]
5093            #[inline]
5094            fn new(
5095                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5096                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5097            ) -> Self {
5098                Self {
5099                    delegator: topics.1,
5100                    validator: topics.2,
5101                    amount: data.0,
5102                }
5103            }
5104            #[inline]
5105            fn check_signature(
5106                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5107            ) -> alloy_sol_types::Result<()> {
5108                if topics.0 != Self::SIGNATURE_HASH {
5109                    return Err(
5110                        alloy_sol_types::Error::invalid_event_signature_hash(
5111                            Self::SIGNATURE,
5112                            topics.0,
5113                            Self::SIGNATURE_HASH,
5114                        ),
5115                    );
5116                }
5117                Ok(())
5118            }
5119            #[inline]
5120            fn tokenize_body(&self) -> Self::DataToken<'_> {
5121                (
5122                    <alloy::sol_types::sol_data::Uint<
5123                        256,
5124                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5125                )
5126            }
5127            #[inline]
5128            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5129                (
5130                    Self::SIGNATURE_HASH.into(),
5131                    self.delegator.clone(),
5132                    self.validator.clone(),
5133                )
5134            }
5135            #[inline]
5136            fn encode_topics_raw(
5137                &self,
5138                out: &mut [alloy_sol_types::abi::token::WordToken],
5139            ) -> alloy_sol_types::Result<()> {
5140                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5141                    return Err(alloy_sol_types::Error::Overrun);
5142                }
5143                out[0usize] = alloy_sol_types::abi::token::WordToken(
5144                    Self::SIGNATURE_HASH,
5145                );
5146                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5147                    &self.delegator,
5148                );
5149                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5150                    &self.validator,
5151                );
5152                Ok(())
5153            }
5154        }
5155        #[automatically_derived]
5156        impl alloy_sol_types::private::IntoLogData for Undelegated {
5157            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5158                From::from(self)
5159            }
5160            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5161                From::from(&self)
5162            }
5163        }
5164        #[automatically_derived]
5165        impl From<&Undelegated> for alloy_sol_types::private::LogData {
5166            #[inline]
5167            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
5168                alloy_sol_types::SolEvent::encode_log_data(this)
5169            }
5170        }
5171    };
5172    #[derive(serde::Serialize, serde::Deserialize)]
5173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5174    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
5175```solidity
5176event Upgraded(address indexed implementation);
5177```*/
5178    #[allow(
5179        non_camel_case_types,
5180        non_snake_case,
5181        clippy::pub_underscore_fields,
5182        clippy::style
5183    )]
5184    #[derive(Clone)]
5185    pub struct Upgraded {
5186        #[allow(missing_docs)]
5187        pub implementation: alloy::sol_types::private::Address,
5188    }
5189    #[allow(
5190        non_camel_case_types,
5191        non_snake_case,
5192        clippy::pub_underscore_fields,
5193        clippy::style
5194    )]
5195    const _: () = {
5196        use alloy::sol_types as alloy_sol_types;
5197        #[automatically_derived]
5198        impl alloy_sol_types::SolEvent for Upgraded {
5199            type DataTuple<'a> = ();
5200            type DataToken<'a> = <Self::DataTuple<
5201                'a,
5202            > as alloy_sol_types::SolType>::Token<'a>;
5203            type TopicList = (
5204                alloy_sol_types::sol_data::FixedBytes<32>,
5205                alloy::sol_types::sol_data::Address,
5206            );
5207            const SIGNATURE: &'static str = "Upgraded(address)";
5208            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5209                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
5210                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
5211                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
5212            ]);
5213            const ANONYMOUS: bool = false;
5214            #[allow(unused_variables)]
5215            #[inline]
5216            fn new(
5217                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5218                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5219            ) -> Self {
5220                Self { implementation: topics.1 }
5221            }
5222            #[inline]
5223            fn check_signature(
5224                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5225            ) -> alloy_sol_types::Result<()> {
5226                if topics.0 != Self::SIGNATURE_HASH {
5227                    return Err(
5228                        alloy_sol_types::Error::invalid_event_signature_hash(
5229                            Self::SIGNATURE,
5230                            topics.0,
5231                            Self::SIGNATURE_HASH,
5232                        ),
5233                    );
5234                }
5235                Ok(())
5236            }
5237            #[inline]
5238            fn tokenize_body(&self) -> Self::DataToken<'_> {
5239                ()
5240            }
5241            #[inline]
5242            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5243                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
5244            }
5245            #[inline]
5246            fn encode_topics_raw(
5247                &self,
5248                out: &mut [alloy_sol_types::abi::token::WordToken],
5249            ) -> alloy_sol_types::Result<()> {
5250                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5251                    return Err(alloy_sol_types::Error::Overrun);
5252                }
5253                out[0usize] = alloy_sol_types::abi::token::WordToken(
5254                    Self::SIGNATURE_HASH,
5255                );
5256                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5257                    &self.implementation,
5258                );
5259                Ok(())
5260            }
5261        }
5262        #[automatically_derived]
5263        impl alloy_sol_types::private::IntoLogData for Upgraded {
5264            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5265                From::from(self)
5266            }
5267            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5268                From::from(&self)
5269            }
5270        }
5271        #[automatically_derived]
5272        impl From<&Upgraded> for alloy_sol_types::private::LogData {
5273            #[inline]
5274            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
5275                alloy_sol_types::SolEvent::encode_log_data(this)
5276            }
5277        }
5278    };
5279    #[derive(serde::Serialize, serde::Deserialize)]
5280    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5281    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
5282```solidity
5283event ValidatorExit(address indexed validator);
5284```*/
5285    #[allow(
5286        non_camel_case_types,
5287        non_snake_case,
5288        clippy::pub_underscore_fields,
5289        clippy::style
5290    )]
5291    #[derive(Clone)]
5292    pub struct ValidatorExit {
5293        #[allow(missing_docs)]
5294        pub validator: alloy::sol_types::private::Address,
5295    }
5296    #[allow(
5297        non_camel_case_types,
5298        non_snake_case,
5299        clippy::pub_underscore_fields,
5300        clippy::style
5301    )]
5302    const _: () = {
5303        use alloy::sol_types as alloy_sol_types;
5304        #[automatically_derived]
5305        impl alloy_sol_types::SolEvent for ValidatorExit {
5306            type DataTuple<'a> = ();
5307            type DataToken<'a> = <Self::DataTuple<
5308                'a,
5309            > as alloy_sol_types::SolType>::Token<'a>;
5310            type TopicList = (
5311                alloy_sol_types::sol_data::FixedBytes<32>,
5312                alloy::sol_types::sol_data::Address,
5313            );
5314            const SIGNATURE: &'static str = "ValidatorExit(address)";
5315            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5316                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
5317                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
5318                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
5319            ]);
5320            const ANONYMOUS: bool = false;
5321            #[allow(unused_variables)]
5322            #[inline]
5323            fn new(
5324                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5325                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5326            ) -> Self {
5327                Self { validator: topics.1 }
5328            }
5329            #[inline]
5330            fn check_signature(
5331                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5332            ) -> alloy_sol_types::Result<()> {
5333                if topics.0 != Self::SIGNATURE_HASH {
5334                    return Err(
5335                        alloy_sol_types::Error::invalid_event_signature_hash(
5336                            Self::SIGNATURE,
5337                            topics.0,
5338                            Self::SIGNATURE_HASH,
5339                        ),
5340                    );
5341                }
5342                Ok(())
5343            }
5344            #[inline]
5345            fn tokenize_body(&self) -> Self::DataToken<'_> {
5346                ()
5347            }
5348            #[inline]
5349            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5350                (Self::SIGNATURE_HASH.into(), self.validator.clone())
5351            }
5352            #[inline]
5353            fn encode_topics_raw(
5354                &self,
5355                out: &mut [alloy_sol_types::abi::token::WordToken],
5356            ) -> alloy_sol_types::Result<()> {
5357                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5358                    return Err(alloy_sol_types::Error::Overrun);
5359                }
5360                out[0usize] = alloy_sol_types::abi::token::WordToken(
5361                    Self::SIGNATURE_HASH,
5362                );
5363                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5364                    &self.validator,
5365                );
5366                Ok(())
5367            }
5368        }
5369        #[automatically_derived]
5370        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
5371            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5372                From::from(self)
5373            }
5374            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5375                From::from(&self)
5376            }
5377        }
5378        #[automatically_derived]
5379        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
5380            #[inline]
5381            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
5382                alloy_sol_types::SolEvent::encode_log_data(this)
5383            }
5384        }
5385    };
5386    #[derive(serde::Serialize, serde::Deserialize)]
5387    #[derive()]
5388    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
5389```solidity
5390event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
5391```*/
5392    #[allow(
5393        non_camel_case_types,
5394        non_snake_case,
5395        clippy::pub_underscore_fields,
5396        clippy::style
5397    )]
5398    #[derive(Clone)]
5399    pub struct ValidatorRegistered {
5400        #[allow(missing_docs)]
5401        pub account: alloy::sol_types::private::Address,
5402        #[allow(missing_docs)]
5403        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5404        #[allow(missing_docs)]
5405        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
5406        #[allow(missing_docs)]
5407        pub commission: u16,
5408    }
5409    #[allow(
5410        non_camel_case_types,
5411        non_snake_case,
5412        clippy::pub_underscore_fields,
5413        clippy::style
5414    )]
5415    const _: () = {
5416        use alloy::sol_types as alloy_sol_types;
5417        #[automatically_derived]
5418        impl alloy_sol_types::SolEvent for ValidatorRegistered {
5419            type DataTuple<'a> = (
5420                BN254::G2Point,
5421                EdOnBN254::EdOnBN254Point,
5422                alloy::sol_types::sol_data::Uint<16>,
5423            );
5424            type DataToken<'a> = <Self::DataTuple<
5425                'a,
5426            > as alloy_sol_types::SolType>::Token<'a>;
5427            type TopicList = (
5428                alloy_sol_types::sol_data::FixedBytes<32>,
5429                alloy::sol_types::sol_data::Address,
5430            );
5431            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
5432            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5433                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
5434                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
5435                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
5436            ]);
5437            const ANONYMOUS: bool = false;
5438            #[allow(unused_variables)]
5439            #[inline]
5440            fn new(
5441                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5442                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5443            ) -> Self {
5444                Self {
5445                    account: topics.1,
5446                    blsVk: data.0,
5447                    schnorrVk: data.1,
5448                    commission: data.2,
5449                }
5450            }
5451            #[inline]
5452            fn check_signature(
5453                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5454            ) -> alloy_sol_types::Result<()> {
5455                if topics.0 != Self::SIGNATURE_HASH {
5456                    return Err(
5457                        alloy_sol_types::Error::invalid_event_signature_hash(
5458                            Self::SIGNATURE,
5459                            topics.0,
5460                            Self::SIGNATURE_HASH,
5461                        ),
5462                    );
5463                }
5464                Ok(())
5465            }
5466            #[inline]
5467            fn tokenize_body(&self) -> Self::DataToken<'_> {
5468                (
5469                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
5470                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
5471                        &self.schnorrVk,
5472                    ),
5473                    <alloy::sol_types::sol_data::Uint<
5474                        16,
5475                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
5476                )
5477            }
5478            #[inline]
5479            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5480                (Self::SIGNATURE_HASH.into(), self.account.clone())
5481            }
5482            #[inline]
5483            fn encode_topics_raw(
5484                &self,
5485                out: &mut [alloy_sol_types::abi::token::WordToken],
5486            ) -> alloy_sol_types::Result<()> {
5487                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5488                    return Err(alloy_sol_types::Error::Overrun);
5489                }
5490                out[0usize] = alloy_sol_types::abi::token::WordToken(
5491                    Self::SIGNATURE_HASH,
5492                );
5493                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5494                    &self.account,
5495                );
5496                Ok(())
5497            }
5498        }
5499        #[automatically_derived]
5500        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
5501            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5502                From::from(self)
5503            }
5504            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5505                From::from(&self)
5506            }
5507        }
5508        #[automatically_derived]
5509        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
5510            #[inline]
5511            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
5512                alloy_sol_types::SolEvent::encode_log_data(this)
5513            }
5514        }
5515    };
5516    #[derive(serde::Serialize, serde::Deserialize)]
5517    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5518    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
5519```solidity
5520event Withdrawal(address indexed account, uint256 amount);
5521```*/
5522    #[allow(
5523        non_camel_case_types,
5524        non_snake_case,
5525        clippy::pub_underscore_fields,
5526        clippy::style
5527    )]
5528    #[derive(Clone)]
5529    pub struct Withdrawal {
5530        #[allow(missing_docs)]
5531        pub account: alloy::sol_types::private::Address,
5532        #[allow(missing_docs)]
5533        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5534    }
5535    #[allow(
5536        non_camel_case_types,
5537        non_snake_case,
5538        clippy::pub_underscore_fields,
5539        clippy::style
5540    )]
5541    const _: () = {
5542        use alloy::sol_types as alloy_sol_types;
5543        #[automatically_derived]
5544        impl alloy_sol_types::SolEvent for Withdrawal {
5545            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5546            type DataToken<'a> = <Self::DataTuple<
5547                'a,
5548            > as alloy_sol_types::SolType>::Token<'a>;
5549            type TopicList = (
5550                alloy_sol_types::sol_data::FixedBytes<32>,
5551                alloy::sol_types::sol_data::Address,
5552            );
5553            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
5554            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5555                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
5556                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
5557                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
5558            ]);
5559            const ANONYMOUS: bool = false;
5560            #[allow(unused_variables)]
5561            #[inline]
5562            fn new(
5563                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5564                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5565            ) -> Self {
5566                Self {
5567                    account: topics.1,
5568                    amount: data.0,
5569                }
5570            }
5571            #[inline]
5572            fn check_signature(
5573                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5574            ) -> alloy_sol_types::Result<()> {
5575                if topics.0 != Self::SIGNATURE_HASH {
5576                    return Err(
5577                        alloy_sol_types::Error::invalid_event_signature_hash(
5578                            Self::SIGNATURE,
5579                            topics.0,
5580                            Self::SIGNATURE_HASH,
5581                        ),
5582                    );
5583                }
5584                Ok(())
5585            }
5586            #[inline]
5587            fn tokenize_body(&self) -> Self::DataToken<'_> {
5588                (
5589                    <alloy::sol_types::sol_data::Uint<
5590                        256,
5591                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5592                )
5593            }
5594            #[inline]
5595            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5596                (Self::SIGNATURE_HASH.into(), self.account.clone())
5597            }
5598            #[inline]
5599            fn encode_topics_raw(
5600                &self,
5601                out: &mut [alloy_sol_types::abi::token::WordToken],
5602            ) -> alloy_sol_types::Result<()> {
5603                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5604                    return Err(alloy_sol_types::Error::Overrun);
5605                }
5606                out[0usize] = alloy_sol_types::abi::token::WordToken(
5607                    Self::SIGNATURE_HASH,
5608                );
5609                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5610                    &self.account,
5611                );
5612                Ok(())
5613            }
5614        }
5615        #[automatically_derived]
5616        impl alloy_sol_types::private::IntoLogData for Withdrawal {
5617            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5618                From::from(self)
5619            }
5620            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5621                From::from(&self)
5622            }
5623        }
5624        #[automatically_derived]
5625        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
5626            #[inline]
5627            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
5628                alloy_sol_types::SolEvent::encode_log_data(this)
5629            }
5630        }
5631    };
5632    /**Constructor`.
5633```solidity
5634constructor();
5635```*/
5636    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5637    #[derive(Clone)]
5638    pub struct constructorCall {}
5639    const _: () = {
5640        use alloy::sol_types as alloy_sol_types;
5641        {
5642            #[doc(hidden)]
5643            #[allow(dead_code)]
5644            type UnderlyingSolTuple<'a> = ();
5645            #[doc(hidden)]
5646            type UnderlyingRustTuple<'a> = ();
5647            #[cfg(test)]
5648            #[allow(dead_code, unreachable_patterns)]
5649            fn _type_assertion(
5650                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5651            ) {
5652                match _t {
5653                    alloy_sol_types::private::AssertTypeEq::<
5654                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5655                    >(_) => {}
5656                }
5657            }
5658            #[automatically_derived]
5659            #[doc(hidden)]
5660            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
5661                fn from(value: constructorCall) -> Self {
5662                    ()
5663                }
5664            }
5665            #[automatically_derived]
5666            #[doc(hidden)]
5667            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
5668                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5669                    Self {}
5670                }
5671            }
5672        }
5673        #[automatically_derived]
5674        impl alloy_sol_types::SolConstructor for constructorCall {
5675            type Parameters<'a> = ();
5676            type Token<'a> = <Self::Parameters<
5677                'a,
5678            > as alloy_sol_types::SolType>::Token<'a>;
5679            #[inline]
5680            fn new<'a>(
5681                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5682            ) -> Self {
5683                tuple.into()
5684            }
5685            #[inline]
5686            fn tokenize(&self) -> Self::Token<'_> {
5687                ()
5688            }
5689        }
5690    };
5691    #[derive(serde::Serialize, serde::Deserialize)]
5692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5693    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
5694```solidity
5695function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
5696```*/
5697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5698    #[derive(Clone)]
5699    pub struct UPGRADE_INTERFACE_VERSIONCall;
5700    #[derive(serde::Serialize, serde::Deserialize)]
5701    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5702    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
5703    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5704    #[derive(Clone)]
5705    pub struct UPGRADE_INTERFACE_VERSIONReturn {
5706        #[allow(missing_docs)]
5707        pub _0: alloy::sol_types::private::String,
5708    }
5709    #[allow(
5710        non_camel_case_types,
5711        non_snake_case,
5712        clippy::pub_underscore_fields,
5713        clippy::style
5714    )]
5715    const _: () = {
5716        use alloy::sol_types as alloy_sol_types;
5717        {
5718            #[doc(hidden)]
5719            #[allow(dead_code)]
5720            type UnderlyingSolTuple<'a> = ();
5721            #[doc(hidden)]
5722            type UnderlyingRustTuple<'a> = ();
5723            #[cfg(test)]
5724            #[allow(dead_code, unreachable_patterns)]
5725            fn _type_assertion(
5726                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5727            ) {
5728                match _t {
5729                    alloy_sol_types::private::AssertTypeEq::<
5730                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5731                    >(_) => {}
5732                }
5733            }
5734            #[automatically_derived]
5735            #[doc(hidden)]
5736            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
5737            for UnderlyingRustTuple<'_> {
5738                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
5739                    ()
5740                }
5741            }
5742            #[automatically_derived]
5743            #[doc(hidden)]
5744            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5745            for UPGRADE_INTERFACE_VERSIONCall {
5746                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5747                    Self
5748                }
5749            }
5750        }
5751        {
5752            #[doc(hidden)]
5753            #[allow(dead_code)]
5754            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
5755            #[doc(hidden)]
5756            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
5757            #[cfg(test)]
5758            #[allow(dead_code, unreachable_patterns)]
5759            fn _type_assertion(
5760                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5761            ) {
5762                match _t {
5763                    alloy_sol_types::private::AssertTypeEq::<
5764                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5765                    >(_) => {}
5766                }
5767            }
5768            #[automatically_derived]
5769            #[doc(hidden)]
5770            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
5771            for UnderlyingRustTuple<'_> {
5772                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
5773                    (value._0,)
5774                }
5775            }
5776            #[automatically_derived]
5777            #[doc(hidden)]
5778            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5779            for UPGRADE_INTERFACE_VERSIONReturn {
5780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5781                    Self { _0: tuple.0 }
5782                }
5783            }
5784        }
5785        #[automatically_derived]
5786        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
5787            type Parameters<'a> = ();
5788            type Token<'a> = <Self::Parameters<
5789                'a,
5790            > as alloy_sol_types::SolType>::Token<'a>;
5791            type Return = alloy::sol_types::private::String;
5792            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
5793            type ReturnToken<'a> = <Self::ReturnTuple<
5794                'a,
5795            > as alloy_sol_types::SolType>::Token<'a>;
5796            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
5797            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
5798            #[inline]
5799            fn new<'a>(
5800                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5801            ) -> Self {
5802                tuple.into()
5803            }
5804            #[inline]
5805            fn tokenize(&self) -> Self::Token<'_> {
5806                ()
5807            }
5808            #[inline]
5809            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5810                (
5811                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
5812                        ret,
5813                    ),
5814                )
5815            }
5816            #[inline]
5817            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5818                <Self::ReturnTuple<
5819                    '_,
5820                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5821                    .map(|r| {
5822                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
5823                        r._0
5824                    })
5825            }
5826            #[inline]
5827            fn abi_decode_returns_validate(
5828                data: &[u8],
5829            ) -> alloy_sol_types::Result<Self::Return> {
5830                <Self::ReturnTuple<
5831                    '_,
5832                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5833                    .map(|r| {
5834                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
5835                        r._0
5836                    })
5837            }
5838        }
5839    };
5840    #[derive(serde::Serialize, serde::Deserialize)]
5841    #[derive()]
5842    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
5843```solidity
5844function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
5845```*/
5846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5847    #[derive(Clone)]
5848    pub struct _hashBlsKeyCall {
5849        #[allow(missing_docs)]
5850        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5851    }
5852    #[derive(serde::Serialize, serde::Deserialize)]
5853    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5854    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
5855    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5856    #[derive(Clone)]
5857    pub struct _hashBlsKeyReturn {
5858        #[allow(missing_docs)]
5859        pub _0: alloy::sol_types::private::FixedBytes<32>,
5860    }
5861    #[allow(
5862        non_camel_case_types,
5863        non_snake_case,
5864        clippy::pub_underscore_fields,
5865        clippy::style
5866    )]
5867    const _: () = {
5868        use alloy::sol_types as alloy_sol_types;
5869        {
5870            #[doc(hidden)]
5871            #[allow(dead_code)]
5872            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
5873            #[doc(hidden)]
5874            type UnderlyingRustTuple<'a> = (
5875                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
5876            );
5877            #[cfg(test)]
5878            #[allow(dead_code, unreachable_patterns)]
5879            fn _type_assertion(
5880                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5881            ) {
5882                match _t {
5883                    alloy_sol_types::private::AssertTypeEq::<
5884                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5885                    >(_) => {}
5886                }
5887            }
5888            #[automatically_derived]
5889            #[doc(hidden)]
5890            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
5891                fn from(value: _hashBlsKeyCall) -> Self {
5892                    (value.blsVK,)
5893                }
5894            }
5895            #[automatically_derived]
5896            #[doc(hidden)]
5897            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
5898                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5899                    Self { blsVK: tuple.0 }
5900                }
5901            }
5902        }
5903        {
5904            #[doc(hidden)]
5905            #[allow(dead_code)]
5906            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5907            #[doc(hidden)]
5908            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5909            #[cfg(test)]
5910            #[allow(dead_code, unreachable_patterns)]
5911            fn _type_assertion(
5912                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5913            ) {
5914                match _t {
5915                    alloy_sol_types::private::AssertTypeEq::<
5916                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5917                    >(_) => {}
5918                }
5919            }
5920            #[automatically_derived]
5921            #[doc(hidden)]
5922            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
5923                fn from(value: _hashBlsKeyReturn) -> Self {
5924                    (value._0,)
5925                }
5926            }
5927            #[automatically_derived]
5928            #[doc(hidden)]
5929            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
5930                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5931                    Self { _0: tuple.0 }
5932                }
5933            }
5934        }
5935        #[automatically_derived]
5936        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
5937            type Parameters<'a> = (BN254::G2Point,);
5938            type Token<'a> = <Self::Parameters<
5939                'a,
5940            > as alloy_sol_types::SolType>::Token<'a>;
5941            type Return = alloy::sol_types::private::FixedBytes<32>;
5942            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5943            type ReturnToken<'a> = <Self::ReturnTuple<
5944                'a,
5945            > as alloy_sol_types::SolType>::Token<'a>;
5946            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
5947            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
5948            #[inline]
5949            fn new<'a>(
5950                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5951            ) -> Self {
5952                tuple.into()
5953            }
5954            #[inline]
5955            fn tokenize(&self) -> Self::Token<'_> {
5956                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
5957            }
5958            #[inline]
5959            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5960                (
5961                    <alloy::sol_types::sol_data::FixedBytes<
5962                        32,
5963                    > as alloy_sol_types::SolType>::tokenize(ret),
5964                )
5965            }
5966            #[inline]
5967            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5968                <Self::ReturnTuple<
5969                    '_,
5970                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5971                    .map(|r| {
5972                        let r: _hashBlsKeyReturn = r.into();
5973                        r._0
5974                    })
5975            }
5976            #[inline]
5977            fn abi_decode_returns_validate(
5978                data: &[u8],
5979            ) -> alloy_sol_types::Result<Self::Return> {
5980                <Self::ReturnTuple<
5981                    '_,
5982                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5983                    .map(|r| {
5984                        let r: _hashBlsKeyReturn = r.into();
5985                        r._0
5986                    })
5987            }
5988        }
5989    };
5990    #[derive(serde::Serialize, serde::Deserialize)]
5991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5992    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
5993```solidity
5994function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
5995```*/
5996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5997    #[derive(Clone)]
5998    pub struct blsKeysCall {
5999        #[allow(missing_docs)]
6000        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
6001    }
6002    #[derive(serde::Serialize, serde::Deserialize)]
6003    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6004    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
6005    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6006    #[derive(Clone)]
6007    pub struct blsKeysReturn {
6008        #[allow(missing_docs)]
6009        pub used: bool,
6010    }
6011    #[allow(
6012        non_camel_case_types,
6013        non_snake_case,
6014        clippy::pub_underscore_fields,
6015        clippy::style
6016    )]
6017    const _: () = {
6018        use alloy::sol_types as alloy_sol_types;
6019        {
6020            #[doc(hidden)]
6021            #[allow(dead_code)]
6022            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6023            #[doc(hidden)]
6024            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6025            #[cfg(test)]
6026            #[allow(dead_code, unreachable_patterns)]
6027            fn _type_assertion(
6028                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6029            ) {
6030                match _t {
6031                    alloy_sol_types::private::AssertTypeEq::<
6032                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6033                    >(_) => {}
6034                }
6035            }
6036            #[automatically_derived]
6037            #[doc(hidden)]
6038            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
6039                fn from(value: blsKeysCall) -> Self {
6040                    (value.blsKeyHash,)
6041                }
6042            }
6043            #[automatically_derived]
6044            #[doc(hidden)]
6045            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
6046                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6047                    Self { blsKeyHash: tuple.0 }
6048                }
6049            }
6050        }
6051        {
6052            #[doc(hidden)]
6053            #[allow(dead_code)]
6054            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6055            #[doc(hidden)]
6056            type UnderlyingRustTuple<'a> = (bool,);
6057            #[cfg(test)]
6058            #[allow(dead_code, unreachable_patterns)]
6059            fn _type_assertion(
6060                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6061            ) {
6062                match _t {
6063                    alloy_sol_types::private::AssertTypeEq::<
6064                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6065                    >(_) => {}
6066                }
6067            }
6068            #[automatically_derived]
6069            #[doc(hidden)]
6070            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
6071                fn from(value: blsKeysReturn) -> Self {
6072                    (value.used,)
6073                }
6074            }
6075            #[automatically_derived]
6076            #[doc(hidden)]
6077            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
6078                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6079                    Self { used: tuple.0 }
6080                }
6081            }
6082        }
6083        #[automatically_derived]
6084        impl alloy_sol_types::SolCall for blsKeysCall {
6085            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6086            type Token<'a> = <Self::Parameters<
6087                'a,
6088            > as alloy_sol_types::SolType>::Token<'a>;
6089            type Return = bool;
6090            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6091            type ReturnToken<'a> = <Self::ReturnTuple<
6092                'a,
6093            > as alloy_sol_types::SolType>::Token<'a>;
6094            const SIGNATURE: &'static str = "blsKeys(bytes32)";
6095            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
6096            #[inline]
6097            fn new<'a>(
6098                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6099            ) -> Self {
6100                tuple.into()
6101            }
6102            #[inline]
6103            fn tokenize(&self) -> Self::Token<'_> {
6104                (
6105                    <alloy::sol_types::sol_data::FixedBytes<
6106                        32,
6107                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
6108                )
6109            }
6110            #[inline]
6111            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6112                (
6113                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6114                        ret,
6115                    ),
6116                )
6117            }
6118            #[inline]
6119            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6120                <Self::ReturnTuple<
6121                    '_,
6122                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6123                    .map(|r| {
6124                        let r: blsKeysReturn = r.into();
6125                        r.used
6126                    })
6127            }
6128            #[inline]
6129            fn abi_decode_returns_validate(
6130                data: &[u8],
6131            ) -> alloy_sol_types::Result<Self::Return> {
6132                <Self::ReturnTuple<
6133                    '_,
6134                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6135                    .map(|r| {
6136                        let r: blsKeysReturn = r.into();
6137                        r.used
6138                    })
6139            }
6140        }
6141    };
6142    #[derive(serde::Serialize, serde::Deserialize)]
6143    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6144    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
6145```solidity
6146function claimValidatorExit(address validator) external;
6147```*/
6148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6149    #[derive(Clone)]
6150    pub struct claimValidatorExitCall {
6151        #[allow(missing_docs)]
6152        pub validator: alloy::sol_types::private::Address,
6153    }
6154    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
6155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6156    #[derive(Clone)]
6157    pub struct claimValidatorExitReturn {}
6158    #[allow(
6159        non_camel_case_types,
6160        non_snake_case,
6161        clippy::pub_underscore_fields,
6162        clippy::style
6163    )]
6164    const _: () = {
6165        use alloy::sol_types as alloy_sol_types;
6166        {
6167            #[doc(hidden)]
6168            #[allow(dead_code)]
6169            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6170            #[doc(hidden)]
6171            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6172            #[cfg(test)]
6173            #[allow(dead_code, unreachable_patterns)]
6174            fn _type_assertion(
6175                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6176            ) {
6177                match _t {
6178                    alloy_sol_types::private::AssertTypeEq::<
6179                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6180                    >(_) => {}
6181                }
6182            }
6183            #[automatically_derived]
6184            #[doc(hidden)]
6185            impl ::core::convert::From<claimValidatorExitCall>
6186            for UnderlyingRustTuple<'_> {
6187                fn from(value: claimValidatorExitCall) -> Self {
6188                    (value.validator,)
6189                }
6190            }
6191            #[automatically_derived]
6192            #[doc(hidden)]
6193            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6194            for claimValidatorExitCall {
6195                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6196                    Self { validator: tuple.0 }
6197                }
6198            }
6199        }
6200        {
6201            #[doc(hidden)]
6202            #[allow(dead_code)]
6203            type UnderlyingSolTuple<'a> = ();
6204            #[doc(hidden)]
6205            type UnderlyingRustTuple<'a> = ();
6206            #[cfg(test)]
6207            #[allow(dead_code, unreachable_patterns)]
6208            fn _type_assertion(
6209                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6210            ) {
6211                match _t {
6212                    alloy_sol_types::private::AssertTypeEq::<
6213                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6214                    >(_) => {}
6215                }
6216            }
6217            #[automatically_derived]
6218            #[doc(hidden)]
6219            impl ::core::convert::From<claimValidatorExitReturn>
6220            for UnderlyingRustTuple<'_> {
6221                fn from(value: claimValidatorExitReturn) -> Self {
6222                    ()
6223                }
6224            }
6225            #[automatically_derived]
6226            #[doc(hidden)]
6227            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6228            for claimValidatorExitReturn {
6229                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6230                    Self {}
6231                }
6232            }
6233        }
6234        impl claimValidatorExitReturn {
6235            fn _tokenize(
6236                &self,
6237            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6238                ()
6239            }
6240        }
6241        #[automatically_derived]
6242        impl alloy_sol_types::SolCall for claimValidatorExitCall {
6243            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6244            type Token<'a> = <Self::Parameters<
6245                'a,
6246            > as alloy_sol_types::SolType>::Token<'a>;
6247            type Return = claimValidatorExitReturn;
6248            type ReturnTuple<'a> = ();
6249            type ReturnToken<'a> = <Self::ReturnTuple<
6250                'a,
6251            > as alloy_sol_types::SolType>::Token<'a>;
6252            const SIGNATURE: &'static str = "claimValidatorExit(address)";
6253            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
6254            #[inline]
6255            fn new<'a>(
6256                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6257            ) -> Self {
6258                tuple.into()
6259            }
6260            #[inline]
6261            fn tokenize(&self) -> Self::Token<'_> {
6262                (
6263                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6264                        &self.validator,
6265                    ),
6266                )
6267            }
6268            #[inline]
6269            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6270                claimValidatorExitReturn::_tokenize(ret)
6271            }
6272            #[inline]
6273            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6274                <Self::ReturnTuple<
6275                    '_,
6276                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6277                    .map(Into::into)
6278            }
6279            #[inline]
6280            fn abi_decode_returns_validate(
6281                data: &[u8],
6282            ) -> alloy_sol_types::Result<Self::Return> {
6283                <Self::ReturnTuple<
6284                    '_,
6285                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6286                    .map(Into::into)
6287            }
6288        }
6289    };
6290    #[derive(serde::Serialize, serde::Deserialize)]
6291    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6292    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
6293```solidity
6294function claimWithdrawal(address validator) external;
6295```*/
6296    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6297    #[derive(Clone)]
6298    pub struct claimWithdrawalCall {
6299        #[allow(missing_docs)]
6300        pub validator: alloy::sol_types::private::Address,
6301    }
6302    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
6303    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6304    #[derive(Clone)]
6305    pub struct claimWithdrawalReturn {}
6306    #[allow(
6307        non_camel_case_types,
6308        non_snake_case,
6309        clippy::pub_underscore_fields,
6310        clippy::style
6311    )]
6312    const _: () = {
6313        use alloy::sol_types as alloy_sol_types;
6314        {
6315            #[doc(hidden)]
6316            #[allow(dead_code)]
6317            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6318            #[doc(hidden)]
6319            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6320            #[cfg(test)]
6321            #[allow(dead_code, unreachable_patterns)]
6322            fn _type_assertion(
6323                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6324            ) {
6325                match _t {
6326                    alloy_sol_types::private::AssertTypeEq::<
6327                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6328                    >(_) => {}
6329                }
6330            }
6331            #[automatically_derived]
6332            #[doc(hidden)]
6333            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
6334                fn from(value: claimWithdrawalCall) -> Self {
6335                    (value.validator,)
6336                }
6337            }
6338            #[automatically_derived]
6339            #[doc(hidden)]
6340            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
6341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6342                    Self { validator: tuple.0 }
6343                }
6344            }
6345        }
6346        {
6347            #[doc(hidden)]
6348            #[allow(dead_code)]
6349            type UnderlyingSolTuple<'a> = ();
6350            #[doc(hidden)]
6351            type UnderlyingRustTuple<'a> = ();
6352            #[cfg(test)]
6353            #[allow(dead_code, unreachable_patterns)]
6354            fn _type_assertion(
6355                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6356            ) {
6357                match _t {
6358                    alloy_sol_types::private::AssertTypeEq::<
6359                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6360                    >(_) => {}
6361                }
6362            }
6363            #[automatically_derived]
6364            #[doc(hidden)]
6365            impl ::core::convert::From<claimWithdrawalReturn>
6366            for UnderlyingRustTuple<'_> {
6367                fn from(value: claimWithdrawalReturn) -> Self {
6368                    ()
6369                }
6370            }
6371            #[automatically_derived]
6372            #[doc(hidden)]
6373            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6374            for claimWithdrawalReturn {
6375                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6376                    Self {}
6377                }
6378            }
6379        }
6380        impl claimWithdrawalReturn {
6381            fn _tokenize(
6382                &self,
6383            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6384                ()
6385            }
6386        }
6387        #[automatically_derived]
6388        impl alloy_sol_types::SolCall for claimWithdrawalCall {
6389            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6390            type Token<'a> = <Self::Parameters<
6391                'a,
6392            > as alloy_sol_types::SolType>::Token<'a>;
6393            type Return = claimWithdrawalReturn;
6394            type ReturnTuple<'a> = ();
6395            type ReturnToken<'a> = <Self::ReturnTuple<
6396                'a,
6397            > as alloy_sol_types::SolType>::Token<'a>;
6398            const SIGNATURE: &'static str = "claimWithdrawal(address)";
6399            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
6400            #[inline]
6401            fn new<'a>(
6402                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6403            ) -> Self {
6404                tuple.into()
6405            }
6406            #[inline]
6407            fn tokenize(&self) -> Self::Token<'_> {
6408                (
6409                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6410                        &self.validator,
6411                    ),
6412                )
6413            }
6414            #[inline]
6415            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6416                claimWithdrawalReturn::_tokenize(ret)
6417            }
6418            #[inline]
6419            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6420                <Self::ReturnTuple<
6421                    '_,
6422                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6423                    .map(Into::into)
6424            }
6425            #[inline]
6426            fn abi_decode_returns_validate(
6427                data: &[u8],
6428            ) -> alloy_sol_types::Result<Self::Return> {
6429                <Self::ReturnTuple<
6430                    '_,
6431                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6432                    .map(Into::into)
6433            }
6434        }
6435    };
6436    #[derive(serde::Serialize, serde::Deserialize)]
6437    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6438    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
6439```solidity
6440function delegate(address validator, uint256 amount) external;
6441```*/
6442    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6443    #[derive(Clone)]
6444    pub struct delegateCall {
6445        #[allow(missing_docs)]
6446        pub validator: alloy::sol_types::private::Address,
6447        #[allow(missing_docs)]
6448        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6449    }
6450    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
6451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6452    #[derive(Clone)]
6453    pub struct delegateReturn {}
6454    #[allow(
6455        non_camel_case_types,
6456        non_snake_case,
6457        clippy::pub_underscore_fields,
6458        clippy::style
6459    )]
6460    const _: () = {
6461        use alloy::sol_types as alloy_sol_types;
6462        {
6463            #[doc(hidden)]
6464            #[allow(dead_code)]
6465            type UnderlyingSolTuple<'a> = (
6466                alloy::sol_types::sol_data::Address,
6467                alloy::sol_types::sol_data::Uint<256>,
6468            );
6469            #[doc(hidden)]
6470            type UnderlyingRustTuple<'a> = (
6471                alloy::sol_types::private::Address,
6472                alloy::sol_types::private::primitives::aliases::U256,
6473            );
6474            #[cfg(test)]
6475            #[allow(dead_code, unreachable_patterns)]
6476            fn _type_assertion(
6477                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6478            ) {
6479                match _t {
6480                    alloy_sol_types::private::AssertTypeEq::<
6481                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6482                    >(_) => {}
6483                }
6484            }
6485            #[automatically_derived]
6486            #[doc(hidden)]
6487            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
6488                fn from(value: delegateCall) -> Self {
6489                    (value.validator, value.amount)
6490                }
6491            }
6492            #[automatically_derived]
6493            #[doc(hidden)]
6494            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
6495                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6496                    Self {
6497                        validator: tuple.0,
6498                        amount: tuple.1,
6499                    }
6500                }
6501            }
6502        }
6503        {
6504            #[doc(hidden)]
6505            #[allow(dead_code)]
6506            type UnderlyingSolTuple<'a> = ();
6507            #[doc(hidden)]
6508            type UnderlyingRustTuple<'a> = ();
6509            #[cfg(test)]
6510            #[allow(dead_code, unreachable_patterns)]
6511            fn _type_assertion(
6512                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6513            ) {
6514                match _t {
6515                    alloy_sol_types::private::AssertTypeEq::<
6516                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6517                    >(_) => {}
6518                }
6519            }
6520            #[automatically_derived]
6521            #[doc(hidden)]
6522            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
6523                fn from(value: delegateReturn) -> Self {
6524                    ()
6525                }
6526            }
6527            #[automatically_derived]
6528            #[doc(hidden)]
6529            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
6530                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6531                    Self {}
6532                }
6533            }
6534        }
6535        impl delegateReturn {
6536            fn _tokenize(
6537                &self,
6538            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6539                ()
6540            }
6541        }
6542        #[automatically_derived]
6543        impl alloy_sol_types::SolCall for delegateCall {
6544            type Parameters<'a> = (
6545                alloy::sol_types::sol_data::Address,
6546                alloy::sol_types::sol_data::Uint<256>,
6547            );
6548            type Token<'a> = <Self::Parameters<
6549                'a,
6550            > as alloy_sol_types::SolType>::Token<'a>;
6551            type Return = delegateReturn;
6552            type ReturnTuple<'a> = ();
6553            type ReturnToken<'a> = <Self::ReturnTuple<
6554                'a,
6555            > as alloy_sol_types::SolType>::Token<'a>;
6556            const SIGNATURE: &'static str = "delegate(address,uint256)";
6557            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
6558            #[inline]
6559            fn new<'a>(
6560                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6561            ) -> Self {
6562                tuple.into()
6563            }
6564            #[inline]
6565            fn tokenize(&self) -> Self::Token<'_> {
6566                (
6567                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6568                        &self.validator,
6569                    ),
6570                    <alloy::sol_types::sol_data::Uint<
6571                        256,
6572                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
6573                )
6574            }
6575            #[inline]
6576            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6577                delegateReturn::_tokenize(ret)
6578            }
6579            #[inline]
6580            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6581                <Self::ReturnTuple<
6582                    '_,
6583                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6584                    .map(Into::into)
6585            }
6586            #[inline]
6587            fn abi_decode_returns_validate(
6588                data: &[u8],
6589            ) -> alloy_sol_types::Result<Self::Return> {
6590                <Self::ReturnTuple<
6591                    '_,
6592                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6593                    .map(Into::into)
6594            }
6595        }
6596    };
6597    #[derive(serde::Serialize, serde::Deserialize)]
6598    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6599    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
6600```solidity
6601function delegations(address validator, address delegator) external view returns (uint256 amount);
6602```*/
6603    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6604    #[derive(Clone)]
6605    pub struct delegationsCall {
6606        #[allow(missing_docs)]
6607        pub validator: alloy::sol_types::private::Address,
6608        #[allow(missing_docs)]
6609        pub delegator: alloy::sol_types::private::Address,
6610    }
6611    #[derive(serde::Serialize, serde::Deserialize)]
6612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6613    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
6614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6615    #[derive(Clone)]
6616    pub struct delegationsReturn {
6617        #[allow(missing_docs)]
6618        pub amount: alloy::sol_types::private::primitives::aliases::U256,
6619    }
6620    #[allow(
6621        non_camel_case_types,
6622        non_snake_case,
6623        clippy::pub_underscore_fields,
6624        clippy::style
6625    )]
6626    const _: () = {
6627        use alloy::sol_types as alloy_sol_types;
6628        {
6629            #[doc(hidden)]
6630            #[allow(dead_code)]
6631            type UnderlyingSolTuple<'a> = (
6632                alloy::sol_types::sol_data::Address,
6633                alloy::sol_types::sol_data::Address,
6634            );
6635            #[doc(hidden)]
6636            type UnderlyingRustTuple<'a> = (
6637                alloy::sol_types::private::Address,
6638                alloy::sol_types::private::Address,
6639            );
6640            #[cfg(test)]
6641            #[allow(dead_code, unreachable_patterns)]
6642            fn _type_assertion(
6643                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6644            ) {
6645                match _t {
6646                    alloy_sol_types::private::AssertTypeEq::<
6647                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6648                    >(_) => {}
6649                }
6650            }
6651            #[automatically_derived]
6652            #[doc(hidden)]
6653            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
6654                fn from(value: delegationsCall) -> Self {
6655                    (value.validator, value.delegator)
6656                }
6657            }
6658            #[automatically_derived]
6659            #[doc(hidden)]
6660            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
6661                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6662                    Self {
6663                        validator: tuple.0,
6664                        delegator: tuple.1,
6665                    }
6666                }
6667            }
6668        }
6669        {
6670            #[doc(hidden)]
6671            #[allow(dead_code)]
6672            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6673            #[doc(hidden)]
6674            type UnderlyingRustTuple<'a> = (
6675                alloy::sol_types::private::primitives::aliases::U256,
6676            );
6677            #[cfg(test)]
6678            #[allow(dead_code, unreachable_patterns)]
6679            fn _type_assertion(
6680                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6681            ) {
6682                match _t {
6683                    alloy_sol_types::private::AssertTypeEq::<
6684                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6685                    >(_) => {}
6686                }
6687            }
6688            #[automatically_derived]
6689            #[doc(hidden)]
6690            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
6691                fn from(value: delegationsReturn) -> Self {
6692                    (value.amount,)
6693                }
6694            }
6695            #[automatically_derived]
6696            #[doc(hidden)]
6697            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
6698                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6699                    Self { amount: tuple.0 }
6700                }
6701            }
6702        }
6703        #[automatically_derived]
6704        impl alloy_sol_types::SolCall for delegationsCall {
6705            type Parameters<'a> = (
6706                alloy::sol_types::sol_data::Address,
6707                alloy::sol_types::sol_data::Address,
6708            );
6709            type Token<'a> = <Self::Parameters<
6710                'a,
6711            > as alloy_sol_types::SolType>::Token<'a>;
6712            type Return = alloy::sol_types::private::primitives::aliases::U256;
6713            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6714            type ReturnToken<'a> = <Self::ReturnTuple<
6715                'a,
6716            > as alloy_sol_types::SolType>::Token<'a>;
6717            const SIGNATURE: &'static str = "delegations(address,address)";
6718            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
6719            #[inline]
6720            fn new<'a>(
6721                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6722            ) -> Self {
6723                tuple.into()
6724            }
6725            #[inline]
6726            fn tokenize(&self) -> Self::Token<'_> {
6727                (
6728                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6729                        &self.validator,
6730                    ),
6731                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6732                        &self.delegator,
6733                    ),
6734                )
6735            }
6736            #[inline]
6737            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6738                (
6739                    <alloy::sol_types::sol_data::Uint<
6740                        256,
6741                    > as alloy_sol_types::SolType>::tokenize(ret),
6742                )
6743            }
6744            #[inline]
6745            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6746                <Self::ReturnTuple<
6747                    '_,
6748                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6749                    .map(|r| {
6750                        let r: delegationsReturn = r.into();
6751                        r.amount
6752                    })
6753            }
6754            #[inline]
6755            fn abi_decode_returns_validate(
6756                data: &[u8],
6757            ) -> alloy_sol_types::Result<Self::Return> {
6758                <Self::ReturnTuple<
6759                    '_,
6760                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6761                    .map(|r| {
6762                        let r: delegationsReturn = r.into();
6763                        r.amount
6764                    })
6765            }
6766        }
6767    };
6768    #[derive(serde::Serialize, serde::Deserialize)]
6769    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6770    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
6771```solidity
6772function deregisterValidator() external;
6773```*/
6774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6775    #[derive(Clone)]
6776    pub struct deregisterValidatorCall;
6777    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
6778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6779    #[derive(Clone)]
6780    pub struct deregisterValidatorReturn {}
6781    #[allow(
6782        non_camel_case_types,
6783        non_snake_case,
6784        clippy::pub_underscore_fields,
6785        clippy::style
6786    )]
6787    const _: () = {
6788        use alloy::sol_types as alloy_sol_types;
6789        {
6790            #[doc(hidden)]
6791            #[allow(dead_code)]
6792            type UnderlyingSolTuple<'a> = ();
6793            #[doc(hidden)]
6794            type UnderlyingRustTuple<'a> = ();
6795            #[cfg(test)]
6796            #[allow(dead_code, unreachable_patterns)]
6797            fn _type_assertion(
6798                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6799            ) {
6800                match _t {
6801                    alloy_sol_types::private::AssertTypeEq::<
6802                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6803                    >(_) => {}
6804                }
6805            }
6806            #[automatically_derived]
6807            #[doc(hidden)]
6808            impl ::core::convert::From<deregisterValidatorCall>
6809            for UnderlyingRustTuple<'_> {
6810                fn from(value: deregisterValidatorCall) -> Self {
6811                    ()
6812                }
6813            }
6814            #[automatically_derived]
6815            #[doc(hidden)]
6816            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6817            for deregisterValidatorCall {
6818                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6819                    Self
6820                }
6821            }
6822        }
6823        {
6824            #[doc(hidden)]
6825            #[allow(dead_code)]
6826            type UnderlyingSolTuple<'a> = ();
6827            #[doc(hidden)]
6828            type UnderlyingRustTuple<'a> = ();
6829            #[cfg(test)]
6830            #[allow(dead_code, unreachable_patterns)]
6831            fn _type_assertion(
6832                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6833            ) {
6834                match _t {
6835                    alloy_sol_types::private::AssertTypeEq::<
6836                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6837                    >(_) => {}
6838                }
6839            }
6840            #[automatically_derived]
6841            #[doc(hidden)]
6842            impl ::core::convert::From<deregisterValidatorReturn>
6843            for UnderlyingRustTuple<'_> {
6844                fn from(value: deregisterValidatorReturn) -> Self {
6845                    ()
6846                }
6847            }
6848            #[automatically_derived]
6849            #[doc(hidden)]
6850            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6851            for deregisterValidatorReturn {
6852                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6853                    Self {}
6854                }
6855            }
6856        }
6857        impl deregisterValidatorReturn {
6858            fn _tokenize(
6859                &self,
6860            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6861                ()
6862            }
6863        }
6864        #[automatically_derived]
6865        impl alloy_sol_types::SolCall for deregisterValidatorCall {
6866            type Parameters<'a> = ();
6867            type Token<'a> = <Self::Parameters<
6868                'a,
6869            > as alloy_sol_types::SolType>::Token<'a>;
6870            type Return = deregisterValidatorReturn;
6871            type ReturnTuple<'a> = ();
6872            type ReturnToken<'a> = <Self::ReturnTuple<
6873                'a,
6874            > as alloy_sol_types::SolType>::Token<'a>;
6875            const SIGNATURE: &'static str = "deregisterValidator()";
6876            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
6877            #[inline]
6878            fn new<'a>(
6879                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6880            ) -> Self {
6881                tuple.into()
6882            }
6883            #[inline]
6884            fn tokenize(&self) -> Self::Token<'_> {
6885                ()
6886            }
6887            #[inline]
6888            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6889                deregisterValidatorReturn::_tokenize(ret)
6890            }
6891            #[inline]
6892            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6893                <Self::ReturnTuple<
6894                    '_,
6895                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6896                    .map(Into::into)
6897            }
6898            #[inline]
6899            fn abi_decode_returns_validate(
6900                data: &[u8],
6901            ) -> alloy_sol_types::Result<Self::Return> {
6902                <Self::ReturnTuple<
6903                    '_,
6904                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6905                    .map(Into::into)
6906            }
6907        }
6908    };
6909    #[derive(serde::Serialize, serde::Deserialize)]
6910    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6911    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
6912```solidity
6913function exitEscrowPeriod() external view returns (uint256);
6914```*/
6915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6916    #[derive(Clone)]
6917    pub struct exitEscrowPeriodCall;
6918    #[derive(serde::Serialize, serde::Deserialize)]
6919    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6920    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
6921    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6922    #[derive(Clone)]
6923    pub struct exitEscrowPeriodReturn {
6924        #[allow(missing_docs)]
6925        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6926    }
6927    #[allow(
6928        non_camel_case_types,
6929        non_snake_case,
6930        clippy::pub_underscore_fields,
6931        clippy::style
6932    )]
6933    const _: () = {
6934        use alloy::sol_types as alloy_sol_types;
6935        {
6936            #[doc(hidden)]
6937            #[allow(dead_code)]
6938            type UnderlyingSolTuple<'a> = ();
6939            #[doc(hidden)]
6940            type UnderlyingRustTuple<'a> = ();
6941            #[cfg(test)]
6942            #[allow(dead_code, unreachable_patterns)]
6943            fn _type_assertion(
6944                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6945            ) {
6946                match _t {
6947                    alloy_sol_types::private::AssertTypeEq::<
6948                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6949                    >(_) => {}
6950                }
6951            }
6952            #[automatically_derived]
6953            #[doc(hidden)]
6954            impl ::core::convert::From<exitEscrowPeriodCall>
6955            for UnderlyingRustTuple<'_> {
6956                fn from(value: exitEscrowPeriodCall) -> Self {
6957                    ()
6958                }
6959            }
6960            #[automatically_derived]
6961            #[doc(hidden)]
6962            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6963            for exitEscrowPeriodCall {
6964                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6965                    Self
6966                }
6967            }
6968        }
6969        {
6970            #[doc(hidden)]
6971            #[allow(dead_code)]
6972            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6973            #[doc(hidden)]
6974            type UnderlyingRustTuple<'a> = (
6975                alloy::sol_types::private::primitives::aliases::U256,
6976            );
6977            #[cfg(test)]
6978            #[allow(dead_code, unreachable_patterns)]
6979            fn _type_assertion(
6980                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6981            ) {
6982                match _t {
6983                    alloy_sol_types::private::AssertTypeEq::<
6984                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6985                    >(_) => {}
6986                }
6987            }
6988            #[automatically_derived]
6989            #[doc(hidden)]
6990            impl ::core::convert::From<exitEscrowPeriodReturn>
6991            for UnderlyingRustTuple<'_> {
6992                fn from(value: exitEscrowPeriodReturn) -> Self {
6993                    (value._0,)
6994                }
6995            }
6996            #[automatically_derived]
6997            #[doc(hidden)]
6998            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6999            for exitEscrowPeriodReturn {
7000                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7001                    Self { _0: tuple.0 }
7002                }
7003            }
7004        }
7005        #[automatically_derived]
7006        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
7007            type Parameters<'a> = ();
7008            type Token<'a> = <Self::Parameters<
7009                'a,
7010            > as alloy_sol_types::SolType>::Token<'a>;
7011            type Return = alloy::sol_types::private::primitives::aliases::U256;
7012            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7013            type ReturnToken<'a> = <Self::ReturnTuple<
7014                'a,
7015            > as alloy_sol_types::SolType>::Token<'a>;
7016            const SIGNATURE: &'static str = "exitEscrowPeriod()";
7017            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
7018            #[inline]
7019            fn new<'a>(
7020                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7021            ) -> Self {
7022                tuple.into()
7023            }
7024            #[inline]
7025            fn tokenize(&self) -> Self::Token<'_> {
7026                ()
7027            }
7028            #[inline]
7029            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7030                (
7031                    <alloy::sol_types::sol_data::Uint<
7032                        256,
7033                    > as alloy_sol_types::SolType>::tokenize(ret),
7034                )
7035            }
7036            #[inline]
7037            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7038                <Self::ReturnTuple<
7039                    '_,
7040                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7041                    .map(|r| {
7042                        let r: exitEscrowPeriodReturn = r.into();
7043                        r._0
7044                    })
7045            }
7046            #[inline]
7047            fn abi_decode_returns_validate(
7048                data: &[u8],
7049            ) -> alloy_sol_types::Result<Self::Return> {
7050                <Self::ReturnTuple<
7051                    '_,
7052                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7053                    .map(|r| {
7054                        let r: exitEscrowPeriodReturn = r.into();
7055                        r._0
7056                    })
7057            }
7058        }
7059    };
7060    #[derive(serde::Serialize, serde::Deserialize)]
7061    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7062    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
7063```solidity
7064function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
7065```*/
7066    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7067    #[derive(Clone)]
7068    pub struct getVersionCall;
7069    #[derive(serde::Serialize, serde::Deserialize)]
7070    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7071    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
7072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7073    #[derive(Clone)]
7074    pub struct getVersionReturn {
7075        #[allow(missing_docs)]
7076        pub majorVersion: u8,
7077        #[allow(missing_docs)]
7078        pub minorVersion: u8,
7079        #[allow(missing_docs)]
7080        pub patchVersion: u8,
7081    }
7082    #[allow(
7083        non_camel_case_types,
7084        non_snake_case,
7085        clippy::pub_underscore_fields,
7086        clippy::style
7087    )]
7088    const _: () = {
7089        use alloy::sol_types as alloy_sol_types;
7090        {
7091            #[doc(hidden)]
7092            #[allow(dead_code)]
7093            type UnderlyingSolTuple<'a> = ();
7094            #[doc(hidden)]
7095            type UnderlyingRustTuple<'a> = ();
7096            #[cfg(test)]
7097            #[allow(dead_code, unreachable_patterns)]
7098            fn _type_assertion(
7099                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7100            ) {
7101                match _t {
7102                    alloy_sol_types::private::AssertTypeEq::<
7103                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7104                    >(_) => {}
7105                }
7106            }
7107            #[automatically_derived]
7108            #[doc(hidden)]
7109            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
7110                fn from(value: getVersionCall) -> Self {
7111                    ()
7112                }
7113            }
7114            #[automatically_derived]
7115            #[doc(hidden)]
7116            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
7117                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7118                    Self
7119                }
7120            }
7121        }
7122        {
7123            #[doc(hidden)]
7124            #[allow(dead_code)]
7125            type UnderlyingSolTuple<'a> = (
7126                alloy::sol_types::sol_data::Uint<8>,
7127                alloy::sol_types::sol_data::Uint<8>,
7128                alloy::sol_types::sol_data::Uint<8>,
7129            );
7130            #[doc(hidden)]
7131            type UnderlyingRustTuple<'a> = (u8, u8, u8);
7132            #[cfg(test)]
7133            #[allow(dead_code, unreachable_patterns)]
7134            fn _type_assertion(
7135                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7136            ) {
7137                match _t {
7138                    alloy_sol_types::private::AssertTypeEq::<
7139                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7140                    >(_) => {}
7141                }
7142            }
7143            #[automatically_derived]
7144            #[doc(hidden)]
7145            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
7146                fn from(value: getVersionReturn) -> Self {
7147                    (value.majorVersion, value.minorVersion, value.patchVersion)
7148                }
7149            }
7150            #[automatically_derived]
7151            #[doc(hidden)]
7152            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
7153                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7154                    Self {
7155                        majorVersion: tuple.0,
7156                        minorVersion: tuple.1,
7157                        patchVersion: tuple.2,
7158                    }
7159                }
7160            }
7161        }
7162        impl getVersionReturn {
7163            fn _tokenize(
7164                &self,
7165            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7166                (
7167                    <alloy::sol_types::sol_data::Uint<
7168                        8,
7169                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
7170                    <alloy::sol_types::sol_data::Uint<
7171                        8,
7172                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
7173                    <alloy::sol_types::sol_data::Uint<
7174                        8,
7175                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
7176                )
7177            }
7178        }
7179        #[automatically_derived]
7180        impl alloy_sol_types::SolCall for getVersionCall {
7181            type Parameters<'a> = ();
7182            type Token<'a> = <Self::Parameters<
7183                'a,
7184            > as alloy_sol_types::SolType>::Token<'a>;
7185            type Return = getVersionReturn;
7186            type ReturnTuple<'a> = (
7187                alloy::sol_types::sol_data::Uint<8>,
7188                alloy::sol_types::sol_data::Uint<8>,
7189                alloy::sol_types::sol_data::Uint<8>,
7190            );
7191            type ReturnToken<'a> = <Self::ReturnTuple<
7192                'a,
7193            > as alloy_sol_types::SolType>::Token<'a>;
7194            const SIGNATURE: &'static str = "getVersion()";
7195            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
7196            #[inline]
7197            fn new<'a>(
7198                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7199            ) -> Self {
7200                tuple.into()
7201            }
7202            #[inline]
7203            fn tokenize(&self) -> Self::Token<'_> {
7204                ()
7205            }
7206            #[inline]
7207            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7208                getVersionReturn::_tokenize(ret)
7209            }
7210            #[inline]
7211            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7212                <Self::ReturnTuple<
7213                    '_,
7214                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7215                    .map(Into::into)
7216            }
7217            #[inline]
7218            fn abi_decode_returns_validate(
7219                data: &[u8],
7220            ) -> alloy_sol_types::Result<Self::Return> {
7221                <Self::ReturnTuple<
7222                    '_,
7223                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7224                    .map(Into::into)
7225            }
7226        }
7227    };
7228    #[derive(serde::Serialize, serde::Deserialize)]
7229    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7230    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
7231```solidity
7232function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
7233```*/
7234    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7235    #[derive(Clone)]
7236    pub struct initializeCall {
7237        #[allow(missing_docs)]
7238        pub _tokenAddress: alloy::sol_types::private::Address,
7239        #[allow(missing_docs)]
7240        pub _lightClientAddress: alloy::sol_types::private::Address,
7241        #[allow(missing_docs)]
7242        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
7243        #[allow(missing_docs)]
7244        pub _timelock: alloy::sol_types::private::Address,
7245    }
7246    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
7247    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7248    #[derive(Clone)]
7249    pub struct initializeReturn {}
7250    #[allow(
7251        non_camel_case_types,
7252        non_snake_case,
7253        clippy::pub_underscore_fields,
7254        clippy::style
7255    )]
7256    const _: () = {
7257        use alloy::sol_types as alloy_sol_types;
7258        {
7259            #[doc(hidden)]
7260            #[allow(dead_code)]
7261            type UnderlyingSolTuple<'a> = (
7262                alloy::sol_types::sol_data::Address,
7263                alloy::sol_types::sol_data::Address,
7264                alloy::sol_types::sol_data::Uint<256>,
7265                alloy::sol_types::sol_data::Address,
7266            );
7267            #[doc(hidden)]
7268            type UnderlyingRustTuple<'a> = (
7269                alloy::sol_types::private::Address,
7270                alloy::sol_types::private::Address,
7271                alloy::sol_types::private::primitives::aliases::U256,
7272                alloy::sol_types::private::Address,
7273            );
7274            #[cfg(test)]
7275            #[allow(dead_code, unreachable_patterns)]
7276            fn _type_assertion(
7277                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7278            ) {
7279                match _t {
7280                    alloy_sol_types::private::AssertTypeEq::<
7281                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7282                    >(_) => {}
7283                }
7284            }
7285            #[automatically_derived]
7286            #[doc(hidden)]
7287            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7288                fn from(value: initializeCall) -> Self {
7289                    (
7290                        value._tokenAddress,
7291                        value._lightClientAddress,
7292                        value._exitEscrowPeriod,
7293                        value._timelock,
7294                    )
7295                }
7296            }
7297            #[automatically_derived]
7298            #[doc(hidden)]
7299            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7300                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7301                    Self {
7302                        _tokenAddress: tuple.0,
7303                        _lightClientAddress: tuple.1,
7304                        _exitEscrowPeriod: tuple.2,
7305                        _timelock: tuple.3,
7306                    }
7307                }
7308            }
7309        }
7310        {
7311            #[doc(hidden)]
7312            #[allow(dead_code)]
7313            type UnderlyingSolTuple<'a> = ();
7314            #[doc(hidden)]
7315            type UnderlyingRustTuple<'a> = ();
7316            #[cfg(test)]
7317            #[allow(dead_code, unreachable_patterns)]
7318            fn _type_assertion(
7319                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7320            ) {
7321                match _t {
7322                    alloy_sol_types::private::AssertTypeEq::<
7323                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7324                    >(_) => {}
7325                }
7326            }
7327            #[automatically_derived]
7328            #[doc(hidden)]
7329            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7330                fn from(value: initializeReturn) -> Self {
7331                    ()
7332                }
7333            }
7334            #[automatically_derived]
7335            #[doc(hidden)]
7336            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7337                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7338                    Self {}
7339                }
7340            }
7341        }
7342        impl initializeReturn {
7343            fn _tokenize(
7344                &self,
7345            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7346                ()
7347            }
7348        }
7349        #[automatically_derived]
7350        impl alloy_sol_types::SolCall for initializeCall {
7351            type Parameters<'a> = (
7352                alloy::sol_types::sol_data::Address,
7353                alloy::sol_types::sol_data::Address,
7354                alloy::sol_types::sol_data::Uint<256>,
7355                alloy::sol_types::sol_data::Address,
7356            );
7357            type Token<'a> = <Self::Parameters<
7358                'a,
7359            > as alloy_sol_types::SolType>::Token<'a>;
7360            type Return = initializeReturn;
7361            type ReturnTuple<'a> = ();
7362            type ReturnToken<'a> = <Self::ReturnTuple<
7363                'a,
7364            > as alloy_sol_types::SolType>::Token<'a>;
7365            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
7366            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
7367            #[inline]
7368            fn new<'a>(
7369                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7370            ) -> Self {
7371                tuple.into()
7372            }
7373            #[inline]
7374            fn tokenize(&self) -> Self::Token<'_> {
7375                (
7376                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7377                        &self._tokenAddress,
7378                    ),
7379                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7380                        &self._lightClientAddress,
7381                    ),
7382                    <alloy::sol_types::sol_data::Uint<
7383                        256,
7384                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
7385                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7386                        &self._timelock,
7387                    ),
7388                )
7389            }
7390            #[inline]
7391            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7392                initializeReturn::_tokenize(ret)
7393            }
7394            #[inline]
7395            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7396                <Self::ReturnTuple<
7397                    '_,
7398                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7399                    .map(Into::into)
7400            }
7401            #[inline]
7402            fn abi_decode_returns_validate(
7403                data: &[u8],
7404            ) -> alloy_sol_types::Result<Self::Return> {
7405                <Self::ReturnTuple<
7406                    '_,
7407                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7408                    .map(Into::into)
7409            }
7410        }
7411    };
7412    #[derive(serde::Serialize, serde::Deserialize)]
7413    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7414    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
7415```solidity
7416function initializedAtBlock() external view returns (uint256);
7417```*/
7418    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7419    #[derive(Clone)]
7420    pub struct initializedAtBlockCall;
7421    #[derive(serde::Serialize, serde::Deserialize)]
7422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7423    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
7424    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7425    #[derive(Clone)]
7426    pub struct initializedAtBlockReturn {
7427        #[allow(missing_docs)]
7428        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7429    }
7430    #[allow(
7431        non_camel_case_types,
7432        non_snake_case,
7433        clippy::pub_underscore_fields,
7434        clippy::style
7435    )]
7436    const _: () = {
7437        use alloy::sol_types as alloy_sol_types;
7438        {
7439            #[doc(hidden)]
7440            #[allow(dead_code)]
7441            type UnderlyingSolTuple<'a> = ();
7442            #[doc(hidden)]
7443            type UnderlyingRustTuple<'a> = ();
7444            #[cfg(test)]
7445            #[allow(dead_code, unreachable_patterns)]
7446            fn _type_assertion(
7447                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7448            ) {
7449                match _t {
7450                    alloy_sol_types::private::AssertTypeEq::<
7451                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7452                    >(_) => {}
7453                }
7454            }
7455            #[automatically_derived]
7456            #[doc(hidden)]
7457            impl ::core::convert::From<initializedAtBlockCall>
7458            for UnderlyingRustTuple<'_> {
7459                fn from(value: initializedAtBlockCall) -> Self {
7460                    ()
7461                }
7462            }
7463            #[automatically_derived]
7464            #[doc(hidden)]
7465            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7466            for initializedAtBlockCall {
7467                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7468                    Self
7469                }
7470            }
7471        }
7472        {
7473            #[doc(hidden)]
7474            #[allow(dead_code)]
7475            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7476            #[doc(hidden)]
7477            type UnderlyingRustTuple<'a> = (
7478                alloy::sol_types::private::primitives::aliases::U256,
7479            );
7480            #[cfg(test)]
7481            #[allow(dead_code, unreachable_patterns)]
7482            fn _type_assertion(
7483                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7484            ) {
7485                match _t {
7486                    alloy_sol_types::private::AssertTypeEq::<
7487                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7488                    >(_) => {}
7489                }
7490            }
7491            #[automatically_derived]
7492            #[doc(hidden)]
7493            impl ::core::convert::From<initializedAtBlockReturn>
7494            for UnderlyingRustTuple<'_> {
7495                fn from(value: initializedAtBlockReturn) -> Self {
7496                    (value._0,)
7497                }
7498            }
7499            #[automatically_derived]
7500            #[doc(hidden)]
7501            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7502            for initializedAtBlockReturn {
7503                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7504                    Self { _0: tuple.0 }
7505                }
7506            }
7507        }
7508        #[automatically_derived]
7509        impl alloy_sol_types::SolCall for initializedAtBlockCall {
7510            type Parameters<'a> = ();
7511            type Token<'a> = <Self::Parameters<
7512                'a,
7513            > as alloy_sol_types::SolType>::Token<'a>;
7514            type Return = alloy::sol_types::private::primitives::aliases::U256;
7515            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7516            type ReturnToken<'a> = <Self::ReturnTuple<
7517                'a,
7518            > as alloy_sol_types::SolType>::Token<'a>;
7519            const SIGNATURE: &'static str = "initializedAtBlock()";
7520            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
7521            #[inline]
7522            fn new<'a>(
7523                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7524            ) -> Self {
7525                tuple.into()
7526            }
7527            #[inline]
7528            fn tokenize(&self) -> Self::Token<'_> {
7529                ()
7530            }
7531            #[inline]
7532            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7533                (
7534                    <alloy::sol_types::sol_data::Uint<
7535                        256,
7536                    > as alloy_sol_types::SolType>::tokenize(ret),
7537                )
7538            }
7539            #[inline]
7540            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7541                <Self::ReturnTuple<
7542                    '_,
7543                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7544                    .map(|r| {
7545                        let r: initializedAtBlockReturn = r.into();
7546                        r._0
7547                    })
7548            }
7549            #[inline]
7550            fn abi_decode_returns_validate(
7551                data: &[u8],
7552            ) -> alloy_sol_types::Result<Self::Return> {
7553                <Self::ReturnTuple<
7554                    '_,
7555                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7556                    .map(|r| {
7557                        let r: initializedAtBlockReturn = r.into();
7558                        r._0
7559                    })
7560            }
7561        }
7562    };
7563    #[derive(serde::Serialize, serde::Deserialize)]
7564    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7565    /**Function with signature `lightClient()` and selector `0xb5700e68`.
7566```solidity
7567function lightClient() external view returns (address);
7568```*/
7569    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7570    #[derive(Clone)]
7571    pub struct lightClientCall;
7572    #[derive(serde::Serialize, serde::Deserialize)]
7573    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7574    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
7575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7576    #[derive(Clone)]
7577    pub struct lightClientReturn {
7578        #[allow(missing_docs)]
7579        pub _0: alloy::sol_types::private::Address,
7580    }
7581    #[allow(
7582        non_camel_case_types,
7583        non_snake_case,
7584        clippy::pub_underscore_fields,
7585        clippy::style
7586    )]
7587    const _: () = {
7588        use alloy::sol_types as alloy_sol_types;
7589        {
7590            #[doc(hidden)]
7591            #[allow(dead_code)]
7592            type UnderlyingSolTuple<'a> = ();
7593            #[doc(hidden)]
7594            type UnderlyingRustTuple<'a> = ();
7595            #[cfg(test)]
7596            #[allow(dead_code, unreachable_patterns)]
7597            fn _type_assertion(
7598                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7599            ) {
7600                match _t {
7601                    alloy_sol_types::private::AssertTypeEq::<
7602                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7603                    >(_) => {}
7604                }
7605            }
7606            #[automatically_derived]
7607            #[doc(hidden)]
7608            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
7609                fn from(value: lightClientCall) -> Self {
7610                    ()
7611                }
7612            }
7613            #[automatically_derived]
7614            #[doc(hidden)]
7615            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
7616                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7617                    Self
7618                }
7619            }
7620        }
7621        {
7622            #[doc(hidden)]
7623            #[allow(dead_code)]
7624            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7625            #[doc(hidden)]
7626            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7627            #[cfg(test)]
7628            #[allow(dead_code, unreachable_patterns)]
7629            fn _type_assertion(
7630                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7631            ) {
7632                match _t {
7633                    alloy_sol_types::private::AssertTypeEq::<
7634                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7635                    >(_) => {}
7636                }
7637            }
7638            #[automatically_derived]
7639            #[doc(hidden)]
7640            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
7641                fn from(value: lightClientReturn) -> Self {
7642                    (value._0,)
7643                }
7644            }
7645            #[automatically_derived]
7646            #[doc(hidden)]
7647            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
7648                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7649                    Self { _0: tuple.0 }
7650                }
7651            }
7652        }
7653        #[automatically_derived]
7654        impl alloy_sol_types::SolCall for lightClientCall {
7655            type Parameters<'a> = ();
7656            type Token<'a> = <Self::Parameters<
7657                'a,
7658            > as alloy_sol_types::SolType>::Token<'a>;
7659            type Return = alloy::sol_types::private::Address;
7660            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7661            type ReturnToken<'a> = <Self::ReturnTuple<
7662                'a,
7663            > as alloy_sol_types::SolType>::Token<'a>;
7664            const SIGNATURE: &'static str = "lightClient()";
7665            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
7666            #[inline]
7667            fn new<'a>(
7668                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7669            ) -> Self {
7670                tuple.into()
7671            }
7672            #[inline]
7673            fn tokenize(&self) -> Self::Token<'_> {
7674                ()
7675            }
7676            #[inline]
7677            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7678                (
7679                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7680                        ret,
7681                    ),
7682                )
7683            }
7684            #[inline]
7685            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7686                <Self::ReturnTuple<
7687                    '_,
7688                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7689                    .map(|r| {
7690                        let r: lightClientReturn = r.into();
7691                        r._0
7692                    })
7693            }
7694            #[inline]
7695            fn abi_decode_returns_validate(
7696                data: &[u8],
7697            ) -> alloy_sol_types::Result<Self::Return> {
7698                <Self::ReturnTuple<
7699                    '_,
7700                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7701                    .map(|r| {
7702                        let r: lightClientReturn = r.into();
7703                        r._0
7704                    })
7705            }
7706        }
7707    };
7708    #[derive(serde::Serialize, serde::Deserialize)]
7709    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7710    /**Function with signature `owner()` and selector `0x8da5cb5b`.
7711```solidity
7712function owner() external view returns (address);
7713```*/
7714    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7715    #[derive(Clone)]
7716    pub struct ownerCall;
7717    #[derive(serde::Serialize, serde::Deserialize)]
7718    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7719    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
7720    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7721    #[derive(Clone)]
7722    pub struct ownerReturn {
7723        #[allow(missing_docs)]
7724        pub _0: alloy::sol_types::private::Address,
7725    }
7726    #[allow(
7727        non_camel_case_types,
7728        non_snake_case,
7729        clippy::pub_underscore_fields,
7730        clippy::style
7731    )]
7732    const _: () = {
7733        use alloy::sol_types as alloy_sol_types;
7734        {
7735            #[doc(hidden)]
7736            #[allow(dead_code)]
7737            type UnderlyingSolTuple<'a> = ();
7738            #[doc(hidden)]
7739            type UnderlyingRustTuple<'a> = ();
7740            #[cfg(test)]
7741            #[allow(dead_code, unreachable_patterns)]
7742            fn _type_assertion(
7743                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7744            ) {
7745                match _t {
7746                    alloy_sol_types::private::AssertTypeEq::<
7747                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7748                    >(_) => {}
7749                }
7750            }
7751            #[automatically_derived]
7752            #[doc(hidden)]
7753            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
7754                fn from(value: ownerCall) -> Self {
7755                    ()
7756                }
7757            }
7758            #[automatically_derived]
7759            #[doc(hidden)]
7760            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
7761                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7762                    Self
7763                }
7764            }
7765        }
7766        {
7767            #[doc(hidden)]
7768            #[allow(dead_code)]
7769            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7770            #[doc(hidden)]
7771            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7772            #[cfg(test)]
7773            #[allow(dead_code, unreachable_patterns)]
7774            fn _type_assertion(
7775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7776            ) {
7777                match _t {
7778                    alloy_sol_types::private::AssertTypeEq::<
7779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7780                    >(_) => {}
7781                }
7782            }
7783            #[automatically_derived]
7784            #[doc(hidden)]
7785            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
7786                fn from(value: ownerReturn) -> Self {
7787                    (value._0,)
7788                }
7789            }
7790            #[automatically_derived]
7791            #[doc(hidden)]
7792            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
7793                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7794                    Self { _0: tuple.0 }
7795                }
7796            }
7797        }
7798        #[automatically_derived]
7799        impl alloy_sol_types::SolCall for ownerCall {
7800            type Parameters<'a> = ();
7801            type Token<'a> = <Self::Parameters<
7802                'a,
7803            > as alloy_sol_types::SolType>::Token<'a>;
7804            type Return = alloy::sol_types::private::Address;
7805            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7806            type ReturnToken<'a> = <Self::ReturnTuple<
7807                'a,
7808            > as alloy_sol_types::SolType>::Token<'a>;
7809            const SIGNATURE: &'static str = "owner()";
7810            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
7811            #[inline]
7812            fn new<'a>(
7813                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7814            ) -> Self {
7815                tuple.into()
7816            }
7817            #[inline]
7818            fn tokenize(&self) -> Self::Token<'_> {
7819                ()
7820            }
7821            #[inline]
7822            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7823                (
7824                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7825                        ret,
7826                    ),
7827                )
7828            }
7829            #[inline]
7830            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7831                <Self::ReturnTuple<
7832                    '_,
7833                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7834                    .map(|r| {
7835                        let r: ownerReturn = r.into();
7836                        r._0
7837                    })
7838            }
7839            #[inline]
7840            fn abi_decode_returns_validate(
7841                data: &[u8],
7842            ) -> alloy_sol_types::Result<Self::Return> {
7843                <Self::ReturnTuple<
7844                    '_,
7845                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7846                    .map(|r| {
7847                        let r: ownerReturn = r.into();
7848                        r._0
7849                    })
7850            }
7851        }
7852    };
7853    #[derive(serde::Serialize, serde::Deserialize)]
7854    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7855    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
7856```solidity
7857function proxiableUUID() external view returns (bytes32);
7858```*/
7859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7860    #[derive(Clone)]
7861    pub struct proxiableUUIDCall;
7862    #[derive(serde::Serialize, serde::Deserialize)]
7863    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7864    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
7865    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7866    #[derive(Clone)]
7867    pub struct proxiableUUIDReturn {
7868        #[allow(missing_docs)]
7869        pub _0: alloy::sol_types::private::FixedBytes<32>,
7870    }
7871    #[allow(
7872        non_camel_case_types,
7873        non_snake_case,
7874        clippy::pub_underscore_fields,
7875        clippy::style
7876    )]
7877    const _: () = {
7878        use alloy::sol_types as alloy_sol_types;
7879        {
7880            #[doc(hidden)]
7881            #[allow(dead_code)]
7882            type UnderlyingSolTuple<'a> = ();
7883            #[doc(hidden)]
7884            type UnderlyingRustTuple<'a> = ();
7885            #[cfg(test)]
7886            #[allow(dead_code, unreachable_patterns)]
7887            fn _type_assertion(
7888                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7889            ) {
7890                match _t {
7891                    alloy_sol_types::private::AssertTypeEq::<
7892                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7893                    >(_) => {}
7894                }
7895            }
7896            #[automatically_derived]
7897            #[doc(hidden)]
7898            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
7899                fn from(value: proxiableUUIDCall) -> Self {
7900                    ()
7901                }
7902            }
7903            #[automatically_derived]
7904            #[doc(hidden)]
7905            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
7906                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7907                    Self
7908                }
7909            }
7910        }
7911        {
7912            #[doc(hidden)]
7913            #[allow(dead_code)]
7914            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7915            #[doc(hidden)]
7916            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7917            #[cfg(test)]
7918            #[allow(dead_code, unreachable_patterns)]
7919            fn _type_assertion(
7920                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7921            ) {
7922                match _t {
7923                    alloy_sol_types::private::AssertTypeEq::<
7924                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7925                    >(_) => {}
7926                }
7927            }
7928            #[automatically_derived]
7929            #[doc(hidden)]
7930            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
7931                fn from(value: proxiableUUIDReturn) -> Self {
7932                    (value._0,)
7933                }
7934            }
7935            #[automatically_derived]
7936            #[doc(hidden)]
7937            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
7938                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7939                    Self { _0: tuple.0 }
7940                }
7941            }
7942        }
7943        #[automatically_derived]
7944        impl alloy_sol_types::SolCall for proxiableUUIDCall {
7945            type Parameters<'a> = ();
7946            type Token<'a> = <Self::Parameters<
7947                'a,
7948            > as alloy_sol_types::SolType>::Token<'a>;
7949            type Return = alloy::sol_types::private::FixedBytes<32>;
7950            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7951            type ReturnToken<'a> = <Self::ReturnTuple<
7952                'a,
7953            > as alloy_sol_types::SolType>::Token<'a>;
7954            const SIGNATURE: &'static str = "proxiableUUID()";
7955            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
7956            #[inline]
7957            fn new<'a>(
7958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7959            ) -> Self {
7960                tuple.into()
7961            }
7962            #[inline]
7963            fn tokenize(&self) -> Self::Token<'_> {
7964                ()
7965            }
7966            #[inline]
7967            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7968                (
7969                    <alloy::sol_types::sol_data::FixedBytes<
7970                        32,
7971                    > as alloy_sol_types::SolType>::tokenize(ret),
7972                )
7973            }
7974            #[inline]
7975            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7976                <Self::ReturnTuple<
7977                    '_,
7978                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7979                    .map(|r| {
7980                        let r: proxiableUUIDReturn = r.into();
7981                        r._0
7982                    })
7983            }
7984            #[inline]
7985            fn abi_decode_returns_validate(
7986                data: &[u8],
7987            ) -> alloy_sol_types::Result<Self::Return> {
7988                <Self::ReturnTuple<
7989                    '_,
7990                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7991                    .map(|r| {
7992                        let r: proxiableUUIDReturn = r.into();
7993                        r._0
7994                    })
7995            }
7996        }
7997    };
7998    #[derive(serde::Serialize, serde::Deserialize)]
7999    #[derive()]
8000    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
8001```solidity
8002function registerValidator(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, uint16 commission) external;
8003```*/
8004    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8005    #[derive(Clone)]
8006    pub struct registerValidatorCall {
8007        #[allow(missing_docs)]
8008        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8009        #[allow(missing_docs)]
8010        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8011        #[allow(missing_docs)]
8012        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8013        #[allow(missing_docs)]
8014        pub commission: u16,
8015    }
8016    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
8017    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8018    #[derive(Clone)]
8019    pub struct registerValidatorReturn {}
8020    #[allow(
8021        non_camel_case_types,
8022        non_snake_case,
8023        clippy::pub_underscore_fields,
8024        clippy::style
8025    )]
8026    const _: () = {
8027        use alloy::sol_types as alloy_sol_types;
8028        {
8029            #[doc(hidden)]
8030            #[allow(dead_code)]
8031            type UnderlyingSolTuple<'a> = (
8032                BN254::G2Point,
8033                EdOnBN254::EdOnBN254Point,
8034                BN254::G1Point,
8035                alloy::sol_types::sol_data::Uint<16>,
8036            );
8037            #[doc(hidden)]
8038            type UnderlyingRustTuple<'a> = (
8039                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8040                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8041                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8042                u16,
8043            );
8044            #[cfg(test)]
8045            #[allow(dead_code, unreachable_patterns)]
8046            fn _type_assertion(
8047                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8048            ) {
8049                match _t {
8050                    alloy_sol_types::private::AssertTypeEq::<
8051                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8052                    >(_) => {}
8053                }
8054            }
8055            #[automatically_derived]
8056            #[doc(hidden)]
8057            impl ::core::convert::From<registerValidatorCall>
8058            for UnderlyingRustTuple<'_> {
8059                fn from(value: registerValidatorCall) -> Self {
8060                    (value.blsVK, value.schnorrVK, value.blsSig, value.commission)
8061                }
8062            }
8063            #[automatically_derived]
8064            #[doc(hidden)]
8065            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8066            for registerValidatorCall {
8067                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8068                    Self {
8069                        blsVK: tuple.0,
8070                        schnorrVK: tuple.1,
8071                        blsSig: tuple.2,
8072                        commission: tuple.3,
8073                    }
8074                }
8075            }
8076        }
8077        {
8078            #[doc(hidden)]
8079            #[allow(dead_code)]
8080            type UnderlyingSolTuple<'a> = ();
8081            #[doc(hidden)]
8082            type UnderlyingRustTuple<'a> = ();
8083            #[cfg(test)]
8084            #[allow(dead_code, unreachable_patterns)]
8085            fn _type_assertion(
8086                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8087            ) {
8088                match _t {
8089                    alloy_sol_types::private::AssertTypeEq::<
8090                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8091                    >(_) => {}
8092                }
8093            }
8094            #[automatically_derived]
8095            #[doc(hidden)]
8096            impl ::core::convert::From<registerValidatorReturn>
8097            for UnderlyingRustTuple<'_> {
8098                fn from(value: registerValidatorReturn) -> Self {
8099                    ()
8100                }
8101            }
8102            #[automatically_derived]
8103            #[doc(hidden)]
8104            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8105            for registerValidatorReturn {
8106                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8107                    Self {}
8108                }
8109            }
8110        }
8111        impl registerValidatorReturn {
8112            fn _tokenize(
8113                &self,
8114            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8115                ()
8116            }
8117        }
8118        #[automatically_derived]
8119        impl alloy_sol_types::SolCall for registerValidatorCall {
8120            type Parameters<'a> = (
8121                BN254::G2Point,
8122                EdOnBN254::EdOnBN254Point,
8123                BN254::G1Point,
8124                alloy::sol_types::sol_data::Uint<16>,
8125            );
8126            type Token<'a> = <Self::Parameters<
8127                'a,
8128            > as alloy_sol_types::SolType>::Token<'a>;
8129            type Return = registerValidatorReturn;
8130            type ReturnTuple<'a> = ();
8131            type ReturnToken<'a> = <Self::ReturnTuple<
8132                'a,
8133            > as alloy_sol_types::SolType>::Token<'a>;
8134            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
8135            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
8136            #[inline]
8137            fn new<'a>(
8138                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8139            ) -> Self {
8140                tuple.into()
8141            }
8142            #[inline]
8143            fn tokenize(&self) -> Self::Token<'_> {
8144                (
8145                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8146                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8147                        &self.schnorrVK,
8148                    ),
8149                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
8150                    <alloy::sol_types::sol_data::Uint<
8151                        16,
8152                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
8153                )
8154            }
8155            #[inline]
8156            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8157                registerValidatorReturn::_tokenize(ret)
8158            }
8159            #[inline]
8160            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8161                <Self::ReturnTuple<
8162                    '_,
8163                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8164                    .map(Into::into)
8165            }
8166            #[inline]
8167            fn abi_decode_returns_validate(
8168                data: &[u8],
8169            ) -> alloy_sol_types::Result<Self::Return> {
8170                <Self::ReturnTuple<
8171                    '_,
8172                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8173                    .map(Into::into)
8174            }
8175        }
8176    };
8177    #[derive(serde::Serialize, serde::Deserialize)]
8178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8179    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
8180```solidity
8181function renounceOwnership() external;
8182```*/
8183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8184    #[derive(Clone)]
8185    pub struct renounceOwnershipCall;
8186    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
8187    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8188    #[derive(Clone)]
8189    pub struct renounceOwnershipReturn {}
8190    #[allow(
8191        non_camel_case_types,
8192        non_snake_case,
8193        clippy::pub_underscore_fields,
8194        clippy::style
8195    )]
8196    const _: () = {
8197        use alloy::sol_types as alloy_sol_types;
8198        {
8199            #[doc(hidden)]
8200            #[allow(dead_code)]
8201            type UnderlyingSolTuple<'a> = ();
8202            #[doc(hidden)]
8203            type UnderlyingRustTuple<'a> = ();
8204            #[cfg(test)]
8205            #[allow(dead_code, unreachable_patterns)]
8206            fn _type_assertion(
8207                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8208            ) {
8209                match _t {
8210                    alloy_sol_types::private::AssertTypeEq::<
8211                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8212                    >(_) => {}
8213                }
8214            }
8215            #[automatically_derived]
8216            #[doc(hidden)]
8217            impl ::core::convert::From<renounceOwnershipCall>
8218            for UnderlyingRustTuple<'_> {
8219                fn from(value: renounceOwnershipCall) -> Self {
8220                    ()
8221                }
8222            }
8223            #[automatically_derived]
8224            #[doc(hidden)]
8225            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8226            for renounceOwnershipCall {
8227                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8228                    Self
8229                }
8230            }
8231        }
8232        {
8233            #[doc(hidden)]
8234            #[allow(dead_code)]
8235            type UnderlyingSolTuple<'a> = ();
8236            #[doc(hidden)]
8237            type UnderlyingRustTuple<'a> = ();
8238            #[cfg(test)]
8239            #[allow(dead_code, unreachable_patterns)]
8240            fn _type_assertion(
8241                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8242            ) {
8243                match _t {
8244                    alloy_sol_types::private::AssertTypeEq::<
8245                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8246                    >(_) => {}
8247                }
8248            }
8249            #[automatically_derived]
8250            #[doc(hidden)]
8251            impl ::core::convert::From<renounceOwnershipReturn>
8252            for UnderlyingRustTuple<'_> {
8253                fn from(value: renounceOwnershipReturn) -> Self {
8254                    ()
8255                }
8256            }
8257            #[automatically_derived]
8258            #[doc(hidden)]
8259            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8260            for renounceOwnershipReturn {
8261                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8262                    Self {}
8263                }
8264            }
8265        }
8266        impl renounceOwnershipReturn {
8267            fn _tokenize(
8268                &self,
8269            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8270                ()
8271            }
8272        }
8273        #[automatically_derived]
8274        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8275            type Parameters<'a> = ();
8276            type Token<'a> = <Self::Parameters<
8277                'a,
8278            > as alloy_sol_types::SolType>::Token<'a>;
8279            type Return = renounceOwnershipReturn;
8280            type ReturnTuple<'a> = ();
8281            type ReturnToken<'a> = <Self::ReturnTuple<
8282                'a,
8283            > as alloy_sol_types::SolType>::Token<'a>;
8284            const SIGNATURE: &'static str = "renounceOwnership()";
8285            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8286            #[inline]
8287            fn new<'a>(
8288                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8289            ) -> Self {
8290                tuple.into()
8291            }
8292            #[inline]
8293            fn tokenize(&self) -> Self::Token<'_> {
8294                ()
8295            }
8296            #[inline]
8297            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8298                renounceOwnershipReturn::_tokenize(ret)
8299            }
8300            #[inline]
8301            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8302                <Self::ReturnTuple<
8303                    '_,
8304                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8305                    .map(Into::into)
8306            }
8307            #[inline]
8308            fn abi_decode_returns_validate(
8309                data: &[u8],
8310            ) -> alloy_sol_types::Result<Self::Return> {
8311                <Self::ReturnTuple<
8312                    '_,
8313                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8314                    .map(Into::into)
8315            }
8316        }
8317    };
8318    #[derive(serde::Serialize, serde::Deserialize)]
8319    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8320    /**Function with signature `token()` and selector `0xfc0c546a`.
8321```solidity
8322function token() external view returns (address);
8323```*/
8324    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8325    #[derive(Clone)]
8326    pub struct tokenCall;
8327    #[derive(serde::Serialize, serde::Deserialize)]
8328    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8329    ///Container type for the return parameters of the [`token()`](tokenCall) function.
8330    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8331    #[derive(Clone)]
8332    pub struct tokenReturn {
8333        #[allow(missing_docs)]
8334        pub _0: alloy::sol_types::private::Address,
8335    }
8336    #[allow(
8337        non_camel_case_types,
8338        non_snake_case,
8339        clippy::pub_underscore_fields,
8340        clippy::style
8341    )]
8342    const _: () = {
8343        use alloy::sol_types as alloy_sol_types;
8344        {
8345            #[doc(hidden)]
8346            #[allow(dead_code)]
8347            type UnderlyingSolTuple<'a> = ();
8348            #[doc(hidden)]
8349            type UnderlyingRustTuple<'a> = ();
8350            #[cfg(test)]
8351            #[allow(dead_code, unreachable_patterns)]
8352            fn _type_assertion(
8353                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8354            ) {
8355                match _t {
8356                    alloy_sol_types::private::AssertTypeEq::<
8357                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8358                    >(_) => {}
8359                }
8360            }
8361            #[automatically_derived]
8362            #[doc(hidden)]
8363            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
8364                fn from(value: tokenCall) -> Self {
8365                    ()
8366                }
8367            }
8368            #[automatically_derived]
8369            #[doc(hidden)]
8370            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
8371                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8372                    Self
8373                }
8374            }
8375        }
8376        {
8377            #[doc(hidden)]
8378            #[allow(dead_code)]
8379            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8380            #[doc(hidden)]
8381            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8382            #[cfg(test)]
8383            #[allow(dead_code, unreachable_patterns)]
8384            fn _type_assertion(
8385                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8386            ) {
8387                match _t {
8388                    alloy_sol_types::private::AssertTypeEq::<
8389                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8390                    >(_) => {}
8391                }
8392            }
8393            #[automatically_derived]
8394            #[doc(hidden)]
8395            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
8396                fn from(value: tokenReturn) -> Self {
8397                    (value._0,)
8398                }
8399            }
8400            #[automatically_derived]
8401            #[doc(hidden)]
8402            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
8403                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8404                    Self { _0: tuple.0 }
8405                }
8406            }
8407        }
8408        #[automatically_derived]
8409        impl alloy_sol_types::SolCall for tokenCall {
8410            type Parameters<'a> = ();
8411            type Token<'a> = <Self::Parameters<
8412                'a,
8413            > as alloy_sol_types::SolType>::Token<'a>;
8414            type Return = alloy::sol_types::private::Address;
8415            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8416            type ReturnToken<'a> = <Self::ReturnTuple<
8417                'a,
8418            > as alloy_sol_types::SolType>::Token<'a>;
8419            const SIGNATURE: &'static str = "token()";
8420            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
8421            #[inline]
8422            fn new<'a>(
8423                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8424            ) -> Self {
8425                tuple.into()
8426            }
8427            #[inline]
8428            fn tokenize(&self) -> Self::Token<'_> {
8429                ()
8430            }
8431            #[inline]
8432            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8433                (
8434                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8435                        ret,
8436                    ),
8437                )
8438            }
8439            #[inline]
8440            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8441                <Self::ReturnTuple<
8442                    '_,
8443                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8444                    .map(|r| {
8445                        let r: tokenReturn = r.into();
8446                        r._0
8447                    })
8448            }
8449            #[inline]
8450            fn abi_decode_returns_validate(
8451                data: &[u8],
8452            ) -> alloy_sol_types::Result<Self::Return> {
8453                <Self::ReturnTuple<
8454                    '_,
8455                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8456                    .map(|r| {
8457                        let r: tokenReturn = r.into();
8458                        r._0
8459                    })
8460            }
8461        }
8462    };
8463    #[derive(serde::Serialize, serde::Deserialize)]
8464    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8465    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
8466```solidity
8467function transferOwnership(address newOwner) external;
8468```*/
8469    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8470    #[derive(Clone)]
8471    pub struct transferOwnershipCall {
8472        #[allow(missing_docs)]
8473        pub newOwner: alloy::sol_types::private::Address,
8474    }
8475    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8476    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8477    #[derive(Clone)]
8478    pub struct transferOwnershipReturn {}
8479    #[allow(
8480        non_camel_case_types,
8481        non_snake_case,
8482        clippy::pub_underscore_fields,
8483        clippy::style
8484    )]
8485    const _: () = {
8486        use alloy::sol_types as alloy_sol_types;
8487        {
8488            #[doc(hidden)]
8489            #[allow(dead_code)]
8490            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8491            #[doc(hidden)]
8492            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8493            #[cfg(test)]
8494            #[allow(dead_code, unreachable_patterns)]
8495            fn _type_assertion(
8496                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8497            ) {
8498                match _t {
8499                    alloy_sol_types::private::AssertTypeEq::<
8500                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8501                    >(_) => {}
8502                }
8503            }
8504            #[automatically_derived]
8505            #[doc(hidden)]
8506            impl ::core::convert::From<transferOwnershipCall>
8507            for UnderlyingRustTuple<'_> {
8508                fn from(value: transferOwnershipCall) -> Self {
8509                    (value.newOwner,)
8510                }
8511            }
8512            #[automatically_derived]
8513            #[doc(hidden)]
8514            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8515            for transferOwnershipCall {
8516                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8517                    Self { newOwner: tuple.0 }
8518                }
8519            }
8520        }
8521        {
8522            #[doc(hidden)]
8523            #[allow(dead_code)]
8524            type UnderlyingSolTuple<'a> = ();
8525            #[doc(hidden)]
8526            type UnderlyingRustTuple<'a> = ();
8527            #[cfg(test)]
8528            #[allow(dead_code, unreachable_patterns)]
8529            fn _type_assertion(
8530                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8531            ) {
8532                match _t {
8533                    alloy_sol_types::private::AssertTypeEq::<
8534                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8535                    >(_) => {}
8536                }
8537            }
8538            #[automatically_derived]
8539            #[doc(hidden)]
8540            impl ::core::convert::From<transferOwnershipReturn>
8541            for UnderlyingRustTuple<'_> {
8542                fn from(value: transferOwnershipReturn) -> Self {
8543                    ()
8544                }
8545            }
8546            #[automatically_derived]
8547            #[doc(hidden)]
8548            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8549            for transferOwnershipReturn {
8550                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8551                    Self {}
8552                }
8553            }
8554        }
8555        impl transferOwnershipReturn {
8556            fn _tokenize(
8557                &self,
8558            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8559                ()
8560            }
8561        }
8562        #[automatically_derived]
8563        impl alloy_sol_types::SolCall for transferOwnershipCall {
8564            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8565            type Token<'a> = <Self::Parameters<
8566                'a,
8567            > as alloy_sol_types::SolType>::Token<'a>;
8568            type Return = transferOwnershipReturn;
8569            type ReturnTuple<'a> = ();
8570            type ReturnToken<'a> = <Self::ReturnTuple<
8571                'a,
8572            > as alloy_sol_types::SolType>::Token<'a>;
8573            const SIGNATURE: &'static str = "transferOwnership(address)";
8574            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
8575            #[inline]
8576            fn new<'a>(
8577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8578            ) -> Self {
8579                tuple.into()
8580            }
8581            #[inline]
8582            fn tokenize(&self) -> Self::Token<'_> {
8583                (
8584                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8585                        &self.newOwner,
8586                    ),
8587                )
8588            }
8589            #[inline]
8590            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8591                transferOwnershipReturn::_tokenize(ret)
8592            }
8593            #[inline]
8594            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8595                <Self::ReturnTuple<
8596                    '_,
8597                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8598                    .map(Into::into)
8599            }
8600            #[inline]
8601            fn abi_decode_returns_validate(
8602                data: &[u8],
8603            ) -> alloy_sol_types::Result<Self::Return> {
8604                <Self::ReturnTuple<
8605                    '_,
8606                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8607                    .map(Into::into)
8608            }
8609        }
8610    };
8611    #[derive(serde::Serialize, serde::Deserialize)]
8612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8613    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
8614```solidity
8615function undelegate(address validator, uint256 amount) external;
8616```*/
8617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8618    #[derive(Clone)]
8619    pub struct undelegateCall {
8620        #[allow(missing_docs)]
8621        pub validator: alloy::sol_types::private::Address,
8622        #[allow(missing_docs)]
8623        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8624    }
8625    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
8626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8627    #[derive(Clone)]
8628    pub struct undelegateReturn {}
8629    #[allow(
8630        non_camel_case_types,
8631        non_snake_case,
8632        clippy::pub_underscore_fields,
8633        clippy::style
8634    )]
8635    const _: () = {
8636        use alloy::sol_types as alloy_sol_types;
8637        {
8638            #[doc(hidden)]
8639            #[allow(dead_code)]
8640            type UnderlyingSolTuple<'a> = (
8641                alloy::sol_types::sol_data::Address,
8642                alloy::sol_types::sol_data::Uint<256>,
8643            );
8644            #[doc(hidden)]
8645            type UnderlyingRustTuple<'a> = (
8646                alloy::sol_types::private::Address,
8647                alloy::sol_types::private::primitives::aliases::U256,
8648            );
8649            #[cfg(test)]
8650            #[allow(dead_code, unreachable_patterns)]
8651            fn _type_assertion(
8652                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8653            ) {
8654                match _t {
8655                    alloy_sol_types::private::AssertTypeEq::<
8656                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8657                    >(_) => {}
8658                }
8659            }
8660            #[automatically_derived]
8661            #[doc(hidden)]
8662            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
8663                fn from(value: undelegateCall) -> Self {
8664                    (value.validator, value.amount)
8665                }
8666            }
8667            #[automatically_derived]
8668            #[doc(hidden)]
8669            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
8670                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8671                    Self {
8672                        validator: tuple.0,
8673                        amount: tuple.1,
8674                    }
8675                }
8676            }
8677        }
8678        {
8679            #[doc(hidden)]
8680            #[allow(dead_code)]
8681            type UnderlyingSolTuple<'a> = ();
8682            #[doc(hidden)]
8683            type UnderlyingRustTuple<'a> = ();
8684            #[cfg(test)]
8685            #[allow(dead_code, unreachable_patterns)]
8686            fn _type_assertion(
8687                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8688            ) {
8689                match _t {
8690                    alloy_sol_types::private::AssertTypeEq::<
8691                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8692                    >(_) => {}
8693                }
8694            }
8695            #[automatically_derived]
8696            #[doc(hidden)]
8697            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
8698                fn from(value: undelegateReturn) -> Self {
8699                    ()
8700                }
8701            }
8702            #[automatically_derived]
8703            #[doc(hidden)]
8704            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
8705                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8706                    Self {}
8707                }
8708            }
8709        }
8710        impl undelegateReturn {
8711            fn _tokenize(
8712                &self,
8713            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8714                ()
8715            }
8716        }
8717        #[automatically_derived]
8718        impl alloy_sol_types::SolCall for undelegateCall {
8719            type Parameters<'a> = (
8720                alloy::sol_types::sol_data::Address,
8721                alloy::sol_types::sol_data::Uint<256>,
8722            );
8723            type Token<'a> = <Self::Parameters<
8724                'a,
8725            > as alloy_sol_types::SolType>::Token<'a>;
8726            type Return = undelegateReturn;
8727            type ReturnTuple<'a> = ();
8728            type ReturnToken<'a> = <Self::ReturnTuple<
8729                'a,
8730            > as alloy_sol_types::SolType>::Token<'a>;
8731            const SIGNATURE: &'static str = "undelegate(address,uint256)";
8732            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
8733            #[inline]
8734            fn new<'a>(
8735                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8736            ) -> Self {
8737                tuple.into()
8738            }
8739            #[inline]
8740            fn tokenize(&self) -> Self::Token<'_> {
8741                (
8742                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8743                        &self.validator,
8744                    ),
8745                    <alloy::sol_types::sol_data::Uint<
8746                        256,
8747                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8748                )
8749            }
8750            #[inline]
8751            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8752                undelegateReturn::_tokenize(ret)
8753            }
8754            #[inline]
8755            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8756                <Self::ReturnTuple<
8757                    '_,
8758                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8759                    .map(Into::into)
8760            }
8761            #[inline]
8762            fn abi_decode_returns_validate(
8763                data: &[u8],
8764            ) -> alloy_sol_types::Result<Self::Return> {
8765                <Self::ReturnTuple<
8766                    '_,
8767                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8768                    .map(Into::into)
8769            }
8770        }
8771    };
8772    #[derive(serde::Serialize, serde::Deserialize)]
8773    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8774    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
8775```solidity
8776function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
8777```*/
8778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8779    #[derive(Clone)]
8780    pub struct undelegationsCall {
8781        #[allow(missing_docs)]
8782        pub validator: alloy::sol_types::private::Address,
8783        #[allow(missing_docs)]
8784        pub delegator: alloy::sol_types::private::Address,
8785    }
8786    #[derive(serde::Serialize, serde::Deserialize)]
8787    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8788    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
8789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8790    #[derive(Clone)]
8791    pub struct undelegationsReturn {
8792        #[allow(missing_docs)]
8793        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8794        #[allow(missing_docs)]
8795        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
8796    }
8797    #[allow(
8798        non_camel_case_types,
8799        non_snake_case,
8800        clippy::pub_underscore_fields,
8801        clippy::style
8802    )]
8803    const _: () = {
8804        use alloy::sol_types as alloy_sol_types;
8805        {
8806            #[doc(hidden)]
8807            #[allow(dead_code)]
8808            type UnderlyingSolTuple<'a> = (
8809                alloy::sol_types::sol_data::Address,
8810                alloy::sol_types::sol_data::Address,
8811            );
8812            #[doc(hidden)]
8813            type UnderlyingRustTuple<'a> = (
8814                alloy::sol_types::private::Address,
8815                alloy::sol_types::private::Address,
8816            );
8817            #[cfg(test)]
8818            #[allow(dead_code, unreachable_patterns)]
8819            fn _type_assertion(
8820                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8821            ) {
8822                match _t {
8823                    alloy_sol_types::private::AssertTypeEq::<
8824                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8825                    >(_) => {}
8826                }
8827            }
8828            #[automatically_derived]
8829            #[doc(hidden)]
8830            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
8831                fn from(value: undelegationsCall) -> Self {
8832                    (value.validator, value.delegator)
8833                }
8834            }
8835            #[automatically_derived]
8836            #[doc(hidden)]
8837            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
8838                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8839                    Self {
8840                        validator: tuple.0,
8841                        delegator: tuple.1,
8842                    }
8843                }
8844            }
8845        }
8846        {
8847            #[doc(hidden)]
8848            #[allow(dead_code)]
8849            type UnderlyingSolTuple<'a> = (
8850                alloy::sol_types::sol_data::Uint<256>,
8851                alloy::sol_types::sol_data::Uint<256>,
8852            );
8853            #[doc(hidden)]
8854            type UnderlyingRustTuple<'a> = (
8855                alloy::sol_types::private::primitives::aliases::U256,
8856                alloy::sol_types::private::primitives::aliases::U256,
8857            );
8858            #[cfg(test)]
8859            #[allow(dead_code, unreachable_patterns)]
8860            fn _type_assertion(
8861                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8862            ) {
8863                match _t {
8864                    alloy_sol_types::private::AssertTypeEq::<
8865                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8866                    >(_) => {}
8867                }
8868            }
8869            #[automatically_derived]
8870            #[doc(hidden)]
8871            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
8872                fn from(value: undelegationsReturn) -> Self {
8873                    (value.amount, value.unlocksAt)
8874                }
8875            }
8876            #[automatically_derived]
8877            #[doc(hidden)]
8878            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
8879                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8880                    Self {
8881                        amount: tuple.0,
8882                        unlocksAt: tuple.1,
8883                    }
8884                }
8885            }
8886        }
8887        impl undelegationsReturn {
8888            fn _tokenize(
8889                &self,
8890            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8891                (
8892                    <alloy::sol_types::sol_data::Uint<
8893                        256,
8894                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8895                    <alloy::sol_types::sol_data::Uint<
8896                        256,
8897                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
8898                )
8899            }
8900        }
8901        #[automatically_derived]
8902        impl alloy_sol_types::SolCall for undelegationsCall {
8903            type Parameters<'a> = (
8904                alloy::sol_types::sol_data::Address,
8905                alloy::sol_types::sol_data::Address,
8906            );
8907            type Token<'a> = <Self::Parameters<
8908                'a,
8909            > as alloy_sol_types::SolType>::Token<'a>;
8910            type Return = undelegationsReturn;
8911            type ReturnTuple<'a> = (
8912                alloy::sol_types::sol_data::Uint<256>,
8913                alloy::sol_types::sol_data::Uint<256>,
8914            );
8915            type ReturnToken<'a> = <Self::ReturnTuple<
8916                'a,
8917            > as alloy_sol_types::SolType>::Token<'a>;
8918            const SIGNATURE: &'static str = "undelegations(address,address)";
8919            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
8920            #[inline]
8921            fn new<'a>(
8922                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8923            ) -> Self {
8924                tuple.into()
8925            }
8926            #[inline]
8927            fn tokenize(&self) -> Self::Token<'_> {
8928                (
8929                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8930                        &self.validator,
8931                    ),
8932                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8933                        &self.delegator,
8934                    ),
8935                )
8936            }
8937            #[inline]
8938            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8939                undelegationsReturn::_tokenize(ret)
8940            }
8941            #[inline]
8942            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8943                <Self::ReturnTuple<
8944                    '_,
8945                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8946                    .map(Into::into)
8947            }
8948            #[inline]
8949            fn abi_decode_returns_validate(
8950                data: &[u8],
8951            ) -> alloy_sol_types::Result<Self::Return> {
8952                <Self::ReturnTuple<
8953                    '_,
8954                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8955                    .map(Into::into)
8956            }
8957        }
8958    };
8959    #[derive(serde::Serialize, serde::Deserialize)]
8960    #[derive()]
8961    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
8962```solidity
8963function updateConsensusKeys(BN254.G2Point memory newBlsVK, EdOnBN254.EdOnBN254Point memory newSchnorrVK, BN254.G1Point memory newBlsSig) external;
8964```*/
8965    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8966    #[derive(Clone)]
8967    pub struct updateConsensusKeysCall {
8968        #[allow(missing_docs)]
8969        pub newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8970        #[allow(missing_docs)]
8971        pub newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8972        #[allow(missing_docs)]
8973        pub newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8974    }
8975    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
8976    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8977    #[derive(Clone)]
8978    pub struct updateConsensusKeysReturn {}
8979    #[allow(
8980        non_camel_case_types,
8981        non_snake_case,
8982        clippy::pub_underscore_fields,
8983        clippy::style
8984    )]
8985    const _: () = {
8986        use alloy::sol_types as alloy_sol_types;
8987        {
8988            #[doc(hidden)]
8989            #[allow(dead_code)]
8990            type UnderlyingSolTuple<'a> = (
8991                BN254::G2Point,
8992                EdOnBN254::EdOnBN254Point,
8993                BN254::G1Point,
8994            );
8995            #[doc(hidden)]
8996            type UnderlyingRustTuple<'a> = (
8997                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8998                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8999                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
9000            );
9001            #[cfg(test)]
9002            #[allow(dead_code, unreachable_patterns)]
9003            fn _type_assertion(
9004                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9005            ) {
9006                match _t {
9007                    alloy_sol_types::private::AssertTypeEq::<
9008                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9009                    >(_) => {}
9010                }
9011            }
9012            #[automatically_derived]
9013            #[doc(hidden)]
9014            impl ::core::convert::From<updateConsensusKeysCall>
9015            for UnderlyingRustTuple<'_> {
9016                fn from(value: updateConsensusKeysCall) -> Self {
9017                    (value.newBlsVK, value.newSchnorrVK, value.newBlsSig)
9018                }
9019            }
9020            #[automatically_derived]
9021            #[doc(hidden)]
9022            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9023            for updateConsensusKeysCall {
9024                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9025                    Self {
9026                        newBlsVK: tuple.0,
9027                        newSchnorrVK: tuple.1,
9028                        newBlsSig: tuple.2,
9029                    }
9030                }
9031            }
9032        }
9033        {
9034            #[doc(hidden)]
9035            #[allow(dead_code)]
9036            type UnderlyingSolTuple<'a> = ();
9037            #[doc(hidden)]
9038            type UnderlyingRustTuple<'a> = ();
9039            #[cfg(test)]
9040            #[allow(dead_code, unreachable_patterns)]
9041            fn _type_assertion(
9042                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9043            ) {
9044                match _t {
9045                    alloy_sol_types::private::AssertTypeEq::<
9046                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9047                    >(_) => {}
9048                }
9049            }
9050            #[automatically_derived]
9051            #[doc(hidden)]
9052            impl ::core::convert::From<updateConsensusKeysReturn>
9053            for UnderlyingRustTuple<'_> {
9054                fn from(value: updateConsensusKeysReturn) -> Self {
9055                    ()
9056                }
9057            }
9058            #[automatically_derived]
9059            #[doc(hidden)]
9060            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9061            for updateConsensusKeysReturn {
9062                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9063                    Self {}
9064                }
9065            }
9066        }
9067        impl updateConsensusKeysReturn {
9068            fn _tokenize(
9069                &self,
9070            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9071                ()
9072            }
9073        }
9074        #[automatically_derived]
9075        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
9076            type Parameters<'a> = (
9077                BN254::G2Point,
9078                EdOnBN254::EdOnBN254Point,
9079                BN254::G1Point,
9080            );
9081            type Token<'a> = <Self::Parameters<
9082                'a,
9083            > as alloy_sol_types::SolType>::Token<'a>;
9084            type Return = updateConsensusKeysReturn;
9085            type ReturnTuple<'a> = ();
9086            type ReturnToken<'a> = <Self::ReturnTuple<
9087                'a,
9088            > as alloy_sol_types::SolType>::Token<'a>;
9089            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
9090            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
9091            #[inline]
9092            fn new<'a>(
9093                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9094            ) -> Self {
9095                tuple.into()
9096            }
9097            #[inline]
9098            fn tokenize(&self) -> Self::Token<'_> {
9099                (
9100                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(
9101                        &self.newBlsVK,
9102                    ),
9103                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
9104                        &self.newSchnorrVK,
9105                    ),
9106                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
9107                        &self.newBlsSig,
9108                    ),
9109                )
9110            }
9111            #[inline]
9112            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9113                updateConsensusKeysReturn::_tokenize(ret)
9114            }
9115            #[inline]
9116            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9117                <Self::ReturnTuple<
9118                    '_,
9119                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9120                    .map(Into::into)
9121            }
9122            #[inline]
9123            fn abi_decode_returns_validate(
9124                data: &[u8],
9125            ) -> alloy_sol_types::Result<Self::Return> {
9126                <Self::ReturnTuple<
9127                    '_,
9128                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9129                    .map(Into::into)
9130            }
9131        }
9132    };
9133    #[derive(serde::Serialize, serde::Deserialize)]
9134    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9135    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
9136```solidity
9137function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
9138```*/
9139    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9140    #[derive(Clone)]
9141    pub struct upgradeToAndCallCall {
9142        #[allow(missing_docs)]
9143        pub newImplementation: alloy::sol_types::private::Address,
9144        #[allow(missing_docs)]
9145        pub data: alloy::sol_types::private::Bytes,
9146    }
9147    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
9148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9149    #[derive(Clone)]
9150    pub struct upgradeToAndCallReturn {}
9151    #[allow(
9152        non_camel_case_types,
9153        non_snake_case,
9154        clippy::pub_underscore_fields,
9155        clippy::style
9156    )]
9157    const _: () = {
9158        use alloy::sol_types as alloy_sol_types;
9159        {
9160            #[doc(hidden)]
9161            #[allow(dead_code)]
9162            type UnderlyingSolTuple<'a> = (
9163                alloy::sol_types::sol_data::Address,
9164                alloy::sol_types::sol_data::Bytes,
9165            );
9166            #[doc(hidden)]
9167            type UnderlyingRustTuple<'a> = (
9168                alloy::sol_types::private::Address,
9169                alloy::sol_types::private::Bytes,
9170            );
9171            #[cfg(test)]
9172            #[allow(dead_code, unreachable_patterns)]
9173            fn _type_assertion(
9174                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9175            ) {
9176                match _t {
9177                    alloy_sol_types::private::AssertTypeEq::<
9178                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9179                    >(_) => {}
9180                }
9181            }
9182            #[automatically_derived]
9183            #[doc(hidden)]
9184            impl ::core::convert::From<upgradeToAndCallCall>
9185            for UnderlyingRustTuple<'_> {
9186                fn from(value: upgradeToAndCallCall) -> Self {
9187                    (value.newImplementation, value.data)
9188                }
9189            }
9190            #[automatically_derived]
9191            #[doc(hidden)]
9192            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9193            for upgradeToAndCallCall {
9194                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9195                    Self {
9196                        newImplementation: tuple.0,
9197                        data: tuple.1,
9198                    }
9199                }
9200            }
9201        }
9202        {
9203            #[doc(hidden)]
9204            #[allow(dead_code)]
9205            type UnderlyingSolTuple<'a> = ();
9206            #[doc(hidden)]
9207            type UnderlyingRustTuple<'a> = ();
9208            #[cfg(test)]
9209            #[allow(dead_code, unreachable_patterns)]
9210            fn _type_assertion(
9211                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9212            ) {
9213                match _t {
9214                    alloy_sol_types::private::AssertTypeEq::<
9215                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9216                    >(_) => {}
9217                }
9218            }
9219            #[automatically_derived]
9220            #[doc(hidden)]
9221            impl ::core::convert::From<upgradeToAndCallReturn>
9222            for UnderlyingRustTuple<'_> {
9223                fn from(value: upgradeToAndCallReturn) -> Self {
9224                    ()
9225                }
9226            }
9227            #[automatically_derived]
9228            #[doc(hidden)]
9229            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9230            for upgradeToAndCallReturn {
9231                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9232                    Self {}
9233                }
9234            }
9235        }
9236        impl upgradeToAndCallReturn {
9237            fn _tokenize(
9238                &self,
9239            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9240                ()
9241            }
9242        }
9243        #[automatically_derived]
9244        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
9245            type Parameters<'a> = (
9246                alloy::sol_types::sol_data::Address,
9247                alloy::sol_types::sol_data::Bytes,
9248            );
9249            type Token<'a> = <Self::Parameters<
9250                'a,
9251            > as alloy_sol_types::SolType>::Token<'a>;
9252            type Return = upgradeToAndCallReturn;
9253            type ReturnTuple<'a> = ();
9254            type ReturnToken<'a> = <Self::ReturnTuple<
9255                'a,
9256            > as alloy_sol_types::SolType>::Token<'a>;
9257            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
9258            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
9259            #[inline]
9260            fn new<'a>(
9261                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9262            ) -> Self {
9263                tuple.into()
9264            }
9265            #[inline]
9266            fn tokenize(&self) -> Self::Token<'_> {
9267                (
9268                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9269                        &self.newImplementation,
9270                    ),
9271                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9272                        &self.data,
9273                    ),
9274                )
9275            }
9276            #[inline]
9277            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9278                upgradeToAndCallReturn::_tokenize(ret)
9279            }
9280            #[inline]
9281            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9282                <Self::ReturnTuple<
9283                    '_,
9284                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9285                    .map(Into::into)
9286            }
9287            #[inline]
9288            fn abi_decode_returns_validate(
9289                data: &[u8],
9290            ) -> alloy_sol_types::Result<Self::Return> {
9291                <Self::ReturnTuple<
9292                    '_,
9293                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9294                    .map(Into::into)
9295            }
9296        }
9297    };
9298    #[derive(serde::Serialize, serde::Deserialize)]
9299    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9300    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
9301```solidity
9302function validatorExits(address validator) external view returns (uint256 unlocksAt);
9303```*/
9304    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9305    #[derive(Clone)]
9306    pub struct validatorExitsCall {
9307        #[allow(missing_docs)]
9308        pub validator: alloy::sol_types::private::Address,
9309    }
9310    #[derive(serde::Serialize, serde::Deserialize)]
9311    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9312    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
9313    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9314    #[derive(Clone)]
9315    pub struct validatorExitsReturn {
9316        #[allow(missing_docs)]
9317        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
9318    }
9319    #[allow(
9320        non_camel_case_types,
9321        non_snake_case,
9322        clippy::pub_underscore_fields,
9323        clippy::style
9324    )]
9325    const _: () = {
9326        use alloy::sol_types as alloy_sol_types;
9327        {
9328            #[doc(hidden)]
9329            #[allow(dead_code)]
9330            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9331            #[doc(hidden)]
9332            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9333            #[cfg(test)]
9334            #[allow(dead_code, unreachable_patterns)]
9335            fn _type_assertion(
9336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9337            ) {
9338                match _t {
9339                    alloy_sol_types::private::AssertTypeEq::<
9340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9341                    >(_) => {}
9342                }
9343            }
9344            #[automatically_derived]
9345            #[doc(hidden)]
9346            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
9347                fn from(value: validatorExitsCall) -> Self {
9348                    (value.validator,)
9349                }
9350            }
9351            #[automatically_derived]
9352            #[doc(hidden)]
9353            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
9354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9355                    Self { validator: tuple.0 }
9356                }
9357            }
9358        }
9359        {
9360            #[doc(hidden)]
9361            #[allow(dead_code)]
9362            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9363            #[doc(hidden)]
9364            type UnderlyingRustTuple<'a> = (
9365                alloy::sol_types::private::primitives::aliases::U256,
9366            );
9367            #[cfg(test)]
9368            #[allow(dead_code, unreachable_patterns)]
9369            fn _type_assertion(
9370                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9371            ) {
9372                match _t {
9373                    alloy_sol_types::private::AssertTypeEq::<
9374                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9375                    >(_) => {}
9376                }
9377            }
9378            #[automatically_derived]
9379            #[doc(hidden)]
9380            impl ::core::convert::From<validatorExitsReturn>
9381            for UnderlyingRustTuple<'_> {
9382                fn from(value: validatorExitsReturn) -> Self {
9383                    (value.unlocksAt,)
9384                }
9385            }
9386            #[automatically_derived]
9387            #[doc(hidden)]
9388            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9389            for validatorExitsReturn {
9390                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9391                    Self { unlocksAt: tuple.0 }
9392                }
9393            }
9394        }
9395        #[automatically_derived]
9396        impl alloy_sol_types::SolCall for validatorExitsCall {
9397            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9398            type Token<'a> = <Self::Parameters<
9399                'a,
9400            > as alloy_sol_types::SolType>::Token<'a>;
9401            type Return = alloy::sol_types::private::primitives::aliases::U256;
9402            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9403            type ReturnToken<'a> = <Self::ReturnTuple<
9404                'a,
9405            > as alloy_sol_types::SolType>::Token<'a>;
9406            const SIGNATURE: &'static str = "validatorExits(address)";
9407            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
9408            #[inline]
9409            fn new<'a>(
9410                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9411            ) -> Self {
9412                tuple.into()
9413            }
9414            #[inline]
9415            fn tokenize(&self) -> Self::Token<'_> {
9416                (
9417                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9418                        &self.validator,
9419                    ),
9420                )
9421            }
9422            #[inline]
9423            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9424                (
9425                    <alloy::sol_types::sol_data::Uint<
9426                        256,
9427                    > as alloy_sol_types::SolType>::tokenize(ret),
9428                )
9429            }
9430            #[inline]
9431            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9432                <Self::ReturnTuple<
9433                    '_,
9434                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9435                    .map(|r| {
9436                        let r: validatorExitsReturn = r.into();
9437                        r.unlocksAt
9438                    })
9439            }
9440            #[inline]
9441            fn abi_decode_returns_validate(
9442                data: &[u8],
9443            ) -> alloy_sol_types::Result<Self::Return> {
9444                <Self::ReturnTuple<
9445                    '_,
9446                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9447                    .map(|r| {
9448                        let r: validatorExitsReturn = r.into();
9449                        r.unlocksAt
9450                    })
9451            }
9452        }
9453    };
9454    #[derive(serde::Serialize, serde::Deserialize)]
9455    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9456    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
9457```solidity
9458function validators(address account) external view returns (uint256 delegatedAmount, ValidatorStatus status);
9459```*/
9460    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9461    #[derive(Clone)]
9462    pub struct validatorsCall {
9463        #[allow(missing_docs)]
9464        pub account: alloy::sol_types::private::Address,
9465    }
9466    #[derive(serde::Serialize, serde::Deserialize)]
9467    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9468    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
9469    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9470    #[derive(Clone)]
9471    pub struct validatorsReturn {
9472        #[allow(missing_docs)]
9473        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
9474        #[allow(missing_docs)]
9475        pub status: <ValidatorStatus as alloy::sol_types::SolType>::RustType,
9476    }
9477    #[allow(
9478        non_camel_case_types,
9479        non_snake_case,
9480        clippy::pub_underscore_fields,
9481        clippy::style
9482    )]
9483    const _: () = {
9484        use alloy::sol_types as alloy_sol_types;
9485        {
9486            #[doc(hidden)]
9487            #[allow(dead_code)]
9488            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9489            #[doc(hidden)]
9490            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9491            #[cfg(test)]
9492            #[allow(dead_code, unreachable_patterns)]
9493            fn _type_assertion(
9494                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9495            ) {
9496                match _t {
9497                    alloy_sol_types::private::AssertTypeEq::<
9498                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9499                    >(_) => {}
9500                }
9501            }
9502            #[automatically_derived]
9503            #[doc(hidden)]
9504            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
9505                fn from(value: validatorsCall) -> Self {
9506                    (value.account,)
9507                }
9508            }
9509            #[automatically_derived]
9510            #[doc(hidden)]
9511            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
9512                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9513                    Self { account: tuple.0 }
9514                }
9515            }
9516        }
9517        {
9518            #[doc(hidden)]
9519            #[allow(dead_code)]
9520            type UnderlyingSolTuple<'a> = (
9521                alloy::sol_types::sol_data::Uint<256>,
9522                ValidatorStatus,
9523            );
9524            #[doc(hidden)]
9525            type UnderlyingRustTuple<'a> = (
9526                alloy::sol_types::private::primitives::aliases::U256,
9527                <ValidatorStatus as alloy::sol_types::SolType>::RustType,
9528            );
9529            #[cfg(test)]
9530            #[allow(dead_code, unreachable_patterns)]
9531            fn _type_assertion(
9532                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9533            ) {
9534                match _t {
9535                    alloy_sol_types::private::AssertTypeEq::<
9536                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9537                    >(_) => {}
9538                }
9539            }
9540            #[automatically_derived]
9541            #[doc(hidden)]
9542            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
9543                fn from(value: validatorsReturn) -> Self {
9544                    (value.delegatedAmount, value.status)
9545                }
9546            }
9547            #[automatically_derived]
9548            #[doc(hidden)]
9549            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
9550                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9551                    Self {
9552                        delegatedAmount: tuple.0,
9553                        status: tuple.1,
9554                    }
9555                }
9556            }
9557        }
9558        impl validatorsReturn {
9559            fn _tokenize(
9560                &self,
9561            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9562                (
9563                    <alloy::sol_types::sol_data::Uint<
9564                        256,
9565                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
9566                    <ValidatorStatus as alloy_sol_types::SolType>::tokenize(&self.status),
9567                )
9568            }
9569        }
9570        #[automatically_derived]
9571        impl alloy_sol_types::SolCall for validatorsCall {
9572            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9573            type Token<'a> = <Self::Parameters<
9574                'a,
9575            > as alloy_sol_types::SolType>::Token<'a>;
9576            type Return = validatorsReturn;
9577            type ReturnTuple<'a> = (
9578                alloy::sol_types::sol_data::Uint<256>,
9579                ValidatorStatus,
9580            );
9581            type ReturnToken<'a> = <Self::ReturnTuple<
9582                'a,
9583            > as alloy_sol_types::SolType>::Token<'a>;
9584            const SIGNATURE: &'static str = "validators(address)";
9585            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
9586            #[inline]
9587            fn new<'a>(
9588                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9589            ) -> Self {
9590                tuple.into()
9591            }
9592            #[inline]
9593            fn tokenize(&self) -> Self::Token<'_> {
9594                (
9595                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9596                        &self.account,
9597                    ),
9598                )
9599            }
9600            #[inline]
9601            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9602                validatorsReturn::_tokenize(ret)
9603            }
9604            #[inline]
9605            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9606                <Self::ReturnTuple<
9607                    '_,
9608                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9609                    .map(Into::into)
9610            }
9611            #[inline]
9612            fn abi_decode_returns_validate(
9613                data: &[u8],
9614            ) -> alloy_sol_types::Result<Self::Return> {
9615                <Self::ReturnTuple<
9616                    '_,
9617                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9618                    .map(Into::into)
9619            }
9620        }
9621    };
9622    ///Container for all the [`StakeTable`](self) function calls.
9623    #[derive(serde::Serialize, serde::Deserialize)]
9624    #[derive()]
9625    pub enum StakeTableCalls {
9626        #[allow(missing_docs)]
9627        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
9628        #[allow(missing_docs)]
9629        _hashBlsKey(_hashBlsKeyCall),
9630        #[allow(missing_docs)]
9631        blsKeys(blsKeysCall),
9632        #[allow(missing_docs)]
9633        claimValidatorExit(claimValidatorExitCall),
9634        #[allow(missing_docs)]
9635        claimWithdrawal(claimWithdrawalCall),
9636        #[allow(missing_docs)]
9637        delegate(delegateCall),
9638        #[allow(missing_docs)]
9639        delegations(delegationsCall),
9640        #[allow(missing_docs)]
9641        deregisterValidator(deregisterValidatorCall),
9642        #[allow(missing_docs)]
9643        exitEscrowPeriod(exitEscrowPeriodCall),
9644        #[allow(missing_docs)]
9645        getVersion(getVersionCall),
9646        #[allow(missing_docs)]
9647        initialize(initializeCall),
9648        #[allow(missing_docs)]
9649        initializedAtBlock(initializedAtBlockCall),
9650        #[allow(missing_docs)]
9651        lightClient(lightClientCall),
9652        #[allow(missing_docs)]
9653        owner(ownerCall),
9654        #[allow(missing_docs)]
9655        proxiableUUID(proxiableUUIDCall),
9656        #[allow(missing_docs)]
9657        registerValidator(registerValidatorCall),
9658        #[allow(missing_docs)]
9659        renounceOwnership(renounceOwnershipCall),
9660        #[allow(missing_docs)]
9661        token(tokenCall),
9662        #[allow(missing_docs)]
9663        transferOwnership(transferOwnershipCall),
9664        #[allow(missing_docs)]
9665        undelegate(undelegateCall),
9666        #[allow(missing_docs)]
9667        undelegations(undelegationsCall),
9668        #[allow(missing_docs)]
9669        updateConsensusKeys(updateConsensusKeysCall),
9670        #[allow(missing_docs)]
9671        upgradeToAndCall(upgradeToAndCallCall),
9672        #[allow(missing_docs)]
9673        validatorExits(validatorExitsCall),
9674        #[allow(missing_docs)]
9675        validators(validatorsCall),
9676    }
9677    #[automatically_derived]
9678    impl StakeTableCalls {
9679        /// All the selectors of this enum.
9680        ///
9681        /// Note that the selectors might not be in the same order as the variants.
9682        /// No guarantees are made about the order of the selectors.
9683        ///
9684        /// Prefer using `SolInterface` methods instead.
9685        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9686            [2u8, 110u8, 64u8, 43u8],
9687            [13u8, 142u8, 110u8, 44u8],
9688            [19u8, 185u8, 5u8, 122u8],
9689            [33u8, 64u8, 254u8, 205u8],
9690            [62u8, 157u8, 249u8, 181u8],
9691            [77u8, 153u8, 221u8, 22u8],
9692            [79u8, 30u8, 242u8, 134u8],
9693            [82u8, 209u8, 144u8, 45u8],
9694            [85u8, 68u8, 194u8, 241u8],
9695            [106u8, 145u8, 28u8, 207u8],
9696            [113u8, 80u8, 24u8, 166u8],
9697            [141u8, 165u8, 203u8, 91u8],
9698            [155u8, 48u8, 165u8, 230u8],
9699            [158u8, 154u8, 143u8, 49u8],
9700            [162u8, 215u8, 141u8, 213u8],
9701            [163u8, 6u8, 106u8, 171u8],
9702            [173u8, 60u8, 177u8, 204u8],
9703            [179u8, 230u8, 235u8, 213u8],
9704            [181u8, 112u8, 14u8, 104u8],
9705            [181u8, 236u8, 179u8, 68u8],
9706            [190u8, 32u8, 48u8, 148u8],
9707            [198u8, 72u8, 20u8, 221u8],
9708            [242u8, 253u8, 227u8, 139u8],
9709            [250u8, 82u8, 199u8, 216u8],
9710            [252u8, 12u8, 84u8, 106u8],
9711        ];
9712    }
9713    #[automatically_derived]
9714    impl alloy_sol_types::SolInterface for StakeTableCalls {
9715        const NAME: &'static str = "StakeTableCalls";
9716        const MIN_DATA_LENGTH: usize = 0usize;
9717        const COUNT: usize = 25usize;
9718        #[inline]
9719        fn selector(&self) -> [u8; 4] {
9720            match self {
9721                Self::UPGRADE_INTERFACE_VERSION(_) => {
9722                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
9723                }
9724                Self::_hashBlsKey(_) => {
9725                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
9726                }
9727                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
9728                Self::claimValidatorExit(_) => {
9729                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
9730                }
9731                Self::claimWithdrawal(_) => {
9732                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
9733                }
9734                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
9735                Self::delegations(_) => {
9736                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
9737                }
9738                Self::deregisterValidator(_) => {
9739                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
9740                }
9741                Self::exitEscrowPeriod(_) => {
9742                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9743                }
9744                Self::getVersion(_) => {
9745                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
9746                }
9747                Self::initialize(_) => {
9748                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
9749                }
9750                Self::initializedAtBlock(_) => {
9751                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
9752                }
9753                Self::lightClient(_) => {
9754                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
9755                }
9756                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9757                Self::proxiableUUID(_) => {
9758                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
9759                }
9760                Self::registerValidator(_) => {
9761                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
9762                }
9763                Self::renounceOwnership(_) => {
9764                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9765                }
9766                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
9767                Self::transferOwnership(_) => {
9768                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9769                }
9770                Self::undelegate(_) => {
9771                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
9772                }
9773                Self::undelegations(_) => {
9774                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
9775                }
9776                Self::updateConsensusKeys(_) => {
9777                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
9778                }
9779                Self::upgradeToAndCall(_) => {
9780                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
9781                }
9782                Self::validatorExits(_) => {
9783                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
9784                }
9785                Self::validators(_) => {
9786                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
9787                }
9788            }
9789        }
9790        #[inline]
9791        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9792            Self::SELECTORS.get(i).copied()
9793        }
9794        #[inline]
9795        fn valid_selector(selector: [u8; 4]) -> bool {
9796            Self::SELECTORS.binary_search(&selector).is_ok()
9797        }
9798        #[inline]
9799        #[allow(non_snake_case)]
9800        fn abi_decode_raw(
9801            selector: [u8; 4],
9802            data: &[u8],
9803        ) -> alloy_sol_types::Result<Self> {
9804            static DECODE_SHIMS: &[fn(
9805                &[u8],
9806            ) -> alloy_sol_types::Result<StakeTableCalls>] = &[
9807                {
9808                    fn delegate(
9809                        data: &[u8],
9810                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9811                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9812                            .map(StakeTableCalls::delegate)
9813                    }
9814                    delegate
9815                },
9816                {
9817                    fn getVersion(
9818                        data: &[u8],
9819                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9820                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
9821                                data,
9822                            )
9823                            .map(StakeTableCalls::getVersion)
9824                    }
9825                    getVersion
9826                },
9827                {
9828                    fn registerValidator(
9829                        data: &[u8],
9830                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9831                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9832                                data,
9833                            )
9834                            .map(StakeTableCalls::registerValidator)
9835                    }
9836                    registerValidator
9837                },
9838                {
9839                    fn claimValidatorExit(
9840                        data: &[u8],
9841                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9842                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
9843                                data,
9844                            )
9845                            .map(StakeTableCalls::claimValidatorExit)
9846                    }
9847                    claimValidatorExit
9848                },
9849                {
9850                    fn initializedAtBlock(
9851                        data: &[u8],
9852                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9853                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
9854                                data,
9855                            )
9856                            .map(StakeTableCalls::initializedAtBlock)
9857                    }
9858                    initializedAtBlock
9859                },
9860                {
9861                    fn undelegate(
9862                        data: &[u8],
9863                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9864                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9865                                data,
9866                            )
9867                            .map(StakeTableCalls::undelegate)
9868                    }
9869                    undelegate
9870                },
9871                {
9872                    fn upgradeToAndCall(
9873                        data: &[u8],
9874                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9875                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
9876                                data,
9877                            )
9878                            .map(StakeTableCalls::upgradeToAndCall)
9879                    }
9880                    upgradeToAndCall
9881                },
9882                {
9883                    fn proxiableUUID(
9884                        data: &[u8],
9885                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9886                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
9887                                data,
9888                            )
9889                            .map(StakeTableCalls::proxiableUUID)
9890                    }
9891                    proxiableUUID
9892                },
9893                {
9894                    fn updateConsensusKeys(
9895                        data: &[u8],
9896                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9897                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
9898                                data,
9899                            )
9900                            .map(StakeTableCalls::updateConsensusKeys)
9901                    }
9902                    updateConsensusKeys
9903                },
9904                {
9905                    fn deregisterValidator(
9906                        data: &[u8],
9907                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9908                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9909                                data,
9910                            )
9911                            .map(StakeTableCalls::deregisterValidator)
9912                    }
9913                    deregisterValidator
9914                },
9915                {
9916                    fn renounceOwnership(
9917                        data: &[u8],
9918                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9919                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9920                                data,
9921                            )
9922                            .map(StakeTableCalls::renounceOwnership)
9923                    }
9924                    renounceOwnership
9925                },
9926                {
9927                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
9928                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9929                            .map(StakeTableCalls::owner)
9930                    }
9931                    owner
9932                },
9933                {
9934                    fn _hashBlsKey(
9935                        data: &[u8],
9936                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9937                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
9938                                data,
9939                            )
9940                            .map(StakeTableCalls::_hashBlsKey)
9941                    }
9942                    _hashBlsKey
9943                },
9944                {
9945                    fn exitEscrowPeriod(
9946                        data: &[u8],
9947                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9948                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
9949                                data,
9950                            )
9951                            .map(StakeTableCalls::exitEscrowPeriod)
9952                    }
9953                    exitEscrowPeriod
9954                },
9955                {
9956                    fn undelegations(
9957                        data: &[u8],
9958                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9959                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9960                                data,
9961                            )
9962                            .map(StakeTableCalls::undelegations)
9963                    }
9964                    undelegations
9965                },
9966                {
9967                    fn claimWithdrawal(
9968                        data: &[u8],
9969                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9970                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
9971                                data,
9972                            )
9973                            .map(StakeTableCalls::claimWithdrawal)
9974                    }
9975                    claimWithdrawal
9976                },
9977                {
9978                    fn UPGRADE_INTERFACE_VERSION(
9979                        data: &[u8],
9980                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9981                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
9982                                data,
9983                            )
9984                            .map(StakeTableCalls::UPGRADE_INTERFACE_VERSION)
9985                    }
9986                    UPGRADE_INTERFACE_VERSION
9987                },
9988                {
9989                    fn blsKeys(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
9990                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9991                            .map(StakeTableCalls::blsKeys)
9992                    }
9993                    blsKeys
9994                },
9995                {
9996                    fn lightClient(
9997                        data: &[u8],
9998                    ) -> alloy_sol_types::Result<StakeTableCalls> {
9999                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
10000                                data,
10001                            )
10002                            .map(StakeTableCalls::lightClient)
10003                    }
10004                    lightClient
10005                },
10006                {
10007                    fn validatorExits(
10008                        data: &[u8],
10009                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10010                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10011                                data,
10012                            )
10013                            .map(StakeTableCalls::validatorExits)
10014                    }
10015                    validatorExits
10016                },
10017                {
10018                    fn initialize(
10019                        data: &[u8],
10020                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10021                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10022                                data,
10023                            )
10024                            .map(StakeTableCalls::initialize)
10025                    }
10026                    initialize
10027                },
10028                {
10029                    fn delegations(
10030                        data: &[u8],
10031                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10032                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10033                                data,
10034                            )
10035                            .map(StakeTableCalls::delegations)
10036                    }
10037                    delegations
10038                },
10039                {
10040                    fn transferOwnership(
10041                        data: &[u8],
10042                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10043                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10044                                data,
10045                            )
10046                            .map(StakeTableCalls::transferOwnership)
10047                    }
10048                    transferOwnership
10049                },
10050                {
10051                    fn validators(
10052                        data: &[u8],
10053                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10054                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10055                                data,
10056                            )
10057                            .map(StakeTableCalls::validators)
10058                    }
10059                    validators
10060                },
10061                {
10062                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10063                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10064                            .map(StakeTableCalls::token)
10065                    }
10066                    token
10067                },
10068            ];
10069            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10070                return Err(
10071                    alloy_sol_types::Error::unknown_selector(
10072                        <Self as alloy_sol_types::SolInterface>::NAME,
10073                        selector,
10074                    ),
10075                );
10076            };
10077            DECODE_SHIMS[idx](data)
10078        }
10079        #[inline]
10080        #[allow(non_snake_case)]
10081        fn abi_decode_raw_validate(
10082            selector: [u8; 4],
10083            data: &[u8],
10084        ) -> alloy_sol_types::Result<Self> {
10085            static DECODE_VALIDATE_SHIMS: &[fn(
10086                &[u8],
10087            ) -> alloy_sol_types::Result<StakeTableCalls>] = &[
10088                {
10089                    fn delegate(
10090                        data: &[u8],
10091                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10092                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10093                                data,
10094                            )
10095                            .map(StakeTableCalls::delegate)
10096                    }
10097                    delegate
10098                },
10099                {
10100                    fn getVersion(
10101                        data: &[u8],
10102                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10103                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10104                                data,
10105                            )
10106                            .map(StakeTableCalls::getVersion)
10107                    }
10108                    getVersion
10109                },
10110                {
10111                    fn registerValidator(
10112                        data: &[u8],
10113                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10114                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10115                                data,
10116                            )
10117                            .map(StakeTableCalls::registerValidator)
10118                    }
10119                    registerValidator
10120                },
10121                {
10122                    fn claimValidatorExit(
10123                        data: &[u8],
10124                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10125                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10126                                data,
10127                            )
10128                            .map(StakeTableCalls::claimValidatorExit)
10129                    }
10130                    claimValidatorExit
10131                },
10132                {
10133                    fn initializedAtBlock(
10134                        data: &[u8],
10135                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10136                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10137                                data,
10138                            )
10139                            .map(StakeTableCalls::initializedAtBlock)
10140                    }
10141                    initializedAtBlock
10142                },
10143                {
10144                    fn undelegate(
10145                        data: &[u8],
10146                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10147                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10148                                data,
10149                            )
10150                            .map(StakeTableCalls::undelegate)
10151                    }
10152                    undelegate
10153                },
10154                {
10155                    fn upgradeToAndCall(
10156                        data: &[u8],
10157                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10158                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10159                                data,
10160                            )
10161                            .map(StakeTableCalls::upgradeToAndCall)
10162                    }
10163                    upgradeToAndCall
10164                },
10165                {
10166                    fn proxiableUUID(
10167                        data: &[u8],
10168                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10169                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10170                                data,
10171                            )
10172                            .map(StakeTableCalls::proxiableUUID)
10173                    }
10174                    proxiableUUID
10175                },
10176                {
10177                    fn updateConsensusKeys(
10178                        data: &[u8],
10179                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10180                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10181                                data,
10182                            )
10183                            .map(StakeTableCalls::updateConsensusKeys)
10184                    }
10185                    updateConsensusKeys
10186                },
10187                {
10188                    fn deregisterValidator(
10189                        data: &[u8],
10190                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10191                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10192                                data,
10193                            )
10194                            .map(StakeTableCalls::deregisterValidator)
10195                    }
10196                    deregisterValidator
10197                },
10198                {
10199                    fn renounceOwnership(
10200                        data: &[u8],
10201                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10202                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10203                                data,
10204                            )
10205                            .map(StakeTableCalls::renounceOwnership)
10206                    }
10207                    renounceOwnership
10208                },
10209                {
10210                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10211                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10212                                data,
10213                            )
10214                            .map(StakeTableCalls::owner)
10215                    }
10216                    owner
10217                },
10218                {
10219                    fn _hashBlsKey(
10220                        data: &[u8],
10221                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10222                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10223                                data,
10224                            )
10225                            .map(StakeTableCalls::_hashBlsKey)
10226                    }
10227                    _hashBlsKey
10228                },
10229                {
10230                    fn exitEscrowPeriod(
10231                        data: &[u8],
10232                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10233                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10234                                data,
10235                            )
10236                            .map(StakeTableCalls::exitEscrowPeriod)
10237                    }
10238                    exitEscrowPeriod
10239                },
10240                {
10241                    fn undelegations(
10242                        data: &[u8],
10243                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10244                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10245                                data,
10246                            )
10247                            .map(StakeTableCalls::undelegations)
10248                    }
10249                    undelegations
10250                },
10251                {
10252                    fn claimWithdrawal(
10253                        data: &[u8],
10254                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10255                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10256                                data,
10257                            )
10258                            .map(StakeTableCalls::claimWithdrawal)
10259                    }
10260                    claimWithdrawal
10261                },
10262                {
10263                    fn UPGRADE_INTERFACE_VERSION(
10264                        data: &[u8],
10265                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10266                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10267                                data,
10268                            )
10269                            .map(StakeTableCalls::UPGRADE_INTERFACE_VERSION)
10270                    }
10271                    UPGRADE_INTERFACE_VERSION
10272                },
10273                {
10274                    fn blsKeys(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10275                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10276                                data,
10277                            )
10278                            .map(StakeTableCalls::blsKeys)
10279                    }
10280                    blsKeys
10281                },
10282                {
10283                    fn lightClient(
10284                        data: &[u8],
10285                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10286                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10287                                data,
10288                            )
10289                            .map(StakeTableCalls::lightClient)
10290                    }
10291                    lightClient
10292                },
10293                {
10294                    fn validatorExits(
10295                        data: &[u8],
10296                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10297                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10298                                data,
10299                            )
10300                            .map(StakeTableCalls::validatorExits)
10301                    }
10302                    validatorExits
10303                },
10304                {
10305                    fn initialize(
10306                        data: &[u8],
10307                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10308                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10309                                data,
10310                            )
10311                            .map(StakeTableCalls::initialize)
10312                    }
10313                    initialize
10314                },
10315                {
10316                    fn delegations(
10317                        data: &[u8],
10318                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10319                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10320                                data,
10321                            )
10322                            .map(StakeTableCalls::delegations)
10323                    }
10324                    delegations
10325                },
10326                {
10327                    fn transferOwnership(
10328                        data: &[u8],
10329                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10330                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10331                                data,
10332                            )
10333                            .map(StakeTableCalls::transferOwnership)
10334                    }
10335                    transferOwnership
10336                },
10337                {
10338                    fn validators(
10339                        data: &[u8],
10340                    ) -> alloy_sol_types::Result<StakeTableCalls> {
10341                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10342                                data,
10343                            )
10344                            .map(StakeTableCalls::validators)
10345                    }
10346                    validators
10347                },
10348                {
10349                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableCalls> {
10350                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10351                                data,
10352                            )
10353                            .map(StakeTableCalls::token)
10354                    }
10355                    token
10356                },
10357            ];
10358            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10359                return Err(
10360                    alloy_sol_types::Error::unknown_selector(
10361                        <Self as alloy_sol_types::SolInterface>::NAME,
10362                        selector,
10363                    ),
10364                );
10365            };
10366            DECODE_VALIDATE_SHIMS[idx](data)
10367        }
10368        #[inline]
10369        fn abi_encoded_size(&self) -> usize {
10370            match self {
10371                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10372                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
10373                        inner,
10374                    )
10375                }
10376                Self::_hashBlsKey(inner) => {
10377                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
10378                        inner,
10379                    )
10380                }
10381                Self::blsKeys(inner) => {
10382                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10383                }
10384                Self::claimValidatorExit(inner) => {
10385                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
10386                        inner,
10387                    )
10388                }
10389                Self::claimWithdrawal(inner) => {
10390                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
10391                        inner,
10392                    )
10393                }
10394                Self::delegate(inner) => {
10395                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10396                }
10397                Self::delegations(inner) => {
10398                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10399                        inner,
10400                    )
10401                }
10402                Self::deregisterValidator(inner) => {
10403                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10404                        inner,
10405                    )
10406                }
10407                Self::exitEscrowPeriod(inner) => {
10408                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10409                        inner,
10410                    )
10411                }
10412                Self::getVersion(inner) => {
10413                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10414                }
10415                Self::initialize(inner) => {
10416                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10417                }
10418                Self::initializedAtBlock(inner) => {
10419                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
10420                        inner,
10421                    )
10422                }
10423                Self::lightClient(inner) => {
10424                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
10425                        inner,
10426                    )
10427                }
10428                Self::owner(inner) => {
10429                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10430                }
10431                Self::proxiableUUID(inner) => {
10432                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
10433                        inner,
10434                    )
10435                }
10436                Self::registerValidator(inner) => {
10437                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10438                        inner,
10439                    )
10440                }
10441                Self::renounceOwnership(inner) => {
10442                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10443                        inner,
10444                    )
10445                }
10446                Self::token(inner) => {
10447                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10448                }
10449                Self::transferOwnership(inner) => {
10450                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10451                        inner,
10452                    )
10453                }
10454                Self::undelegate(inner) => {
10455                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10456                }
10457                Self::undelegations(inner) => {
10458                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10459                        inner,
10460                    )
10461                }
10462                Self::updateConsensusKeys(inner) => {
10463                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
10464                        inner,
10465                    )
10466                }
10467                Self::upgradeToAndCall(inner) => {
10468                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
10469                        inner,
10470                    )
10471                }
10472                Self::validatorExits(inner) => {
10473                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10474                        inner,
10475                    )
10476                }
10477                Self::validators(inner) => {
10478                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10479                }
10480            }
10481        }
10482        #[inline]
10483        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10484            match self {
10485                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10486                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
10487                        inner,
10488                        out,
10489                    )
10490                }
10491                Self::_hashBlsKey(inner) => {
10492                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
10493                        inner,
10494                        out,
10495                    )
10496                }
10497                Self::blsKeys(inner) => {
10498                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10499                }
10500                Self::claimValidatorExit(inner) => {
10501                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
10502                        inner,
10503                        out,
10504                    )
10505                }
10506                Self::claimWithdrawal(inner) => {
10507                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
10508                        inner,
10509                        out,
10510                    )
10511                }
10512                Self::delegate(inner) => {
10513                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10514                        inner,
10515                        out,
10516                    )
10517                }
10518                Self::delegations(inner) => {
10519                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10520                        inner,
10521                        out,
10522                    )
10523                }
10524                Self::deregisterValidator(inner) => {
10525                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10526                        inner,
10527                        out,
10528                    )
10529                }
10530                Self::exitEscrowPeriod(inner) => {
10531                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10532                        inner,
10533                        out,
10534                    )
10535                }
10536                Self::getVersion(inner) => {
10537                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
10538                        inner,
10539                        out,
10540                    )
10541                }
10542                Self::initialize(inner) => {
10543                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10544                        inner,
10545                        out,
10546                    )
10547                }
10548                Self::initializedAtBlock(inner) => {
10549                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
10550                        inner,
10551                        out,
10552                    )
10553                }
10554                Self::lightClient(inner) => {
10555                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
10556                        inner,
10557                        out,
10558                    )
10559                }
10560                Self::owner(inner) => {
10561                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10562                }
10563                Self::proxiableUUID(inner) => {
10564                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
10565                        inner,
10566                        out,
10567                    )
10568                }
10569                Self::registerValidator(inner) => {
10570                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10571                        inner,
10572                        out,
10573                    )
10574                }
10575                Self::renounceOwnership(inner) => {
10576                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10577                        inner,
10578                        out,
10579                    )
10580                }
10581                Self::token(inner) => {
10582                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10583                }
10584                Self::transferOwnership(inner) => {
10585                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10586                        inner,
10587                        out,
10588                    )
10589                }
10590                Self::undelegate(inner) => {
10591                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10592                        inner,
10593                        out,
10594                    )
10595                }
10596                Self::undelegations(inner) => {
10597                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10598                        inner,
10599                        out,
10600                    )
10601                }
10602                Self::updateConsensusKeys(inner) => {
10603                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
10604                        inner,
10605                        out,
10606                    )
10607                }
10608                Self::upgradeToAndCall(inner) => {
10609                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
10610                        inner,
10611                        out,
10612                    )
10613                }
10614                Self::validatorExits(inner) => {
10615                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10616                        inner,
10617                        out,
10618                    )
10619                }
10620                Self::validators(inner) => {
10621                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10622                        inner,
10623                        out,
10624                    )
10625                }
10626            }
10627        }
10628    }
10629    ///Container for all the [`StakeTable`](self) custom errors.
10630    #[derive(serde::Serialize, serde::Deserialize)]
10631    #[derive(Debug, PartialEq, Eq, Hash)]
10632    pub enum StakeTableErrors {
10633        #[allow(missing_docs)]
10634        AddressEmptyCode(AddressEmptyCode),
10635        #[allow(missing_docs)]
10636        BLSSigVerificationFailed(BLSSigVerificationFailed),
10637        #[allow(missing_docs)]
10638        BN254PairingProdFailed(BN254PairingProdFailed),
10639        #[allow(missing_docs)]
10640        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
10641        #[allow(missing_docs)]
10642        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
10643        #[allow(missing_docs)]
10644        ERC1967NonPayable(ERC1967NonPayable),
10645        #[allow(missing_docs)]
10646        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
10647        #[allow(missing_docs)]
10648        FailedInnerCall(FailedInnerCall),
10649        #[allow(missing_docs)]
10650        InsufficientAllowance(InsufficientAllowance),
10651        #[allow(missing_docs)]
10652        InsufficientBalance(InsufficientBalance),
10653        #[allow(missing_docs)]
10654        InvalidCommission(InvalidCommission),
10655        #[allow(missing_docs)]
10656        InvalidG1(InvalidG1),
10657        #[allow(missing_docs)]
10658        InvalidInitialization(InvalidInitialization),
10659        #[allow(missing_docs)]
10660        InvalidSchnorrVK(InvalidSchnorrVK),
10661        #[allow(missing_docs)]
10662        NotInitializing(NotInitializing),
10663        #[allow(missing_docs)]
10664        NothingToWithdraw(NothingToWithdraw),
10665        #[allow(missing_docs)]
10666        OwnableInvalidOwner(OwnableInvalidOwner),
10667        #[allow(missing_docs)]
10668        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
10669        #[allow(missing_docs)]
10670        PowPrecompileFailed(PowPrecompileFailed),
10671        #[allow(missing_docs)]
10672        PrematureWithdrawal(PrematureWithdrawal),
10673        #[allow(missing_docs)]
10674        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
10675        #[allow(missing_docs)]
10676        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
10677        #[allow(missing_docs)]
10678        UndelegationAlreadyExists(UndelegationAlreadyExists),
10679        #[allow(missing_docs)]
10680        ValidatorAlreadyExited(ValidatorAlreadyExited),
10681        #[allow(missing_docs)]
10682        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
10683        #[allow(missing_docs)]
10684        ValidatorInactive(ValidatorInactive),
10685        #[allow(missing_docs)]
10686        ValidatorNotExited(ValidatorNotExited),
10687        #[allow(missing_docs)]
10688        ZeroAddress(ZeroAddress),
10689        #[allow(missing_docs)]
10690        ZeroAmount(ZeroAmount),
10691    }
10692    #[automatically_derived]
10693    impl StakeTableErrors {
10694        /// All the selectors of this enum.
10695        ///
10696        /// Note that the selectors might not be in the same order as the variants.
10697        /// No guarantees are made about the order of the selectors.
10698        ///
10699        /// Prefer using `SolInterface` methods instead.
10700        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10701            [1u8, 181u8, 20u8, 174u8],
10702            [6u8, 207u8, 67u8, 143u8],
10703            [12u8, 237u8, 62u8, 80u8],
10704            [17u8, 140u8, 218u8, 167u8],
10705            [20u8, 37u8, 234u8, 66u8],
10706            [30u8, 79u8, 189u8, 247u8],
10707            [31u8, 42u8, 32u8, 5u8],
10708            [42u8, 27u8, 45u8, 216u8],
10709            [50u8, 116u8, 250u8, 100u8],
10710            [76u8, 156u8, 140u8, 227u8],
10711            [80u8, 138u8, 121u8, 63u8],
10712            [90u8, 119u8, 67u8, 87u8],
10713            [146u8, 102u8, 83u8, 81u8],
10714            [153u8, 115u8, 247u8, 216u8],
10715            [153u8, 150u8, 179u8, 21u8],
10716            [158u8, 120u8, 209u8, 76u8],
10717            [170u8, 29u8, 73u8, 164u8],
10718            [179u8, 152u8, 151u8, 159u8],
10719            [181u8, 126u8, 33u8, 223u8],
10720            [194u8, 6u8, 51u8, 79u8],
10721            [208u8, 208u8, 79u8, 96u8],
10722            [212u8, 35u8, 164u8, 241u8],
10723            [215u8, 230u8, 188u8, 248u8],
10724            [217u8, 46u8, 35u8, 61u8],
10725            [220u8, 129u8, 219u8, 133u8],
10726            [224u8, 124u8, 141u8, 186u8],
10727            [234u8, 180u8, 169u8, 99u8],
10728            [242u8, 83u8, 20u8, 166u8],
10729            [249u8, 46u8, 232u8, 169u8],
10730        ];
10731    }
10732    #[automatically_derived]
10733    impl alloy_sol_types::SolInterface for StakeTableErrors {
10734        const NAME: &'static str = "StakeTableErrors";
10735        const MIN_DATA_LENGTH: usize = 0usize;
10736        const COUNT: usize = 29usize;
10737        #[inline]
10738        fn selector(&self) -> [u8; 4] {
10739            match self {
10740                Self::AddressEmptyCode(_) => {
10741                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
10742                }
10743                Self::BLSSigVerificationFailed(_) => {
10744                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
10745                }
10746                Self::BN254PairingProdFailed(_) => {
10747                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
10748                }
10749                Self::BlsKeyAlreadyUsed(_) => {
10750                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
10751                }
10752                Self::ERC1967InvalidImplementation(_) => {
10753                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
10754                }
10755                Self::ERC1967NonPayable(_) => {
10756                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
10757                }
10758                Self::ExitEscrowPeriodInvalid(_) => {
10759                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
10760                }
10761                Self::FailedInnerCall(_) => {
10762                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
10763                }
10764                Self::InsufficientAllowance(_) => {
10765                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
10766                }
10767                Self::InsufficientBalance(_) => {
10768                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
10769                }
10770                Self::InvalidCommission(_) => {
10771                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
10772                }
10773                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
10774                Self::InvalidInitialization(_) => {
10775                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
10776                }
10777                Self::InvalidSchnorrVK(_) => {
10778                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
10779                }
10780                Self::NotInitializing(_) => {
10781                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
10782                }
10783                Self::NothingToWithdraw(_) => {
10784                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
10785                }
10786                Self::OwnableInvalidOwner(_) => {
10787                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
10788                }
10789                Self::OwnableUnauthorizedAccount(_) => {
10790                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
10791                }
10792                Self::PowPrecompileFailed(_) => {
10793                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
10794                }
10795                Self::PrematureWithdrawal(_) => {
10796                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
10797                }
10798                Self::UUPSUnauthorizedCallContext(_) => {
10799                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
10800                }
10801                Self::UUPSUnsupportedProxiableUUID(_) => {
10802                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
10803                }
10804                Self::UndelegationAlreadyExists(_) => {
10805                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
10806                }
10807                Self::ValidatorAlreadyExited(_) => {
10808                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
10809                }
10810                Self::ValidatorAlreadyRegistered(_) => {
10811                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
10812                }
10813                Self::ValidatorInactive(_) => {
10814                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
10815                }
10816                Self::ValidatorNotExited(_) => {
10817                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
10818                }
10819                Self::ZeroAddress(_) => {
10820                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
10821                }
10822                Self::ZeroAmount(_) => {
10823                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
10824                }
10825            }
10826        }
10827        #[inline]
10828        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10829            Self::SELECTORS.get(i).copied()
10830        }
10831        #[inline]
10832        fn valid_selector(selector: [u8; 4]) -> bool {
10833            Self::SELECTORS.binary_search(&selector).is_ok()
10834        }
10835        #[inline]
10836        #[allow(non_snake_case)]
10837        fn abi_decode_raw(
10838            selector: [u8; 4],
10839            data: &[u8],
10840        ) -> alloy_sol_types::Result<Self> {
10841            static DECODE_SHIMS: &[fn(
10842                &[u8],
10843            ) -> alloy_sol_types::Result<StakeTableErrors>] = &[
10844                {
10845                    fn BlsKeyAlreadyUsed(
10846                        data: &[u8],
10847                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10848                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
10849                                data,
10850                            )
10851                            .map(StakeTableErrors::BlsKeyAlreadyUsed)
10852                    }
10853                    BlsKeyAlreadyUsed
10854                },
10855                {
10856                    fn InvalidSchnorrVK(
10857                        data: &[u8],
10858                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10859                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
10860                                data,
10861                            )
10862                            .map(StakeTableErrors::InvalidSchnorrVK)
10863                    }
10864                    InvalidSchnorrVK
10865                },
10866                {
10867                    fn BLSSigVerificationFailed(
10868                        data: &[u8],
10869                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10870                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
10871                                data,
10872                            )
10873                            .map(StakeTableErrors::BLSSigVerificationFailed)
10874                    }
10875                    BLSSigVerificationFailed
10876                },
10877                {
10878                    fn OwnableUnauthorizedAccount(
10879                        data: &[u8],
10880                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10881                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
10882                                data,
10883                            )
10884                            .map(StakeTableErrors::OwnableUnauthorizedAccount)
10885                    }
10886                    OwnableUnauthorizedAccount
10887                },
10888                {
10889                    fn FailedInnerCall(
10890                        data: &[u8],
10891                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10892                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
10893                                data,
10894                            )
10895                            .map(StakeTableErrors::FailedInnerCall)
10896                    }
10897                    FailedInnerCall
10898                },
10899                {
10900                    fn OwnableInvalidOwner(
10901                        data: &[u8],
10902                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10903                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
10904                                data,
10905                            )
10906                            .map(StakeTableErrors::OwnableInvalidOwner)
10907                    }
10908                    OwnableInvalidOwner
10909                },
10910                {
10911                    fn ZeroAmount(
10912                        data: &[u8],
10913                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10914                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data)
10915                            .map(StakeTableErrors::ZeroAmount)
10916                    }
10917                    ZeroAmount
10918                },
10919                {
10920                    fn InsufficientAllowance(
10921                        data: &[u8],
10922                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10923                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
10924                                data,
10925                            )
10926                            .map(StakeTableErrors::InsufficientAllowance)
10927                    }
10928                    InsufficientAllowance
10929                },
10930                {
10931                    fn PowPrecompileFailed(
10932                        data: &[u8],
10933                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10934                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
10935                                data,
10936                            )
10937                            .map(StakeTableErrors::PowPrecompileFailed)
10938                    }
10939                    PowPrecompileFailed
10940                },
10941                {
10942                    fn ERC1967InvalidImplementation(
10943                        data: &[u8],
10944                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10945                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
10946                                data,
10947                            )
10948                            .map(StakeTableErrors::ERC1967InvalidImplementation)
10949                    }
10950                    ERC1967InvalidImplementation
10951                },
10952                {
10953                    fn ValidatorInactive(
10954                        data: &[u8],
10955                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10956                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
10957                                data,
10958                            )
10959                            .map(StakeTableErrors::ValidatorInactive)
10960                    }
10961                    ValidatorInactive
10962                },
10963                {
10964                    fn PrematureWithdrawal(
10965                        data: &[u8],
10966                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10967                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
10968                                data,
10969                            )
10970                            .map(StakeTableErrors::PrematureWithdrawal)
10971                    }
10972                    PrematureWithdrawal
10973                },
10974                {
10975                    fn InsufficientBalance(
10976                        data: &[u8],
10977                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10978                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
10979                                data,
10980                            )
10981                            .map(StakeTableErrors::InsufficientBalance)
10982                    }
10983                    InsufficientBalance
10984                },
10985                {
10986                    fn ValidatorAlreadyRegistered(
10987                        data: &[u8],
10988                    ) -> alloy_sol_types::Result<StakeTableErrors> {
10989                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
10990                                data,
10991                            )
10992                            .map(StakeTableErrors::ValidatorAlreadyRegistered)
10993                    }
10994                    ValidatorAlreadyRegistered
10995                },
10996                {
10997                    fn AddressEmptyCode(
10998                        data: &[u8],
10999                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11000                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
11001                                data,
11002                            )
11003                            .map(StakeTableErrors::AddressEmptyCode)
11004                    }
11005                    AddressEmptyCode
11006                },
11007                {
11008                    fn InvalidG1(
11009                        data: &[u8],
11010                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11011                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
11012                            .map(StakeTableErrors::InvalidG1)
11013                    }
11014                    InvalidG1
11015                },
11016                {
11017                    fn UUPSUnsupportedProxiableUUID(
11018                        data: &[u8],
11019                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11020                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
11021                                data,
11022                            )
11023                            .map(StakeTableErrors::UUPSUnsupportedProxiableUUID)
11024                    }
11025                    UUPSUnsupportedProxiableUUID
11026                },
11027                {
11028                    fn ERC1967NonPayable(
11029                        data: &[u8],
11030                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11031                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
11032                                data,
11033                            )
11034                            .map(StakeTableErrors::ERC1967NonPayable)
11035                    }
11036                    ERC1967NonPayable
11037                },
11038                {
11039                    fn ExitEscrowPeriodInvalid(
11040                        data: &[u8],
11041                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11042                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
11043                                data,
11044                            )
11045                            .map(StakeTableErrors::ExitEscrowPeriodInvalid)
11046                    }
11047                    ExitEscrowPeriodInvalid
11048                },
11049                {
11050                    fn BN254PairingProdFailed(
11051                        data: &[u8],
11052                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11053                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
11054                                data,
11055                            )
11056                            .map(StakeTableErrors::BN254PairingProdFailed)
11057                    }
11058                    BN254PairingProdFailed
11059                },
11060                {
11061                    fn NothingToWithdraw(
11062                        data: &[u8],
11063                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11064                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
11065                                data,
11066                            )
11067                            .map(StakeTableErrors::NothingToWithdraw)
11068                    }
11069                    NothingToWithdraw
11070                },
11071                {
11072                    fn UndelegationAlreadyExists(
11073                        data: &[u8],
11074                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11075                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
11076                                data,
11077                            )
11078                            .map(StakeTableErrors::UndelegationAlreadyExists)
11079                    }
11080                    UndelegationAlreadyExists
11081                },
11082                {
11083                    fn NotInitializing(
11084                        data: &[u8],
11085                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11086                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
11087                                data,
11088                            )
11089                            .map(StakeTableErrors::NotInitializing)
11090                    }
11091                    NotInitializing
11092                },
11093                {
11094                    fn ZeroAddress(
11095                        data: &[u8],
11096                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11097                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
11098                            .map(StakeTableErrors::ZeroAddress)
11099                    }
11100                    ZeroAddress
11101                },
11102                {
11103                    fn InvalidCommission(
11104                        data: &[u8],
11105                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11106                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
11107                                data,
11108                            )
11109                            .map(StakeTableErrors::InvalidCommission)
11110                    }
11111                    InvalidCommission
11112                },
11113                {
11114                    fn UUPSUnauthorizedCallContext(
11115                        data: &[u8],
11116                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11117                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
11118                                data,
11119                            )
11120                            .map(StakeTableErrors::UUPSUnauthorizedCallContext)
11121                    }
11122                    UUPSUnauthorizedCallContext
11123                },
11124                {
11125                    fn ValidatorAlreadyExited(
11126                        data: &[u8],
11127                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11128                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
11129                                data,
11130                            )
11131                            .map(StakeTableErrors::ValidatorAlreadyExited)
11132                    }
11133                    ValidatorAlreadyExited
11134                },
11135                {
11136                    fn ValidatorNotExited(
11137                        data: &[u8],
11138                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11139                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
11140                                data,
11141                            )
11142                            .map(StakeTableErrors::ValidatorNotExited)
11143                    }
11144                    ValidatorNotExited
11145                },
11146                {
11147                    fn InvalidInitialization(
11148                        data: &[u8],
11149                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11150                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
11151                                data,
11152                            )
11153                            .map(StakeTableErrors::InvalidInitialization)
11154                    }
11155                    InvalidInitialization
11156                },
11157            ];
11158            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11159                return Err(
11160                    alloy_sol_types::Error::unknown_selector(
11161                        <Self as alloy_sol_types::SolInterface>::NAME,
11162                        selector,
11163                    ),
11164                );
11165            };
11166            DECODE_SHIMS[idx](data)
11167        }
11168        #[inline]
11169        #[allow(non_snake_case)]
11170        fn abi_decode_raw_validate(
11171            selector: [u8; 4],
11172            data: &[u8],
11173        ) -> alloy_sol_types::Result<Self> {
11174            static DECODE_VALIDATE_SHIMS: &[fn(
11175                &[u8],
11176            ) -> alloy_sol_types::Result<StakeTableErrors>] = &[
11177                {
11178                    fn BlsKeyAlreadyUsed(
11179                        data: &[u8],
11180                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11181                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11182                                data,
11183                            )
11184                            .map(StakeTableErrors::BlsKeyAlreadyUsed)
11185                    }
11186                    BlsKeyAlreadyUsed
11187                },
11188                {
11189                    fn InvalidSchnorrVK(
11190                        data: &[u8],
11191                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11192                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
11193                                data,
11194                            )
11195                            .map(StakeTableErrors::InvalidSchnorrVK)
11196                    }
11197                    InvalidSchnorrVK
11198                },
11199                {
11200                    fn BLSSigVerificationFailed(
11201                        data: &[u8],
11202                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11203                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11204                                data,
11205                            )
11206                            .map(StakeTableErrors::BLSSigVerificationFailed)
11207                    }
11208                    BLSSigVerificationFailed
11209                },
11210                {
11211                    fn OwnableUnauthorizedAccount(
11212                        data: &[u8],
11213                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11214                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
11215                                data,
11216                            )
11217                            .map(StakeTableErrors::OwnableUnauthorizedAccount)
11218                    }
11219                    OwnableUnauthorizedAccount
11220                },
11221                {
11222                    fn FailedInnerCall(
11223                        data: &[u8],
11224                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11225                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
11226                                data,
11227                            )
11228                            .map(StakeTableErrors::FailedInnerCall)
11229                    }
11230                    FailedInnerCall
11231                },
11232                {
11233                    fn OwnableInvalidOwner(
11234                        data: &[u8],
11235                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11236                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
11237                                data,
11238                            )
11239                            .map(StakeTableErrors::OwnableInvalidOwner)
11240                    }
11241                    OwnableInvalidOwner
11242                },
11243                {
11244                    fn ZeroAmount(
11245                        data: &[u8],
11246                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11247                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
11248                                data,
11249                            )
11250                            .map(StakeTableErrors::ZeroAmount)
11251                    }
11252                    ZeroAmount
11253                },
11254                {
11255                    fn InsufficientAllowance(
11256                        data: &[u8],
11257                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11258                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_validate(
11259                                data,
11260                            )
11261                            .map(StakeTableErrors::InsufficientAllowance)
11262                    }
11263                    InsufficientAllowance
11264                },
11265                {
11266                    fn PowPrecompileFailed(
11267                        data: &[u8],
11268                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11269                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11270                                data,
11271                            )
11272                            .map(StakeTableErrors::PowPrecompileFailed)
11273                    }
11274                    PowPrecompileFailed
11275                },
11276                {
11277                    fn ERC1967InvalidImplementation(
11278                        data: &[u8],
11279                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11280                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
11281                                data,
11282                            )
11283                            .map(StakeTableErrors::ERC1967InvalidImplementation)
11284                    }
11285                    ERC1967InvalidImplementation
11286                },
11287                {
11288                    fn ValidatorInactive(
11289                        data: &[u8],
11290                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11291                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_validate(
11292                                data,
11293                            )
11294                            .map(StakeTableErrors::ValidatorInactive)
11295                    }
11296                    ValidatorInactive
11297                },
11298                {
11299                    fn PrematureWithdrawal(
11300                        data: &[u8],
11301                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11302                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_validate(
11303                                data,
11304                            )
11305                            .map(StakeTableErrors::PrematureWithdrawal)
11306                    }
11307                    PrematureWithdrawal
11308                },
11309                {
11310                    fn InsufficientBalance(
11311                        data: &[u8],
11312                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11313                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
11314                                data,
11315                            )
11316                            .map(StakeTableErrors::InsufficientBalance)
11317                    }
11318                    InsufficientBalance
11319                },
11320                {
11321                    fn ValidatorAlreadyRegistered(
11322                        data: &[u8],
11323                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11324                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
11325                                data,
11326                            )
11327                            .map(StakeTableErrors::ValidatorAlreadyRegistered)
11328                    }
11329                    ValidatorAlreadyRegistered
11330                },
11331                {
11332                    fn AddressEmptyCode(
11333                        data: &[u8],
11334                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11335                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
11336                                data,
11337                            )
11338                            .map(StakeTableErrors::AddressEmptyCode)
11339                    }
11340                    AddressEmptyCode
11341                },
11342                {
11343                    fn InvalidG1(
11344                        data: &[u8],
11345                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11346                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
11347                                data,
11348                            )
11349                            .map(StakeTableErrors::InvalidG1)
11350                    }
11351                    InvalidG1
11352                },
11353                {
11354                    fn UUPSUnsupportedProxiableUUID(
11355                        data: &[u8],
11356                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11357                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
11358                                data,
11359                            )
11360                            .map(StakeTableErrors::UUPSUnsupportedProxiableUUID)
11361                    }
11362                    UUPSUnsupportedProxiableUUID
11363                },
11364                {
11365                    fn ERC1967NonPayable(
11366                        data: &[u8],
11367                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11368                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
11369                                data,
11370                            )
11371                            .map(StakeTableErrors::ERC1967NonPayable)
11372                    }
11373                    ERC1967NonPayable
11374                },
11375                {
11376                    fn ExitEscrowPeriodInvalid(
11377                        data: &[u8],
11378                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11379                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_validate(
11380                                data,
11381                            )
11382                            .map(StakeTableErrors::ExitEscrowPeriodInvalid)
11383                    }
11384                    ExitEscrowPeriodInvalid
11385                },
11386                {
11387                    fn BN254PairingProdFailed(
11388                        data: &[u8],
11389                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11390                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
11391                                data,
11392                            )
11393                            .map(StakeTableErrors::BN254PairingProdFailed)
11394                    }
11395                    BN254PairingProdFailed
11396                },
11397                {
11398                    fn NothingToWithdraw(
11399                        data: &[u8],
11400                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11401                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_validate(
11402                                data,
11403                            )
11404                            .map(StakeTableErrors::NothingToWithdraw)
11405                    }
11406                    NothingToWithdraw
11407                },
11408                {
11409                    fn UndelegationAlreadyExists(
11410                        data: &[u8],
11411                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11412                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
11413                                data,
11414                            )
11415                            .map(StakeTableErrors::UndelegationAlreadyExists)
11416                    }
11417                    UndelegationAlreadyExists
11418                },
11419                {
11420                    fn NotInitializing(
11421                        data: &[u8],
11422                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11423                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
11424                                data,
11425                            )
11426                            .map(StakeTableErrors::NotInitializing)
11427                    }
11428                    NotInitializing
11429                },
11430                {
11431                    fn ZeroAddress(
11432                        data: &[u8],
11433                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11434                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
11435                                data,
11436                            )
11437                            .map(StakeTableErrors::ZeroAddress)
11438                    }
11439                    ZeroAddress
11440                },
11441                {
11442                    fn InvalidCommission(
11443                        data: &[u8],
11444                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11445                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_validate(
11446                                data,
11447                            )
11448                            .map(StakeTableErrors::InvalidCommission)
11449                    }
11450                    InvalidCommission
11451                },
11452                {
11453                    fn UUPSUnauthorizedCallContext(
11454                        data: &[u8],
11455                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11456                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
11457                                data,
11458                            )
11459                            .map(StakeTableErrors::UUPSUnauthorizedCallContext)
11460                    }
11461                    UUPSUnauthorizedCallContext
11462                },
11463                {
11464                    fn ValidatorAlreadyExited(
11465                        data: &[u8],
11466                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11467                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
11468                                data,
11469                            )
11470                            .map(StakeTableErrors::ValidatorAlreadyExited)
11471                    }
11472                    ValidatorAlreadyExited
11473                },
11474                {
11475                    fn ValidatorNotExited(
11476                        data: &[u8],
11477                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11478                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
11479                                data,
11480                            )
11481                            .map(StakeTableErrors::ValidatorNotExited)
11482                    }
11483                    ValidatorNotExited
11484                },
11485                {
11486                    fn InvalidInitialization(
11487                        data: &[u8],
11488                    ) -> alloy_sol_types::Result<StakeTableErrors> {
11489                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
11490                                data,
11491                            )
11492                            .map(StakeTableErrors::InvalidInitialization)
11493                    }
11494                    InvalidInitialization
11495                },
11496            ];
11497            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11498                return Err(
11499                    alloy_sol_types::Error::unknown_selector(
11500                        <Self as alloy_sol_types::SolInterface>::NAME,
11501                        selector,
11502                    ),
11503                );
11504            };
11505            DECODE_VALIDATE_SHIMS[idx](data)
11506        }
11507        #[inline]
11508        fn abi_encoded_size(&self) -> usize {
11509            match self {
11510                Self::AddressEmptyCode(inner) => {
11511                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
11512                        inner,
11513                    )
11514                }
11515                Self::BLSSigVerificationFailed(inner) => {
11516                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
11517                        inner,
11518                    )
11519                }
11520                Self::BN254PairingProdFailed(inner) => {
11521                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
11522                        inner,
11523                    )
11524                }
11525                Self::BlsKeyAlreadyUsed(inner) => {
11526                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
11527                        inner,
11528                    )
11529                }
11530                Self::ERC1967InvalidImplementation(inner) => {
11531                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
11532                        inner,
11533                    )
11534                }
11535                Self::ERC1967NonPayable(inner) => {
11536                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
11537                        inner,
11538                    )
11539                }
11540                Self::ExitEscrowPeriodInvalid(inner) => {
11541                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
11542                        inner,
11543                    )
11544                }
11545                Self::FailedInnerCall(inner) => {
11546                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
11547                        inner,
11548                    )
11549                }
11550                Self::InsufficientAllowance(inner) => {
11551                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
11552                        inner,
11553                    )
11554                }
11555                Self::InsufficientBalance(inner) => {
11556                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
11557                        inner,
11558                    )
11559                }
11560                Self::InvalidCommission(inner) => {
11561                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
11562                        inner,
11563                    )
11564                }
11565                Self::InvalidG1(inner) => {
11566                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
11567                }
11568                Self::InvalidInitialization(inner) => {
11569                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
11570                        inner,
11571                    )
11572                }
11573                Self::InvalidSchnorrVK(inner) => {
11574                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
11575                        inner,
11576                    )
11577                }
11578                Self::NotInitializing(inner) => {
11579                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
11580                        inner,
11581                    )
11582                }
11583                Self::NothingToWithdraw(inner) => {
11584                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
11585                        inner,
11586                    )
11587                }
11588                Self::OwnableInvalidOwner(inner) => {
11589                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
11590                        inner,
11591                    )
11592                }
11593                Self::OwnableUnauthorizedAccount(inner) => {
11594                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
11595                        inner,
11596                    )
11597                }
11598                Self::PowPrecompileFailed(inner) => {
11599                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
11600                        inner,
11601                    )
11602                }
11603                Self::PrematureWithdrawal(inner) => {
11604                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
11605                        inner,
11606                    )
11607                }
11608                Self::UUPSUnauthorizedCallContext(inner) => {
11609                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
11610                        inner,
11611                    )
11612                }
11613                Self::UUPSUnsupportedProxiableUUID(inner) => {
11614                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
11615                        inner,
11616                    )
11617                }
11618                Self::UndelegationAlreadyExists(inner) => {
11619                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
11620                        inner,
11621                    )
11622                }
11623                Self::ValidatorAlreadyExited(inner) => {
11624                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
11625                        inner,
11626                    )
11627                }
11628                Self::ValidatorAlreadyRegistered(inner) => {
11629                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
11630                        inner,
11631                    )
11632                }
11633                Self::ValidatorInactive(inner) => {
11634                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
11635                        inner,
11636                    )
11637                }
11638                Self::ValidatorNotExited(inner) => {
11639                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
11640                        inner,
11641                    )
11642                }
11643                Self::ZeroAddress(inner) => {
11644                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
11645                }
11646                Self::ZeroAmount(inner) => {
11647                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
11648                }
11649            }
11650        }
11651        #[inline]
11652        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11653            match self {
11654                Self::AddressEmptyCode(inner) => {
11655                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
11656                        inner,
11657                        out,
11658                    )
11659                }
11660                Self::BLSSigVerificationFailed(inner) => {
11661                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
11662                        inner,
11663                        out,
11664                    )
11665                }
11666                Self::BN254PairingProdFailed(inner) => {
11667                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
11668                        inner,
11669                        out,
11670                    )
11671                }
11672                Self::BlsKeyAlreadyUsed(inner) => {
11673                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
11674                        inner,
11675                        out,
11676                    )
11677                }
11678                Self::ERC1967InvalidImplementation(inner) => {
11679                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
11680                        inner,
11681                        out,
11682                    )
11683                }
11684                Self::ERC1967NonPayable(inner) => {
11685                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
11686                        inner,
11687                        out,
11688                    )
11689                }
11690                Self::ExitEscrowPeriodInvalid(inner) => {
11691                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
11692                        inner,
11693                        out,
11694                    )
11695                }
11696                Self::FailedInnerCall(inner) => {
11697                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
11698                        inner,
11699                        out,
11700                    )
11701                }
11702                Self::InsufficientAllowance(inner) => {
11703                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
11704                        inner,
11705                        out,
11706                    )
11707                }
11708                Self::InsufficientBalance(inner) => {
11709                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
11710                        inner,
11711                        out,
11712                    )
11713                }
11714                Self::InvalidCommission(inner) => {
11715                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
11716                        inner,
11717                        out,
11718                    )
11719                }
11720                Self::InvalidG1(inner) => {
11721                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
11722                }
11723                Self::InvalidInitialization(inner) => {
11724                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
11725                        inner,
11726                        out,
11727                    )
11728                }
11729                Self::InvalidSchnorrVK(inner) => {
11730                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
11731                        inner,
11732                        out,
11733                    )
11734                }
11735                Self::NotInitializing(inner) => {
11736                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
11737                        inner,
11738                        out,
11739                    )
11740                }
11741                Self::NothingToWithdraw(inner) => {
11742                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
11743                        inner,
11744                        out,
11745                    )
11746                }
11747                Self::OwnableInvalidOwner(inner) => {
11748                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
11749                        inner,
11750                        out,
11751                    )
11752                }
11753                Self::OwnableUnauthorizedAccount(inner) => {
11754                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
11755                        inner,
11756                        out,
11757                    )
11758                }
11759                Self::PowPrecompileFailed(inner) => {
11760                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
11761                        inner,
11762                        out,
11763                    )
11764                }
11765                Self::PrematureWithdrawal(inner) => {
11766                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
11767                        inner,
11768                        out,
11769                    )
11770                }
11771                Self::UUPSUnauthorizedCallContext(inner) => {
11772                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
11773                        inner,
11774                        out,
11775                    )
11776                }
11777                Self::UUPSUnsupportedProxiableUUID(inner) => {
11778                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
11779                        inner,
11780                        out,
11781                    )
11782                }
11783                Self::UndelegationAlreadyExists(inner) => {
11784                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
11785                        inner,
11786                        out,
11787                    )
11788                }
11789                Self::ValidatorAlreadyExited(inner) => {
11790                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
11791                        inner,
11792                        out,
11793                    )
11794                }
11795                Self::ValidatorAlreadyRegistered(inner) => {
11796                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
11797                        inner,
11798                        out,
11799                    )
11800                }
11801                Self::ValidatorInactive(inner) => {
11802                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
11803                        inner,
11804                        out,
11805                    )
11806                }
11807                Self::ValidatorNotExited(inner) => {
11808                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
11809                        inner,
11810                        out,
11811                    )
11812                }
11813                Self::ZeroAddress(inner) => {
11814                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
11815                        inner,
11816                        out,
11817                    )
11818                }
11819                Self::ZeroAmount(inner) => {
11820                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
11821                }
11822            }
11823        }
11824    }
11825    ///Container for all the [`StakeTable`](self) events.
11826    #[derive(serde::Serialize, serde::Deserialize)]
11827    #[derive()]
11828    pub enum StakeTableEvents {
11829        #[allow(missing_docs)]
11830        ConsensusKeysUpdated(ConsensusKeysUpdated),
11831        #[allow(missing_docs)]
11832        Delegated(Delegated),
11833        #[allow(missing_docs)]
11834        Initialized(Initialized),
11835        #[allow(missing_docs)]
11836        OwnershipTransferred(OwnershipTransferred),
11837        #[allow(missing_docs)]
11838        Undelegated(Undelegated),
11839        #[allow(missing_docs)]
11840        Upgraded(Upgraded),
11841        #[allow(missing_docs)]
11842        ValidatorExit(ValidatorExit),
11843        #[allow(missing_docs)]
11844        ValidatorRegistered(ValidatorRegistered),
11845        #[allow(missing_docs)]
11846        Withdrawal(Withdrawal),
11847    }
11848    #[automatically_derived]
11849    impl StakeTableEvents {
11850        /// All the selectors of this enum.
11851        ///
11852        /// Note that the selectors might not be in the same order as the variants.
11853        /// No guarantees are made about the order of the selectors.
11854        ///
11855        /// Prefer using `SolInterface` methods instead.
11856        pub const SELECTORS: &'static [[u8; 32usize]] = &[
11857            [
11858                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
11859                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
11860                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
11861            ],
11862            [
11863                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
11864                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
11865                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
11866            ],
11867            [
11868                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
11869                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
11870                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
11871            ],
11872            [
11873                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
11874                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
11875                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
11876            ],
11877            [
11878                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
11879                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
11880                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
11881            ],
11882            [
11883                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
11884                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
11885                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
11886            ],
11887            [
11888                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
11889                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
11890                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
11891            ],
11892            [
11893                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
11894                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
11895                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
11896            ],
11897            [
11898                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
11899                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
11900                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
11901            ],
11902        ];
11903    }
11904    #[automatically_derived]
11905    impl alloy_sol_types::SolEventInterface for StakeTableEvents {
11906        const NAME: &'static str = "StakeTableEvents";
11907        const COUNT: usize = 9usize;
11908        fn decode_raw_log(
11909            topics: &[alloy_sol_types::Word],
11910            data: &[u8],
11911        ) -> alloy_sol_types::Result<Self> {
11912            match topics.first().copied() {
11913                Some(
11914                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11915                ) => {
11916                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
11917                            topics,
11918                            data,
11919                        )
11920                        .map(Self::ConsensusKeysUpdated)
11921                }
11922                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11923                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
11924                            topics,
11925                            data,
11926                        )
11927                        .map(Self::Delegated)
11928                }
11929                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11930                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
11931                            topics,
11932                            data,
11933                        )
11934                        .map(Self::Initialized)
11935                }
11936                Some(
11937                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11938                ) => {
11939                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
11940                            topics,
11941                            data,
11942                        )
11943                        .map(Self::OwnershipTransferred)
11944                }
11945                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11946                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
11947                            topics,
11948                            data,
11949                        )
11950                        .map(Self::Undelegated)
11951                }
11952                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11953                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
11954                        .map(Self::Upgraded)
11955                }
11956                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11957                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
11958                            topics,
11959                            data,
11960                        )
11961                        .map(Self::ValidatorExit)
11962                }
11963                Some(
11964                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11965                ) => {
11966                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
11967                            topics,
11968                            data,
11969                        )
11970                        .map(Self::ValidatorRegistered)
11971                }
11972                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11973                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
11974                            topics,
11975                            data,
11976                        )
11977                        .map(Self::Withdrawal)
11978                }
11979                _ => {
11980                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
11981                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
11982                        log: alloy_sol_types::private::Box::new(
11983                            alloy_sol_types::private::LogData::new_unchecked(
11984                                topics.to_vec(),
11985                                data.to_vec().into(),
11986                            ),
11987                        ),
11988                    })
11989                }
11990            }
11991        }
11992    }
11993    #[automatically_derived]
11994    impl alloy_sol_types::private::IntoLogData for StakeTableEvents {
11995        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11996            match self {
11997                Self::ConsensusKeysUpdated(inner) => {
11998                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11999                }
12000                Self::Delegated(inner) => {
12001                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12002                }
12003                Self::Initialized(inner) => {
12004                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12005                }
12006                Self::OwnershipTransferred(inner) => {
12007                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12008                }
12009                Self::Undelegated(inner) => {
12010                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12011                }
12012                Self::Upgraded(inner) => {
12013                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12014                }
12015                Self::ValidatorExit(inner) => {
12016                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12017                }
12018                Self::ValidatorRegistered(inner) => {
12019                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12020                }
12021                Self::Withdrawal(inner) => {
12022                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12023                }
12024            }
12025        }
12026        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12027            match self {
12028                Self::ConsensusKeysUpdated(inner) => {
12029                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12030                }
12031                Self::Delegated(inner) => {
12032                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12033                }
12034                Self::Initialized(inner) => {
12035                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12036                }
12037                Self::OwnershipTransferred(inner) => {
12038                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12039                }
12040                Self::Undelegated(inner) => {
12041                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12042                }
12043                Self::Upgraded(inner) => {
12044                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12045                }
12046                Self::ValidatorExit(inner) => {
12047                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12048                }
12049                Self::ValidatorRegistered(inner) => {
12050                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12051                }
12052                Self::Withdrawal(inner) => {
12053                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12054                }
12055            }
12056        }
12057    }
12058    use alloy::contract as alloy_contract;
12059    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
12060
12061See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
12062    #[inline]
12063    pub const fn new<
12064        P: alloy_contract::private::Provider<N>,
12065        N: alloy_contract::private::Network,
12066    >(
12067        address: alloy_sol_types::private::Address,
12068        __provider: P,
12069    ) -> StakeTableInstance<P, N> {
12070        StakeTableInstance::<P, N>::new(address, __provider)
12071    }
12072    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12073
12074Returns a new instance of the contract, if the deployment was successful.
12075
12076For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12077    #[inline]
12078    pub fn deploy<
12079        P: alloy_contract::private::Provider<N>,
12080        N: alloy_contract::private::Network,
12081    >(
12082        __provider: P,
12083    ) -> impl ::core::future::Future<
12084        Output = alloy_contract::Result<StakeTableInstance<P, N>>,
12085    > {
12086        StakeTableInstance::<P, N>::deploy(__provider)
12087    }
12088    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12089and constructor arguments, if any.
12090
12091This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12092the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12093    #[inline]
12094    pub fn deploy_builder<
12095        P: alloy_contract::private::Provider<N>,
12096        N: alloy_contract::private::Network,
12097    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12098        StakeTableInstance::<P, N>::deploy_builder(__provider)
12099    }
12100    /**A [`StakeTable`](self) instance.
12101
12102Contains type-safe methods for interacting with an on-chain instance of the
12103[`StakeTable`](self) contract located at a given `address`, using a given
12104provider `P`.
12105
12106If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12107documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12108be used to deploy a new instance of the contract.
12109
12110See the [module-level documentation](self) for all the available methods.*/
12111    #[derive(Clone)]
12112    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
12113        address: alloy_sol_types::private::Address,
12114        provider: P,
12115        _network: ::core::marker::PhantomData<N>,
12116    }
12117    #[automatically_derived]
12118    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
12119        #[inline]
12120        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12121            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
12122        }
12123    }
12124    /// Instantiation and getters/setters.
12125    #[automatically_derived]
12126    impl<
12127        P: alloy_contract::private::Provider<N>,
12128        N: alloy_contract::private::Network,
12129    > StakeTableInstance<P, N> {
12130        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
12131
12132See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
12133        #[inline]
12134        pub const fn new(
12135            address: alloy_sol_types::private::Address,
12136            __provider: P,
12137        ) -> Self {
12138            Self {
12139                address,
12140                provider: __provider,
12141                _network: ::core::marker::PhantomData,
12142            }
12143        }
12144        /**Deploys this contract using the given `provider` and constructor arguments, if any.
12145
12146Returns a new instance of the contract, if the deployment was successful.
12147
12148For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12149        #[inline]
12150        pub async fn deploy(
12151            __provider: P,
12152        ) -> alloy_contract::Result<StakeTableInstance<P, N>> {
12153            let call_builder = Self::deploy_builder(__provider);
12154            let contract_address = call_builder.deploy().await?;
12155            Ok(Self::new(contract_address, call_builder.provider))
12156        }
12157        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12158and constructor arguments, if any.
12159
12160This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12161the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12162        #[inline]
12163        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12164            alloy_contract::RawCallBuilder::new_raw_deploy(
12165                __provider,
12166                ::core::clone::Clone::clone(&BYTECODE),
12167            )
12168        }
12169        /// Returns a reference to the address.
12170        #[inline]
12171        pub const fn address(&self) -> &alloy_sol_types::private::Address {
12172            &self.address
12173        }
12174        /// Sets the address.
12175        #[inline]
12176        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
12177            self.address = address;
12178        }
12179        /// Sets the address and returns `self`.
12180        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
12181            self.set_address(address);
12182            self
12183        }
12184        /// Returns a reference to the provider.
12185        #[inline]
12186        pub const fn provider(&self) -> &P {
12187            &self.provider
12188        }
12189    }
12190    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
12191        /// Clones the provider and returns a new instance with the cloned provider.
12192        #[inline]
12193        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
12194            StakeTableInstance {
12195                address: self.address,
12196                provider: ::core::clone::Clone::clone(&self.provider),
12197                _network: ::core::marker::PhantomData,
12198            }
12199        }
12200    }
12201    /// Function calls.
12202    #[automatically_derived]
12203    impl<
12204        P: alloy_contract::private::Provider<N>,
12205        N: alloy_contract::private::Network,
12206    > StakeTableInstance<P, N> {
12207        /// Creates a new call builder using this contract instance's provider and address.
12208        ///
12209        /// Note that the call can be any function call, not just those defined in this
12210        /// contract. Prefer using the other methods for building type-safe contract calls.
12211        pub fn call_builder<C: alloy_sol_types::SolCall>(
12212            &self,
12213            call: &C,
12214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
12215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
12216        }
12217        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
12218        pub fn UPGRADE_INTERFACE_VERSION(
12219            &self,
12220        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
12221            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
12222        }
12223        ///Creates a new call builder for the [`_hashBlsKey`] function.
12224        pub fn _hashBlsKey(
12225            &self,
12226            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12227        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
12228            self.call_builder(&_hashBlsKeyCall { blsVK })
12229        }
12230        ///Creates a new call builder for the [`blsKeys`] function.
12231        pub fn blsKeys(
12232            &self,
12233            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
12234        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
12235            self.call_builder(&blsKeysCall { blsKeyHash })
12236        }
12237        ///Creates a new call builder for the [`claimValidatorExit`] function.
12238        pub fn claimValidatorExit(
12239            &self,
12240            validator: alloy::sol_types::private::Address,
12241        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
12242            self.call_builder(
12243                &claimValidatorExitCall {
12244                    validator,
12245                },
12246            )
12247        }
12248        ///Creates a new call builder for the [`claimWithdrawal`] function.
12249        pub fn claimWithdrawal(
12250            &self,
12251            validator: alloy::sol_types::private::Address,
12252        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
12253            self.call_builder(&claimWithdrawalCall { validator })
12254        }
12255        ///Creates a new call builder for the [`delegate`] function.
12256        pub fn delegate(
12257            &self,
12258            validator: alloy::sol_types::private::Address,
12259            amount: alloy::sol_types::private::primitives::aliases::U256,
12260        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
12261            self.call_builder(&delegateCall { validator, amount })
12262        }
12263        ///Creates a new call builder for the [`delegations`] function.
12264        pub fn delegations(
12265            &self,
12266            validator: alloy::sol_types::private::Address,
12267            delegator: alloy::sol_types::private::Address,
12268        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
12269            self.call_builder(
12270                &delegationsCall {
12271                    validator,
12272                    delegator,
12273                },
12274            )
12275        }
12276        ///Creates a new call builder for the [`deregisterValidator`] function.
12277        pub fn deregisterValidator(
12278            &self,
12279        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
12280            self.call_builder(&deregisterValidatorCall)
12281        }
12282        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
12283        pub fn exitEscrowPeriod(
12284            &self,
12285        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
12286            self.call_builder(&exitEscrowPeriodCall)
12287        }
12288        ///Creates a new call builder for the [`getVersion`] function.
12289        pub fn getVersion(
12290            &self,
12291        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
12292            self.call_builder(&getVersionCall)
12293        }
12294        ///Creates a new call builder for the [`initialize`] function.
12295        pub fn initialize(
12296            &self,
12297            _tokenAddress: alloy::sol_types::private::Address,
12298            _lightClientAddress: alloy::sol_types::private::Address,
12299            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
12300            _timelock: alloy::sol_types::private::Address,
12301        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
12302            self.call_builder(
12303                &initializeCall {
12304                    _tokenAddress,
12305                    _lightClientAddress,
12306                    _exitEscrowPeriod,
12307                    _timelock,
12308                },
12309            )
12310        }
12311        ///Creates a new call builder for the [`initializedAtBlock`] function.
12312        pub fn initializedAtBlock(
12313            &self,
12314        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
12315            self.call_builder(&initializedAtBlockCall)
12316        }
12317        ///Creates a new call builder for the [`lightClient`] function.
12318        pub fn lightClient(
12319            &self,
12320        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
12321            self.call_builder(&lightClientCall)
12322        }
12323        ///Creates a new call builder for the [`owner`] function.
12324        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
12325            self.call_builder(&ownerCall)
12326        }
12327        ///Creates a new call builder for the [`proxiableUUID`] function.
12328        pub fn proxiableUUID(
12329            &self,
12330        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
12331            self.call_builder(&proxiableUUIDCall)
12332        }
12333        ///Creates a new call builder for the [`registerValidator`] function.
12334        pub fn registerValidator(
12335            &self,
12336            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12337            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12338            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12339            commission: u16,
12340        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
12341            self.call_builder(
12342                &registerValidatorCall {
12343                    blsVK,
12344                    schnorrVK,
12345                    blsSig,
12346                    commission,
12347                },
12348            )
12349        }
12350        ///Creates a new call builder for the [`renounceOwnership`] function.
12351        pub fn renounceOwnership(
12352            &self,
12353        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
12354            self.call_builder(&renounceOwnershipCall)
12355        }
12356        ///Creates a new call builder for the [`token`] function.
12357        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
12358            self.call_builder(&tokenCall)
12359        }
12360        ///Creates a new call builder for the [`transferOwnership`] function.
12361        pub fn transferOwnership(
12362            &self,
12363            newOwner: alloy::sol_types::private::Address,
12364        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
12365            self.call_builder(&transferOwnershipCall { newOwner })
12366        }
12367        ///Creates a new call builder for the [`undelegate`] function.
12368        pub fn undelegate(
12369            &self,
12370            validator: alloy::sol_types::private::Address,
12371            amount: alloy::sol_types::private::primitives::aliases::U256,
12372        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
12373            self.call_builder(
12374                &undelegateCall {
12375                    validator,
12376                    amount,
12377                },
12378            )
12379        }
12380        ///Creates a new call builder for the [`undelegations`] function.
12381        pub fn undelegations(
12382            &self,
12383            validator: alloy::sol_types::private::Address,
12384            delegator: alloy::sol_types::private::Address,
12385        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
12386            self.call_builder(
12387                &undelegationsCall {
12388                    validator,
12389                    delegator,
12390                },
12391            )
12392        }
12393        ///Creates a new call builder for the [`updateConsensusKeys`] function.
12394        pub fn updateConsensusKeys(
12395            &self,
12396            newBlsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12397            newSchnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
12398            newBlsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
12399        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
12400            self.call_builder(
12401                &updateConsensusKeysCall {
12402                    newBlsVK,
12403                    newSchnorrVK,
12404                    newBlsSig,
12405                },
12406            )
12407        }
12408        ///Creates a new call builder for the [`upgradeToAndCall`] function.
12409        pub fn upgradeToAndCall(
12410            &self,
12411            newImplementation: alloy::sol_types::private::Address,
12412            data: alloy::sol_types::private::Bytes,
12413        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
12414            self.call_builder(
12415                &upgradeToAndCallCall {
12416                    newImplementation,
12417                    data,
12418                },
12419            )
12420        }
12421        ///Creates a new call builder for the [`validatorExits`] function.
12422        pub fn validatorExits(
12423            &self,
12424            validator: alloy::sol_types::private::Address,
12425        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
12426            self.call_builder(&validatorExitsCall { validator })
12427        }
12428        ///Creates a new call builder for the [`validators`] function.
12429        pub fn validators(
12430            &self,
12431            account: alloy::sol_types::private::Address,
12432        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
12433            self.call_builder(&validatorsCall { account })
12434        }
12435    }
12436    /// Event filters.
12437    #[automatically_derived]
12438    impl<
12439        P: alloy_contract::private::Provider<N>,
12440        N: alloy_contract::private::Network,
12441    > StakeTableInstance<P, N> {
12442        /// Creates a new event filter using this contract instance's provider and address.
12443        ///
12444        /// Note that the type can be any event, not just those defined in this contract.
12445        /// Prefer using the other methods for building type-safe event filters.
12446        pub fn event_filter<E: alloy_sol_types::SolEvent>(
12447            &self,
12448        ) -> alloy_contract::Event<&P, E, N> {
12449            alloy_contract::Event::new_sol(&self.provider, &self.address)
12450        }
12451        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
12452        pub fn ConsensusKeysUpdated_filter(
12453            &self,
12454        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
12455            self.event_filter::<ConsensusKeysUpdated>()
12456        }
12457        ///Creates a new event filter for the [`Delegated`] event.
12458        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
12459            self.event_filter::<Delegated>()
12460        }
12461        ///Creates a new event filter for the [`Initialized`] event.
12462        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
12463            self.event_filter::<Initialized>()
12464        }
12465        ///Creates a new event filter for the [`OwnershipTransferred`] event.
12466        pub fn OwnershipTransferred_filter(
12467            &self,
12468        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
12469            self.event_filter::<OwnershipTransferred>()
12470        }
12471        ///Creates a new event filter for the [`Undelegated`] event.
12472        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
12473            self.event_filter::<Undelegated>()
12474        }
12475        ///Creates a new event filter for the [`Upgraded`] event.
12476        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
12477            self.event_filter::<Upgraded>()
12478        }
12479        ///Creates a new event filter for the [`ValidatorExit`] event.
12480        pub fn ValidatorExit_filter(
12481            &self,
12482        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
12483            self.event_filter::<ValidatorExit>()
12484        }
12485        ///Creates a new event filter for the [`ValidatorRegistered`] event.
12486        pub fn ValidatorRegistered_filter(
12487            &self,
12488        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
12489            self.event_filter::<ValidatorRegistered>()
12490        }
12491        ///Creates a new event filter for the [`Withdrawal`] event.
12492        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
12493            self.event_filter::<Withdrawal>()
12494        }
12495    }
12496}