hotshot_contract_adapter/bindings/
stake_table_v2.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///Module containing a contract's types and functions.
1086/**
1087
1088```solidity
1089library StakeTable {
1090    type ValidatorStatus is uint8;
1091}
1092```*/
1093#[allow(
1094    non_camel_case_types,
1095    non_snake_case,
1096    clippy::pub_underscore_fields,
1097    clippy::style,
1098    clippy::empty_structs_with_brackets
1099)]
1100pub mod StakeTable {
1101    use super::*;
1102    use alloy::sol_types as alloy_sol_types;
1103    #[derive(serde::Serialize, serde::Deserialize)]
1104    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1105    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1106    #[derive(Clone)]
1107    pub struct ValidatorStatus(u8);
1108    const _: () = {
1109        use alloy::sol_types as alloy_sol_types;
1110        #[automatically_derived]
1111        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
1112            #[inline]
1113            fn stv_to_tokens(
1114                &self,
1115            ) -> <alloy::sol_types::sol_data::Uint<
1116                8,
1117            > as alloy_sol_types::SolType>::Token<'_> {
1118                alloy_sol_types::private::SolTypeValue::<
1119                    alloy::sol_types::sol_data::Uint<8>,
1120                >::stv_to_tokens(self)
1121            }
1122            #[inline]
1123            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1124                <alloy::sol_types::sol_data::Uint<
1125                    8,
1126                > as alloy_sol_types::SolType>::tokenize(self)
1127                    .0
1128            }
1129            #[inline]
1130            fn stv_abi_encode_packed_to(
1131                &self,
1132                out: &mut alloy_sol_types::private::Vec<u8>,
1133            ) {
1134                <alloy::sol_types::sol_data::Uint<
1135                    8,
1136                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1137            }
1138            #[inline]
1139            fn stv_abi_packed_encoded_size(&self) -> usize {
1140                <alloy::sol_types::sol_data::Uint<
1141                    8,
1142                > as alloy_sol_types::SolType>::abi_encoded_size(self)
1143            }
1144        }
1145        #[automatically_derived]
1146        impl ValidatorStatus {
1147            /// The Solidity type name.
1148            pub const NAME: &'static str = stringify!(@ name);
1149            /// Convert from the underlying value type.
1150            #[inline]
1151            pub const fn from_underlying(value: u8) -> Self {
1152                Self(value)
1153            }
1154            /// Return the underlying value.
1155            #[inline]
1156            pub const fn into_underlying(self) -> u8 {
1157                self.0
1158            }
1159            /// Return the single encoding of this value, delegating to the
1160            /// underlying type.
1161            #[inline]
1162            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1163                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1164            }
1165            /// Return the packed encoding of this value, delegating to the
1166            /// underlying type.
1167            #[inline]
1168            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1169                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1170            }
1171        }
1172        #[automatically_derived]
1173        impl From<u8> for ValidatorStatus {
1174            fn from(value: u8) -> Self {
1175                Self::from_underlying(value)
1176            }
1177        }
1178        #[automatically_derived]
1179        impl From<ValidatorStatus> for u8 {
1180            fn from(value: ValidatorStatus) -> Self {
1181                value.into_underlying()
1182            }
1183        }
1184        #[automatically_derived]
1185        impl alloy_sol_types::SolType for ValidatorStatus {
1186            type RustType = u8;
1187            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1188                8,
1189            > as alloy_sol_types::SolType>::Token<'a>;
1190            const SOL_NAME: &'static str = Self::NAME;
1191            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1192                8,
1193            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1194            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1195                8,
1196            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1197            #[inline]
1198            fn valid_token(token: &Self::Token<'_>) -> bool {
1199                Self::type_check(token).is_ok()
1200            }
1201            #[inline]
1202            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1203                <alloy::sol_types::sol_data::Uint<
1204                    8,
1205                > as alloy_sol_types::SolType>::type_check(token)
1206            }
1207            #[inline]
1208            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1209                <alloy::sol_types::sol_data::Uint<
1210                    8,
1211                > as alloy_sol_types::SolType>::detokenize(token)
1212            }
1213        }
1214        #[automatically_derived]
1215        impl alloy_sol_types::EventTopic for ValidatorStatus {
1216            #[inline]
1217            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1218                <alloy::sol_types::sol_data::Uint<
1219                    8,
1220                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1221            }
1222            #[inline]
1223            fn encode_topic_preimage(
1224                rust: &Self::RustType,
1225                out: &mut alloy_sol_types::private::Vec<u8>,
1226            ) {
1227                <alloy::sol_types::sol_data::Uint<
1228                    8,
1229                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1230            }
1231            #[inline]
1232            fn encode_topic(
1233                rust: &Self::RustType,
1234            ) -> alloy_sol_types::abi::token::WordToken {
1235                <alloy::sol_types::sol_data::Uint<
1236                    8,
1237                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1238            }
1239        }
1240    };
1241    use alloy::contract as alloy_contract;
1242    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1243
1244See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1245    #[inline]
1246    pub const fn new<
1247        P: alloy_contract::private::Provider<N>,
1248        N: alloy_contract::private::Network,
1249    >(
1250        address: alloy_sol_types::private::Address,
1251        __provider: P,
1252    ) -> StakeTableInstance<P, N> {
1253        StakeTableInstance::<P, N>::new(address, __provider)
1254    }
1255    /**A [`StakeTable`](self) instance.
1256
1257Contains type-safe methods for interacting with an on-chain instance of the
1258[`StakeTable`](self) contract located at a given `address`, using a given
1259provider `P`.
1260
1261If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1262documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1263be used to deploy a new instance of the contract.
1264
1265See the [module-level documentation](self) for all the available methods.*/
1266    #[derive(Clone)]
1267    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
1268        address: alloy_sol_types::private::Address,
1269        provider: P,
1270        _network: ::core::marker::PhantomData<N>,
1271    }
1272    #[automatically_derived]
1273    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
1274        #[inline]
1275        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1276            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
1277        }
1278    }
1279    /// Instantiation and getters/setters.
1280    #[automatically_derived]
1281    impl<
1282        P: alloy_contract::private::Provider<N>,
1283        N: alloy_contract::private::Network,
1284    > StakeTableInstance<P, N> {
1285        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1286
1287See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1288        #[inline]
1289        pub const fn new(
1290            address: alloy_sol_types::private::Address,
1291            __provider: P,
1292        ) -> Self {
1293            Self {
1294                address,
1295                provider: __provider,
1296                _network: ::core::marker::PhantomData,
1297            }
1298        }
1299        /// Returns a reference to the address.
1300        #[inline]
1301        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1302            &self.address
1303        }
1304        /// Sets the address.
1305        #[inline]
1306        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1307            self.address = address;
1308        }
1309        /// Sets the address and returns `self`.
1310        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1311            self.set_address(address);
1312            self
1313        }
1314        /// Returns a reference to the provider.
1315        #[inline]
1316        pub const fn provider(&self) -> &P {
1317            &self.provider
1318        }
1319    }
1320    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
1321        /// Clones the provider and returns a new instance with the cloned provider.
1322        #[inline]
1323        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
1324            StakeTableInstance {
1325                address: self.address,
1326                provider: ::core::clone::Clone::clone(&self.provider),
1327                _network: ::core::marker::PhantomData,
1328            }
1329        }
1330    }
1331    /// Function calls.
1332    #[automatically_derived]
1333    impl<
1334        P: alloy_contract::private::Provider<N>,
1335        N: alloy_contract::private::Network,
1336    > StakeTableInstance<P, N> {
1337        /// Creates a new call builder using this contract instance's provider and address.
1338        ///
1339        /// Note that the call can be any function call, not just those defined in this
1340        /// contract. Prefer using the other methods for building type-safe contract calls.
1341        pub fn call_builder<C: alloy_sol_types::SolCall>(
1342            &self,
1343            call: &C,
1344        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1345            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1346        }
1347    }
1348    /// Event filters.
1349    #[automatically_derived]
1350    impl<
1351        P: alloy_contract::private::Provider<N>,
1352        N: alloy_contract::private::Network,
1353    > StakeTableInstance<P, N> {
1354        /// Creates a new event filter using this contract instance's provider and address.
1355        ///
1356        /// Note that the type can be any event, not just those defined in this contract.
1357        /// Prefer using the other methods for building type-safe event filters.
1358        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1359            &self,
1360        ) -> alloy_contract::Event<&P, E, N> {
1361            alloy_contract::Event::new_sol(&self.provider, &self.address)
1362        }
1363    }
1364}
1365/**
1366
1367Generated by the following Solidity interface...
1368```solidity
1369library BN254 {
1370    type BaseField is uint256;
1371    struct G1Point {
1372        BaseField x;
1373        BaseField y;
1374    }
1375    struct G2Point {
1376        BaseField x0;
1377        BaseField x1;
1378        BaseField y0;
1379        BaseField y1;
1380    }
1381}
1382
1383library EdOnBN254 {
1384    struct EdOnBN254Point {
1385        uint256 x;
1386        uint256 y;
1387    }
1388}
1389
1390library StakeTable {
1391    type ValidatorStatus is uint8;
1392}
1393
1394interface StakeTableV2 {
1395    struct InitialCommission {
1396        address validator;
1397        uint16 commission;
1398    }
1399
1400    error AccessControlBadConfirmation();
1401    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1402    error AddressEmptyCode(address target);
1403    error BLSSigVerificationFailed();
1404    error BN254PairingProdFailed();
1405    error BlsKeyAlreadyUsed();
1406    error CommissionAlreadyInitialized(address validator);
1407    error CommissionIncreaseExceedsMax();
1408    error CommissionUnchanged();
1409    error CommissionUpdateTooSoon();
1410    error DeprecatedFunction();
1411    error ERC1967InvalidImplementation(address implementation);
1412    error ERC1967NonPayable();
1413    error EnforcedPause();
1414    error ExitEscrowPeriodInvalid();
1415    error ExpectedPause();
1416    error FailedInnerCall();
1417    error InsufficientAllowance(uint256, uint256);
1418    error InsufficientBalance(uint256);
1419    error InvalidCommission();
1420    error InvalidG1();
1421    error InvalidInitialization();
1422    error InvalidRateLimitParameters();
1423    error InvalidSchnorrSig();
1424    error InvalidSchnorrVK();
1425    error NotInitializing();
1426    error NothingToWithdraw();
1427    error OwnableInvalidOwner(address owner);
1428    error OwnableUnauthorizedAccount(address account);
1429    error PowPrecompileFailed();
1430    error PrematureWithdrawal();
1431    error SchnorrKeyAlreadyUsed();
1432    error UUPSUnauthorizedCallContext();
1433    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1434    error UndelegationAlreadyExists();
1435    error ValidatorAlreadyExited();
1436    error ValidatorAlreadyRegistered();
1437    error ValidatorInactive();
1438    error ValidatorNotExited();
1439    error ZeroAddress();
1440    error ZeroAmount();
1441
1442    event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
1443    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1444    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1445    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1446    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1447    event Initialized(uint64 version);
1448    event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
1449    event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
1450    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1451    event Paused(address account);
1452    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1453    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1454    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1455    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1456    event Unpaused(address account);
1457    event Upgraded(address indexed implementation);
1458    event ValidatorExit(address indexed validator);
1459    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1460    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig);
1461    event Withdrawal(address indexed account, uint256 amount);
1462
1463    constructor();
1464
1465    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1466    function PAUSER_ROLE() external view returns (bytes32);
1467    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1468    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1469    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1470    function claimValidatorExit(address validator) external;
1471    function claimWithdrawal(address validator) external;
1472    function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
1473    function delegate(address validator, uint256 amount) external;
1474    function delegations(address validator, address delegator) external view returns (uint256 amount);
1475    function deregisterValidator() external;
1476    function exitEscrowPeriod() external view returns (uint256);
1477    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1478    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1479    function grantRole(bytes32 role, address account) external;
1480    function hasRole(bytes32 role, address account) external view returns (bool);
1481    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1482    function initializeV2(address pauser, address admin, InitialCommission[] memory initialCommissions) external;
1483    function initializedAtBlock() external view returns (uint256);
1484    function lightClient() external view returns (address);
1485    function maxCommissionIncrease() external view returns (uint16);
1486    function minCommissionIncreaseInterval() external view returns (uint256);
1487    function owner() external view returns (address);
1488    function pause() external;
1489    function paused() external view returns (bool);
1490    function proxiableUUID() external view returns (bytes32);
1491    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1492    function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission) external;
1493    function renounceOwnership() external;
1494    function renounceRole(bytes32 role, address callerConfirmation) external;
1495    function revokeRole(bytes32 role, address account) external;
1496    function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
1497    function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
1498    function setMinCommissionUpdateInterval(uint256 newInterval) external;
1499    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1500    function token() external view returns (address);
1501    function transferOwnership(address newOwner) external;
1502    function undelegate(address validator, uint256 amount) external;
1503    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1504    function unpause() external;
1505    function updateCommission(uint16 newCommission) external;
1506    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1507    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1508    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1509    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1510    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1511    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1512}
1513```
1514
1515...which was generated by the following JSON ABI:
1516```json
1517[
1518  {
1519    "type": "constructor",
1520    "inputs": [],
1521    "stateMutability": "nonpayable"
1522  },
1523  {
1524    "type": "function",
1525    "name": "DEFAULT_ADMIN_ROLE",
1526    "inputs": [],
1527    "outputs": [
1528      {
1529        "name": "",
1530        "type": "bytes32",
1531        "internalType": "bytes32"
1532      }
1533    ],
1534    "stateMutability": "view"
1535  },
1536  {
1537    "type": "function",
1538    "name": "PAUSER_ROLE",
1539    "inputs": [],
1540    "outputs": [
1541      {
1542        "name": "",
1543        "type": "bytes32",
1544        "internalType": "bytes32"
1545      }
1546    ],
1547    "stateMutability": "view"
1548  },
1549  {
1550    "type": "function",
1551    "name": "UPGRADE_INTERFACE_VERSION",
1552    "inputs": [],
1553    "outputs": [
1554      {
1555        "name": "",
1556        "type": "string",
1557        "internalType": "string"
1558      }
1559    ],
1560    "stateMutability": "view"
1561  },
1562  {
1563    "type": "function",
1564    "name": "_hashBlsKey",
1565    "inputs": [
1566      {
1567        "name": "blsVK",
1568        "type": "tuple",
1569        "internalType": "struct BN254.G2Point",
1570        "components": [
1571          {
1572            "name": "x0",
1573            "type": "uint256",
1574            "internalType": "BN254.BaseField"
1575          },
1576          {
1577            "name": "x1",
1578            "type": "uint256",
1579            "internalType": "BN254.BaseField"
1580          },
1581          {
1582            "name": "y0",
1583            "type": "uint256",
1584            "internalType": "BN254.BaseField"
1585          },
1586          {
1587            "name": "y1",
1588            "type": "uint256",
1589            "internalType": "BN254.BaseField"
1590          }
1591        ]
1592      }
1593    ],
1594    "outputs": [
1595      {
1596        "name": "",
1597        "type": "bytes32",
1598        "internalType": "bytes32"
1599      }
1600    ],
1601    "stateMutability": "pure"
1602  },
1603  {
1604    "type": "function",
1605    "name": "blsKeys",
1606    "inputs": [
1607      {
1608        "name": "blsKeyHash",
1609        "type": "bytes32",
1610        "internalType": "bytes32"
1611      }
1612    ],
1613    "outputs": [
1614      {
1615        "name": "used",
1616        "type": "bool",
1617        "internalType": "bool"
1618      }
1619    ],
1620    "stateMutability": "view"
1621  },
1622  {
1623    "type": "function",
1624    "name": "claimValidatorExit",
1625    "inputs": [
1626      {
1627        "name": "validator",
1628        "type": "address",
1629        "internalType": "address"
1630      }
1631    ],
1632    "outputs": [],
1633    "stateMutability": "nonpayable"
1634  },
1635  {
1636    "type": "function",
1637    "name": "claimWithdrawal",
1638    "inputs": [
1639      {
1640        "name": "validator",
1641        "type": "address",
1642        "internalType": "address"
1643      }
1644    ],
1645    "outputs": [],
1646    "stateMutability": "nonpayable"
1647  },
1648  {
1649    "type": "function",
1650    "name": "commissionTracking",
1651    "inputs": [
1652      {
1653        "name": "validator",
1654        "type": "address",
1655        "internalType": "address"
1656      }
1657    ],
1658    "outputs": [
1659      {
1660        "name": "commission",
1661        "type": "uint16",
1662        "internalType": "uint16"
1663      },
1664      {
1665        "name": "lastIncreaseTime",
1666        "type": "uint256",
1667        "internalType": "uint256"
1668      }
1669    ],
1670    "stateMutability": "view"
1671  },
1672  {
1673    "type": "function",
1674    "name": "delegate",
1675    "inputs": [
1676      {
1677        "name": "validator",
1678        "type": "address",
1679        "internalType": "address"
1680      },
1681      {
1682        "name": "amount",
1683        "type": "uint256",
1684        "internalType": "uint256"
1685      }
1686    ],
1687    "outputs": [],
1688    "stateMutability": "nonpayable"
1689  },
1690  {
1691    "type": "function",
1692    "name": "delegations",
1693    "inputs": [
1694      {
1695        "name": "validator",
1696        "type": "address",
1697        "internalType": "address"
1698      },
1699      {
1700        "name": "delegator",
1701        "type": "address",
1702        "internalType": "address"
1703      }
1704    ],
1705    "outputs": [
1706      {
1707        "name": "amount",
1708        "type": "uint256",
1709        "internalType": "uint256"
1710      }
1711    ],
1712    "stateMutability": "view"
1713  },
1714  {
1715    "type": "function",
1716    "name": "deregisterValidator",
1717    "inputs": [],
1718    "outputs": [],
1719    "stateMutability": "nonpayable"
1720  },
1721  {
1722    "type": "function",
1723    "name": "exitEscrowPeriod",
1724    "inputs": [],
1725    "outputs": [
1726      {
1727        "name": "",
1728        "type": "uint256",
1729        "internalType": "uint256"
1730      }
1731    ],
1732    "stateMutability": "view"
1733  },
1734  {
1735    "type": "function",
1736    "name": "getRoleAdmin",
1737    "inputs": [
1738      {
1739        "name": "role",
1740        "type": "bytes32",
1741        "internalType": "bytes32"
1742      }
1743    ],
1744    "outputs": [
1745      {
1746        "name": "",
1747        "type": "bytes32",
1748        "internalType": "bytes32"
1749      }
1750    ],
1751    "stateMutability": "view"
1752  },
1753  {
1754    "type": "function",
1755    "name": "getVersion",
1756    "inputs": [],
1757    "outputs": [
1758      {
1759        "name": "majorVersion",
1760        "type": "uint8",
1761        "internalType": "uint8"
1762      },
1763      {
1764        "name": "minorVersion",
1765        "type": "uint8",
1766        "internalType": "uint8"
1767      },
1768      {
1769        "name": "patchVersion",
1770        "type": "uint8",
1771        "internalType": "uint8"
1772      }
1773    ],
1774    "stateMutability": "pure"
1775  },
1776  {
1777    "type": "function",
1778    "name": "grantRole",
1779    "inputs": [
1780      {
1781        "name": "role",
1782        "type": "bytes32",
1783        "internalType": "bytes32"
1784      },
1785      {
1786        "name": "account",
1787        "type": "address",
1788        "internalType": "address"
1789      }
1790    ],
1791    "outputs": [],
1792    "stateMutability": "nonpayable"
1793  },
1794  {
1795    "type": "function",
1796    "name": "hasRole",
1797    "inputs": [
1798      {
1799        "name": "role",
1800        "type": "bytes32",
1801        "internalType": "bytes32"
1802      },
1803      {
1804        "name": "account",
1805        "type": "address",
1806        "internalType": "address"
1807      }
1808    ],
1809    "outputs": [
1810      {
1811        "name": "",
1812        "type": "bool",
1813        "internalType": "bool"
1814      }
1815    ],
1816    "stateMutability": "view"
1817  },
1818  {
1819    "type": "function",
1820    "name": "initialize",
1821    "inputs": [
1822      {
1823        "name": "_tokenAddress",
1824        "type": "address",
1825        "internalType": "address"
1826      },
1827      {
1828        "name": "_lightClientAddress",
1829        "type": "address",
1830        "internalType": "address"
1831      },
1832      {
1833        "name": "_exitEscrowPeriod",
1834        "type": "uint256",
1835        "internalType": "uint256"
1836      },
1837      {
1838        "name": "_timelock",
1839        "type": "address",
1840        "internalType": "address"
1841      }
1842    ],
1843    "outputs": [],
1844    "stateMutability": "nonpayable"
1845  },
1846  {
1847    "type": "function",
1848    "name": "initializeV2",
1849    "inputs": [
1850      {
1851        "name": "pauser",
1852        "type": "address",
1853        "internalType": "address"
1854      },
1855      {
1856        "name": "admin",
1857        "type": "address",
1858        "internalType": "address"
1859      },
1860      {
1861        "name": "initialCommissions",
1862        "type": "tuple[]",
1863        "internalType": "struct StakeTableV2.InitialCommission[]",
1864        "components": [
1865          {
1866            "name": "validator",
1867            "type": "address",
1868            "internalType": "address"
1869          },
1870          {
1871            "name": "commission",
1872            "type": "uint16",
1873            "internalType": "uint16"
1874          }
1875        ]
1876      }
1877    ],
1878    "outputs": [],
1879    "stateMutability": "nonpayable"
1880  },
1881  {
1882    "type": "function",
1883    "name": "initializedAtBlock",
1884    "inputs": [],
1885    "outputs": [
1886      {
1887        "name": "",
1888        "type": "uint256",
1889        "internalType": "uint256"
1890      }
1891    ],
1892    "stateMutability": "view"
1893  },
1894  {
1895    "type": "function",
1896    "name": "lightClient",
1897    "inputs": [],
1898    "outputs": [
1899      {
1900        "name": "",
1901        "type": "address",
1902        "internalType": "contract ILightClient"
1903      }
1904    ],
1905    "stateMutability": "view"
1906  },
1907  {
1908    "type": "function",
1909    "name": "maxCommissionIncrease",
1910    "inputs": [],
1911    "outputs": [
1912      {
1913        "name": "",
1914        "type": "uint16",
1915        "internalType": "uint16"
1916      }
1917    ],
1918    "stateMutability": "view"
1919  },
1920  {
1921    "type": "function",
1922    "name": "minCommissionIncreaseInterval",
1923    "inputs": [],
1924    "outputs": [
1925      {
1926        "name": "",
1927        "type": "uint256",
1928        "internalType": "uint256"
1929      }
1930    ],
1931    "stateMutability": "view"
1932  },
1933  {
1934    "type": "function",
1935    "name": "owner",
1936    "inputs": [],
1937    "outputs": [
1938      {
1939        "name": "",
1940        "type": "address",
1941        "internalType": "address"
1942      }
1943    ],
1944    "stateMutability": "view"
1945  },
1946  {
1947    "type": "function",
1948    "name": "pause",
1949    "inputs": [],
1950    "outputs": [],
1951    "stateMutability": "nonpayable"
1952  },
1953  {
1954    "type": "function",
1955    "name": "paused",
1956    "inputs": [],
1957    "outputs": [
1958      {
1959        "name": "",
1960        "type": "bool",
1961        "internalType": "bool"
1962      }
1963    ],
1964    "stateMutability": "view"
1965  },
1966  {
1967    "type": "function",
1968    "name": "proxiableUUID",
1969    "inputs": [],
1970    "outputs": [
1971      {
1972        "name": "",
1973        "type": "bytes32",
1974        "internalType": "bytes32"
1975      }
1976    ],
1977    "stateMutability": "view"
1978  },
1979  {
1980    "type": "function",
1981    "name": "registerValidator",
1982    "inputs": [
1983      {
1984        "name": "",
1985        "type": "tuple",
1986        "internalType": "struct BN254.G2Point",
1987        "components": [
1988          {
1989            "name": "x0",
1990            "type": "uint256",
1991            "internalType": "BN254.BaseField"
1992          },
1993          {
1994            "name": "x1",
1995            "type": "uint256",
1996            "internalType": "BN254.BaseField"
1997          },
1998          {
1999            "name": "y0",
2000            "type": "uint256",
2001            "internalType": "BN254.BaseField"
2002          },
2003          {
2004            "name": "y1",
2005            "type": "uint256",
2006            "internalType": "BN254.BaseField"
2007          }
2008        ]
2009      },
2010      {
2011        "name": "",
2012        "type": "tuple",
2013        "internalType": "struct EdOnBN254.EdOnBN254Point",
2014        "components": [
2015          {
2016            "name": "x",
2017            "type": "uint256",
2018            "internalType": "uint256"
2019          },
2020          {
2021            "name": "y",
2022            "type": "uint256",
2023            "internalType": "uint256"
2024          }
2025        ]
2026      },
2027      {
2028        "name": "",
2029        "type": "tuple",
2030        "internalType": "struct BN254.G1Point",
2031        "components": [
2032          {
2033            "name": "x",
2034            "type": "uint256",
2035            "internalType": "BN254.BaseField"
2036          },
2037          {
2038            "name": "y",
2039            "type": "uint256",
2040            "internalType": "BN254.BaseField"
2041          }
2042        ]
2043      },
2044      {
2045        "name": "",
2046        "type": "uint16",
2047        "internalType": "uint16"
2048      }
2049    ],
2050    "outputs": [],
2051    "stateMutability": "pure"
2052  },
2053  {
2054    "type": "function",
2055    "name": "registerValidatorV2",
2056    "inputs": [
2057      {
2058        "name": "blsVK",
2059        "type": "tuple",
2060        "internalType": "struct BN254.G2Point",
2061        "components": [
2062          {
2063            "name": "x0",
2064            "type": "uint256",
2065            "internalType": "BN254.BaseField"
2066          },
2067          {
2068            "name": "x1",
2069            "type": "uint256",
2070            "internalType": "BN254.BaseField"
2071          },
2072          {
2073            "name": "y0",
2074            "type": "uint256",
2075            "internalType": "BN254.BaseField"
2076          },
2077          {
2078            "name": "y1",
2079            "type": "uint256",
2080            "internalType": "BN254.BaseField"
2081          }
2082        ]
2083      },
2084      {
2085        "name": "schnorrVK",
2086        "type": "tuple",
2087        "internalType": "struct EdOnBN254.EdOnBN254Point",
2088        "components": [
2089          {
2090            "name": "x",
2091            "type": "uint256",
2092            "internalType": "uint256"
2093          },
2094          {
2095            "name": "y",
2096            "type": "uint256",
2097            "internalType": "uint256"
2098          }
2099        ]
2100      },
2101      {
2102        "name": "blsSig",
2103        "type": "tuple",
2104        "internalType": "struct BN254.G1Point",
2105        "components": [
2106          {
2107            "name": "x",
2108            "type": "uint256",
2109            "internalType": "BN254.BaseField"
2110          },
2111          {
2112            "name": "y",
2113            "type": "uint256",
2114            "internalType": "BN254.BaseField"
2115          }
2116        ]
2117      },
2118      {
2119        "name": "schnorrSig",
2120        "type": "bytes",
2121        "internalType": "bytes"
2122      },
2123      {
2124        "name": "commission",
2125        "type": "uint16",
2126        "internalType": "uint16"
2127      }
2128    ],
2129    "outputs": [],
2130    "stateMutability": "nonpayable"
2131  },
2132  {
2133    "type": "function",
2134    "name": "renounceOwnership",
2135    "inputs": [],
2136    "outputs": [],
2137    "stateMutability": "nonpayable"
2138  },
2139  {
2140    "type": "function",
2141    "name": "renounceRole",
2142    "inputs": [
2143      {
2144        "name": "role",
2145        "type": "bytes32",
2146        "internalType": "bytes32"
2147      },
2148      {
2149        "name": "callerConfirmation",
2150        "type": "address",
2151        "internalType": "address"
2152      }
2153    ],
2154    "outputs": [],
2155    "stateMutability": "nonpayable"
2156  },
2157  {
2158    "type": "function",
2159    "name": "revokeRole",
2160    "inputs": [
2161      {
2162        "name": "role",
2163        "type": "bytes32",
2164        "internalType": "bytes32"
2165      },
2166      {
2167        "name": "account",
2168        "type": "address",
2169        "internalType": "address"
2170      }
2171    ],
2172    "outputs": [],
2173    "stateMutability": "nonpayable"
2174  },
2175  {
2176    "type": "function",
2177    "name": "schnorrKeys",
2178    "inputs": [
2179      {
2180        "name": "schnorrKey",
2181        "type": "bytes32",
2182        "internalType": "bytes32"
2183      }
2184    ],
2185    "outputs": [
2186      {
2187        "name": "used",
2188        "type": "bool",
2189        "internalType": "bool"
2190      }
2191    ],
2192    "stateMutability": "view"
2193  },
2194  {
2195    "type": "function",
2196    "name": "setMaxCommissionIncrease",
2197    "inputs": [
2198      {
2199        "name": "newMaxIncrease",
2200        "type": "uint16",
2201        "internalType": "uint16"
2202      }
2203    ],
2204    "outputs": [],
2205    "stateMutability": "nonpayable"
2206  },
2207  {
2208    "type": "function",
2209    "name": "setMinCommissionUpdateInterval",
2210    "inputs": [
2211      {
2212        "name": "newInterval",
2213        "type": "uint256",
2214        "internalType": "uint256"
2215      }
2216    ],
2217    "outputs": [],
2218    "stateMutability": "nonpayable"
2219  },
2220  {
2221    "type": "function",
2222    "name": "supportsInterface",
2223    "inputs": [
2224      {
2225        "name": "interfaceId",
2226        "type": "bytes4",
2227        "internalType": "bytes4"
2228      }
2229    ],
2230    "outputs": [
2231      {
2232        "name": "",
2233        "type": "bool",
2234        "internalType": "bool"
2235      }
2236    ],
2237    "stateMutability": "view"
2238  },
2239  {
2240    "type": "function",
2241    "name": "token",
2242    "inputs": [],
2243    "outputs": [
2244      {
2245        "name": "",
2246        "type": "address",
2247        "internalType": "contract ERC20"
2248      }
2249    ],
2250    "stateMutability": "view"
2251  },
2252  {
2253    "type": "function",
2254    "name": "transferOwnership",
2255    "inputs": [
2256      {
2257        "name": "newOwner",
2258        "type": "address",
2259        "internalType": "address"
2260      }
2261    ],
2262    "outputs": [],
2263    "stateMutability": "nonpayable"
2264  },
2265  {
2266    "type": "function",
2267    "name": "undelegate",
2268    "inputs": [
2269      {
2270        "name": "validator",
2271        "type": "address",
2272        "internalType": "address"
2273      },
2274      {
2275        "name": "amount",
2276        "type": "uint256",
2277        "internalType": "uint256"
2278      }
2279    ],
2280    "outputs": [],
2281    "stateMutability": "nonpayable"
2282  },
2283  {
2284    "type": "function",
2285    "name": "undelegations",
2286    "inputs": [
2287      {
2288        "name": "validator",
2289        "type": "address",
2290        "internalType": "address"
2291      },
2292      {
2293        "name": "delegator",
2294        "type": "address",
2295        "internalType": "address"
2296      }
2297    ],
2298    "outputs": [
2299      {
2300        "name": "amount",
2301        "type": "uint256",
2302        "internalType": "uint256"
2303      },
2304      {
2305        "name": "unlocksAt",
2306        "type": "uint256",
2307        "internalType": "uint256"
2308      }
2309    ],
2310    "stateMutability": "view"
2311  },
2312  {
2313    "type": "function",
2314    "name": "unpause",
2315    "inputs": [],
2316    "outputs": [],
2317    "stateMutability": "nonpayable"
2318  },
2319  {
2320    "type": "function",
2321    "name": "updateCommission",
2322    "inputs": [
2323      {
2324        "name": "newCommission",
2325        "type": "uint16",
2326        "internalType": "uint16"
2327      }
2328    ],
2329    "outputs": [],
2330    "stateMutability": "nonpayable"
2331  },
2332  {
2333    "type": "function",
2334    "name": "updateConsensusKeys",
2335    "inputs": [
2336      {
2337        "name": "",
2338        "type": "tuple",
2339        "internalType": "struct BN254.G2Point",
2340        "components": [
2341          {
2342            "name": "x0",
2343            "type": "uint256",
2344            "internalType": "BN254.BaseField"
2345          },
2346          {
2347            "name": "x1",
2348            "type": "uint256",
2349            "internalType": "BN254.BaseField"
2350          },
2351          {
2352            "name": "y0",
2353            "type": "uint256",
2354            "internalType": "BN254.BaseField"
2355          },
2356          {
2357            "name": "y1",
2358            "type": "uint256",
2359            "internalType": "BN254.BaseField"
2360          }
2361        ]
2362      },
2363      {
2364        "name": "",
2365        "type": "tuple",
2366        "internalType": "struct EdOnBN254.EdOnBN254Point",
2367        "components": [
2368          {
2369            "name": "x",
2370            "type": "uint256",
2371            "internalType": "uint256"
2372          },
2373          {
2374            "name": "y",
2375            "type": "uint256",
2376            "internalType": "uint256"
2377          }
2378        ]
2379      },
2380      {
2381        "name": "",
2382        "type": "tuple",
2383        "internalType": "struct BN254.G1Point",
2384        "components": [
2385          {
2386            "name": "x",
2387            "type": "uint256",
2388            "internalType": "BN254.BaseField"
2389          },
2390          {
2391            "name": "y",
2392            "type": "uint256",
2393            "internalType": "BN254.BaseField"
2394          }
2395        ]
2396      }
2397    ],
2398    "outputs": [],
2399    "stateMutability": "pure"
2400  },
2401  {
2402    "type": "function",
2403    "name": "updateConsensusKeysV2",
2404    "inputs": [
2405      {
2406        "name": "blsVK",
2407        "type": "tuple",
2408        "internalType": "struct BN254.G2Point",
2409        "components": [
2410          {
2411            "name": "x0",
2412            "type": "uint256",
2413            "internalType": "BN254.BaseField"
2414          },
2415          {
2416            "name": "x1",
2417            "type": "uint256",
2418            "internalType": "BN254.BaseField"
2419          },
2420          {
2421            "name": "y0",
2422            "type": "uint256",
2423            "internalType": "BN254.BaseField"
2424          },
2425          {
2426            "name": "y1",
2427            "type": "uint256",
2428            "internalType": "BN254.BaseField"
2429          }
2430        ]
2431      },
2432      {
2433        "name": "schnorrVK",
2434        "type": "tuple",
2435        "internalType": "struct EdOnBN254.EdOnBN254Point",
2436        "components": [
2437          {
2438            "name": "x",
2439            "type": "uint256",
2440            "internalType": "uint256"
2441          },
2442          {
2443            "name": "y",
2444            "type": "uint256",
2445            "internalType": "uint256"
2446          }
2447        ]
2448      },
2449      {
2450        "name": "blsSig",
2451        "type": "tuple",
2452        "internalType": "struct BN254.G1Point",
2453        "components": [
2454          {
2455            "name": "x",
2456            "type": "uint256",
2457            "internalType": "BN254.BaseField"
2458          },
2459          {
2460            "name": "y",
2461            "type": "uint256",
2462            "internalType": "BN254.BaseField"
2463          }
2464        ]
2465      },
2466      {
2467        "name": "schnorrSig",
2468        "type": "bytes",
2469        "internalType": "bytes"
2470      }
2471    ],
2472    "outputs": [],
2473    "stateMutability": "nonpayable"
2474  },
2475  {
2476    "type": "function",
2477    "name": "updateExitEscrowPeriod",
2478    "inputs": [
2479      {
2480        "name": "newExitEscrowPeriod",
2481        "type": "uint64",
2482        "internalType": "uint64"
2483      }
2484    ],
2485    "outputs": [],
2486    "stateMutability": "nonpayable"
2487  },
2488  {
2489    "type": "function",
2490    "name": "upgradeToAndCall",
2491    "inputs": [
2492      {
2493        "name": "newImplementation",
2494        "type": "address",
2495        "internalType": "address"
2496      },
2497      {
2498        "name": "data",
2499        "type": "bytes",
2500        "internalType": "bytes"
2501      }
2502    ],
2503    "outputs": [],
2504    "stateMutability": "payable"
2505  },
2506  {
2507    "type": "function",
2508    "name": "validatorExits",
2509    "inputs": [
2510      {
2511        "name": "validator",
2512        "type": "address",
2513        "internalType": "address"
2514      }
2515    ],
2516    "outputs": [
2517      {
2518        "name": "unlocksAt",
2519        "type": "uint256",
2520        "internalType": "uint256"
2521      }
2522    ],
2523    "stateMutability": "view"
2524  },
2525  {
2526    "type": "function",
2527    "name": "validators",
2528    "inputs": [
2529      {
2530        "name": "account",
2531        "type": "address",
2532        "internalType": "address"
2533      }
2534    ],
2535    "outputs": [
2536      {
2537        "name": "delegatedAmount",
2538        "type": "uint256",
2539        "internalType": "uint256"
2540      },
2541      {
2542        "name": "status",
2543        "type": "uint8",
2544        "internalType": "enum StakeTable.ValidatorStatus"
2545      }
2546    ],
2547    "stateMutability": "view"
2548  },
2549  {
2550    "type": "event",
2551    "name": "CommissionUpdated",
2552    "inputs": [
2553      {
2554        "name": "validator",
2555        "type": "address",
2556        "indexed": true,
2557        "internalType": "address"
2558      },
2559      {
2560        "name": "timestamp",
2561        "type": "uint256",
2562        "indexed": false,
2563        "internalType": "uint256"
2564      },
2565      {
2566        "name": "oldCommission",
2567        "type": "uint16",
2568        "indexed": false,
2569        "internalType": "uint16"
2570      },
2571      {
2572        "name": "newCommission",
2573        "type": "uint16",
2574        "indexed": false,
2575        "internalType": "uint16"
2576      }
2577    ],
2578    "anonymous": false
2579  },
2580  {
2581    "type": "event",
2582    "name": "ConsensusKeysUpdated",
2583    "inputs": [
2584      {
2585        "name": "account",
2586        "type": "address",
2587        "indexed": true,
2588        "internalType": "address"
2589      },
2590      {
2591        "name": "blsVK",
2592        "type": "tuple",
2593        "indexed": false,
2594        "internalType": "struct BN254.G2Point",
2595        "components": [
2596          {
2597            "name": "x0",
2598            "type": "uint256",
2599            "internalType": "BN254.BaseField"
2600          },
2601          {
2602            "name": "x1",
2603            "type": "uint256",
2604            "internalType": "BN254.BaseField"
2605          },
2606          {
2607            "name": "y0",
2608            "type": "uint256",
2609            "internalType": "BN254.BaseField"
2610          },
2611          {
2612            "name": "y1",
2613            "type": "uint256",
2614            "internalType": "BN254.BaseField"
2615          }
2616        ]
2617      },
2618      {
2619        "name": "schnorrVK",
2620        "type": "tuple",
2621        "indexed": false,
2622        "internalType": "struct EdOnBN254.EdOnBN254Point",
2623        "components": [
2624          {
2625            "name": "x",
2626            "type": "uint256",
2627            "internalType": "uint256"
2628          },
2629          {
2630            "name": "y",
2631            "type": "uint256",
2632            "internalType": "uint256"
2633          }
2634        ]
2635      }
2636    ],
2637    "anonymous": false
2638  },
2639  {
2640    "type": "event",
2641    "name": "ConsensusKeysUpdatedV2",
2642    "inputs": [
2643      {
2644        "name": "account",
2645        "type": "address",
2646        "indexed": true,
2647        "internalType": "address"
2648      },
2649      {
2650        "name": "blsVK",
2651        "type": "tuple",
2652        "indexed": false,
2653        "internalType": "struct BN254.G2Point",
2654        "components": [
2655          {
2656            "name": "x0",
2657            "type": "uint256",
2658            "internalType": "BN254.BaseField"
2659          },
2660          {
2661            "name": "x1",
2662            "type": "uint256",
2663            "internalType": "BN254.BaseField"
2664          },
2665          {
2666            "name": "y0",
2667            "type": "uint256",
2668            "internalType": "BN254.BaseField"
2669          },
2670          {
2671            "name": "y1",
2672            "type": "uint256",
2673            "internalType": "BN254.BaseField"
2674          }
2675        ]
2676      },
2677      {
2678        "name": "schnorrVK",
2679        "type": "tuple",
2680        "indexed": false,
2681        "internalType": "struct EdOnBN254.EdOnBN254Point",
2682        "components": [
2683          {
2684            "name": "x",
2685            "type": "uint256",
2686            "internalType": "uint256"
2687          },
2688          {
2689            "name": "y",
2690            "type": "uint256",
2691            "internalType": "uint256"
2692          }
2693        ]
2694      },
2695      {
2696        "name": "blsSig",
2697        "type": "tuple",
2698        "indexed": false,
2699        "internalType": "struct BN254.G1Point",
2700        "components": [
2701          {
2702            "name": "x",
2703            "type": "uint256",
2704            "internalType": "BN254.BaseField"
2705          },
2706          {
2707            "name": "y",
2708            "type": "uint256",
2709            "internalType": "BN254.BaseField"
2710          }
2711        ]
2712      },
2713      {
2714        "name": "schnorrSig",
2715        "type": "bytes",
2716        "indexed": false,
2717        "internalType": "bytes"
2718      }
2719    ],
2720    "anonymous": false
2721  },
2722  {
2723    "type": "event",
2724    "name": "Delegated",
2725    "inputs": [
2726      {
2727        "name": "delegator",
2728        "type": "address",
2729        "indexed": true,
2730        "internalType": "address"
2731      },
2732      {
2733        "name": "validator",
2734        "type": "address",
2735        "indexed": true,
2736        "internalType": "address"
2737      },
2738      {
2739        "name": "amount",
2740        "type": "uint256",
2741        "indexed": false,
2742        "internalType": "uint256"
2743      }
2744    ],
2745    "anonymous": false
2746  },
2747  {
2748    "type": "event",
2749    "name": "ExitEscrowPeriodUpdated",
2750    "inputs": [
2751      {
2752        "name": "newExitEscrowPeriod",
2753        "type": "uint64",
2754        "indexed": false,
2755        "internalType": "uint64"
2756      }
2757    ],
2758    "anonymous": false
2759  },
2760  {
2761    "type": "event",
2762    "name": "Initialized",
2763    "inputs": [
2764      {
2765        "name": "version",
2766        "type": "uint64",
2767        "indexed": false,
2768        "internalType": "uint64"
2769      }
2770    ],
2771    "anonymous": false
2772  },
2773  {
2774    "type": "event",
2775    "name": "MaxCommissionIncreaseUpdated",
2776    "inputs": [
2777      {
2778        "name": "newMaxIncrease",
2779        "type": "uint16",
2780        "indexed": false,
2781        "internalType": "uint16"
2782      }
2783    ],
2784    "anonymous": false
2785  },
2786  {
2787    "type": "event",
2788    "name": "MinCommissionUpdateIntervalUpdated",
2789    "inputs": [
2790      {
2791        "name": "newInterval",
2792        "type": "uint256",
2793        "indexed": false,
2794        "internalType": "uint256"
2795      }
2796    ],
2797    "anonymous": false
2798  },
2799  {
2800    "type": "event",
2801    "name": "OwnershipTransferred",
2802    "inputs": [
2803      {
2804        "name": "previousOwner",
2805        "type": "address",
2806        "indexed": true,
2807        "internalType": "address"
2808      },
2809      {
2810        "name": "newOwner",
2811        "type": "address",
2812        "indexed": true,
2813        "internalType": "address"
2814      }
2815    ],
2816    "anonymous": false
2817  },
2818  {
2819    "type": "event",
2820    "name": "Paused",
2821    "inputs": [
2822      {
2823        "name": "account",
2824        "type": "address",
2825        "indexed": false,
2826        "internalType": "address"
2827      }
2828    ],
2829    "anonymous": false
2830  },
2831  {
2832    "type": "event",
2833    "name": "RoleAdminChanged",
2834    "inputs": [
2835      {
2836        "name": "role",
2837        "type": "bytes32",
2838        "indexed": true,
2839        "internalType": "bytes32"
2840      },
2841      {
2842        "name": "previousAdminRole",
2843        "type": "bytes32",
2844        "indexed": true,
2845        "internalType": "bytes32"
2846      },
2847      {
2848        "name": "newAdminRole",
2849        "type": "bytes32",
2850        "indexed": true,
2851        "internalType": "bytes32"
2852      }
2853    ],
2854    "anonymous": false
2855  },
2856  {
2857    "type": "event",
2858    "name": "RoleGranted",
2859    "inputs": [
2860      {
2861        "name": "role",
2862        "type": "bytes32",
2863        "indexed": true,
2864        "internalType": "bytes32"
2865      },
2866      {
2867        "name": "account",
2868        "type": "address",
2869        "indexed": true,
2870        "internalType": "address"
2871      },
2872      {
2873        "name": "sender",
2874        "type": "address",
2875        "indexed": true,
2876        "internalType": "address"
2877      }
2878    ],
2879    "anonymous": false
2880  },
2881  {
2882    "type": "event",
2883    "name": "RoleRevoked",
2884    "inputs": [
2885      {
2886        "name": "role",
2887        "type": "bytes32",
2888        "indexed": true,
2889        "internalType": "bytes32"
2890      },
2891      {
2892        "name": "account",
2893        "type": "address",
2894        "indexed": true,
2895        "internalType": "address"
2896      },
2897      {
2898        "name": "sender",
2899        "type": "address",
2900        "indexed": true,
2901        "internalType": "address"
2902      }
2903    ],
2904    "anonymous": false
2905  },
2906  {
2907    "type": "event",
2908    "name": "Undelegated",
2909    "inputs": [
2910      {
2911        "name": "delegator",
2912        "type": "address",
2913        "indexed": true,
2914        "internalType": "address"
2915      },
2916      {
2917        "name": "validator",
2918        "type": "address",
2919        "indexed": true,
2920        "internalType": "address"
2921      },
2922      {
2923        "name": "amount",
2924        "type": "uint256",
2925        "indexed": false,
2926        "internalType": "uint256"
2927      }
2928    ],
2929    "anonymous": false
2930  },
2931  {
2932    "type": "event",
2933    "name": "Unpaused",
2934    "inputs": [
2935      {
2936        "name": "account",
2937        "type": "address",
2938        "indexed": false,
2939        "internalType": "address"
2940      }
2941    ],
2942    "anonymous": false
2943  },
2944  {
2945    "type": "event",
2946    "name": "Upgraded",
2947    "inputs": [
2948      {
2949        "name": "implementation",
2950        "type": "address",
2951        "indexed": true,
2952        "internalType": "address"
2953      }
2954    ],
2955    "anonymous": false
2956  },
2957  {
2958    "type": "event",
2959    "name": "ValidatorExit",
2960    "inputs": [
2961      {
2962        "name": "validator",
2963        "type": "address",
2964        "indexed": true,
2965        "internalType": "address"
2966      }
2967    ],
2968    "anonymous": false
2969  },
2970  {
2971    "type": "event",
2972    "name": "ValidatorRegistered",
2973    "inputs": [
2974      {
2975        "name": "account",
2976        "type": "address",
2977        "indexed": true,
2978        "internalType": "address"
2979      },
2980      {
2981        "name": "blsVk",
2982        "type": "tuple",
2983        "indexed": false,
2984        "internalType": "struct BN254.G2Point",
2985        "components": [
2986          {
2987            "name": "x0",
2988            "type": "uint256",
2989            "internalType": "BN254.BaseField"
2990          },
2991          {
2992            "name": "x1",
2993            "type": "uint256",
2994            "internalType": "BN254.BaseField"
2995          },
2996          {
2997            "name": "y0",
2998            "type": "uint256",
2999            "internalType": "BN254.BaseField"
3000          },
3001          {
3002            "name": "y1",
3003            "type": "uint256",
3004            "internalType": "BN254.BaseField"
3005          }
3006        ]
3007      },
3008      {
3009        "name": "schnorrVk",
3010        "type": "tuple",
3011        "indexed": false,
3012        "internalType": "struct EdOnBN254.EdOnBN254Point",
3013        "components": [
3014          {
3015            "name": "x",
3016            "type": "uint256",
3017            "internalType": "uint256"
3018          },
3019          {
3020            "name": "y",
3021            "type": "uint256",
3022            "internalType": "uint256"
3023          }
3024        ]
3025      },
3026      {
3027        "name": "commission",
3028        "type": "uint16",
3029        "indexed": false,
3030        "internalType": "uint16"
3031      }
3032    ],
3033    "anonymous": false
3034  },
3035  {
3036    "type": "event",
3037    "name": "ValidatorRegisteredV2",
3038    "inputs": [
3039      {
3040        "name": "account",
3041        "type": "address",
3042        "indexed": true,
3043        "internalType": "address"
3044      },
3045      {
3046        "name": "blsVK",
3047        "type": "tuple",
3048        "indexed": false,
3049        "internalType": "struct BN254.G2Point",
3050        "components": [
3051          {
3052            "name": "x0",
3053            "type": "uint256",
3054            "internalType": "BN254.BaseField"
3055          },
3056          {
3057            "name": "x1",
3058            "type": "uint256",
3059            "internalType": "BN254.BaseField"
3060          },
3061          {
3062            "name": "y0",
3063            "type": "uint256",
3064            "internalType": "BN254.BaseField"
3065          },
3066          {
3067            "name": "y1",
3068            "type": "uint256",
3069            "internalType": "BN254.BaseField"
3070          }
3071        ]
3072      },
3073      {
3074        "name": "schnorrVK",
3075        "type": "tuple",
3076        "indexed": false,
3077        "internalType": "struct EdOnBN254.EdOnBN254Point",
3078        "components": [
3079          {
3080            "name": "x",
3081            "type": "uint256",
3082            "internalType": "uint256"
3083          },
3084          {
3085            "name": "y",
3086            "type": "uint256",
3087            "internalType": "uint256"
3088          }
3089        ]
3090      },
3091      {
3092        "name": "commission",
3093        "type": "uint16",
3094        "indexed": false,
3095        "internalType": "uint16"
3096      },
3097      {
3098        "name": "blsSig",
3099        "type": "tuple",
3100        "indexed": false,
3101        "internalType": "struct BN254.G1Point",
3102        "components": [
3103          {
3104            "name": "x",
3105            "type": "uint256",
3106            "internalType": "BN254.BaseField"
3107          },
3108          {
3109            "name": "y",
3110            "type": "uint256",
3111            "internalType": "BN254.BaseField"
3112          }
3113        ]
3114      },
3115      {
3116        "name": "schnorrSig",
3117        "type": "bytes",
3118        "indexed": false,
3119        "internalType": "bytes"
3120      }
3121    ],
3122    "anonymous": false
3123  },
3124  {
3125    "type": "event",
3126    "name": "Withdrawal",
3127    "inputs": [
3128      {
3129        "name": "account",
3130        "type": "address",
3131        "indexed": true,
3132        "internalType": "address"
3133      },
3134      {
3135        "name": "amount",
3136        "type": "uint256",
3137        "indexed": false,
3138        "internalType": "uint256"
3139      }
3140    ],
3141    "anonymous": false
3142  },
3143  {
3144    "type": "error",
3145    "name": "AccessControlBadConfirmation",
3146    "inputs": []
3147  },
3148  {
3149    "type": "error",
3150    "name": "AccessControlUnauthorizedAccount",
3151    "inputs": [
3152      {
3153        "name": "account",
3154        "type": "address",
3155        "internalType": "address"
3156      },
3157      {
3158        "name": "neededRole",
3159        "type": "bytes32",
3160        "internalType": "bytes32"
3161      }
3162    ]
3163  },
3164  {
3165    "type": "error",
3166    "name": "AddressEmptyCode",
3167    "inputs": [
3168      {
3169        "name": "target",
3170        "type": "address",
3171        "internalType": "address"
3172      }
3173    ]
3174  },
3175  {
3176    "type": "error",
3177    "name": "BLSSigVerificationFailed",
3178    "inputs": []
3179  },
3180  {
3181    "type": "error",
3182    "name": "BN254PairingProdFailed",
3183    "inputs": []
3184  },
3185  {
3186    "type": "error",
3187    "name": "BlsKeyAlreadyUsed",
3188    "inputs": []
3189  },
3190  {
3191    "type": "error",
3192    "name": "CommissionAlreadyInitialized",
3193    "inputs": [
3194      {
3195        "name": "validator",
3196        "type": "address",
3197        "internalType": "address"
3198      }
3199    ]
3200  },
3201  {
3202    "type": "error",
3203    "name": "CommissionIncreaseExceedsMax",
3204    "inputs": []
3205  },
3206  {
3207    "type": "error",
3208    "name": "CommissionUnchanged",
3209    "inputs": []
3210  },
3211  {
3212    "type": "error",
3213    "name": "CommissionUpdateTooSoon",
3214    "inputs": []
3215  },
3216  {
3217    "type": "error",
3218    "name": "DeprecatedFunction",
3219    "inputs": []
3220  },
3221  {
3222    "type": "error",
3223    "name": "ERC1967InvalidImplementation",
3224    "inputs": [
3225      {
3226        "name": "implementation",
3227        "type": "address",
3228        "internalType": "address"
3229      }
3230    ]
3231  },
3232  {
3233    "type": "error",
3234    "name": "ERC1967NonPayable",
3235    "inputs": []
3236  },
3237  {
3238    "type": "error",
3239    "name": "EnforcedPause",
3240    "inputs": []
3241  },
3242  {
3243    "type": "error",
3244    "name": "ExitEscrowPeriodInvalid",
3245    "inputs": []
3246  },
3247  {
3248    "type": "error",
3249    "name": "ExpectedPause",
3250    "inputs": []
3251  },
3252  {
3253    "type": "error",
3254    "name": "FailedInnerCall",
3255    "inputs": []
3256  },
3257  {
3258    "type": "error",
3259    "name": "InsufficientAllowance",
3260    "inputs": [
3261      {
3262        "name": "",
3263        "type": "uint256",
3264        "internalType": "uint256"
3265      },
3266      {
3267        "name": "",
3268        "type": "uint256",
3269        "internalType": "uint256"
3270      }
3271    ]
3272  },
3273  {
3274    "type": "error",
3275    "name": "InsufficientBalance",
3276    "inputs": [
3277      {
3278        "name": "",
3279        "type": "uint256",
3280        "internalType": "uint256"
3281      }
3282    ]
3283  },
3284  {
3285    "type": "error",
3286    "name": "InvalidCommission",
3287    "inputs": []
3288  },
3289  {
3290    "type": "error",
3291    "name": "InvalidG1",
3292    "inputs": []
3293  },
3294  {
3295    "type": "error",
3296    "name": "InvalidInitialization",
3297    "inputs": []
3298  },
3299  {
3300    "type": "error",
3301    "name": "InvalidRateLimitParameters",
3302    "inputs": []
3303  },
3304  {
3305    "type": "error",
3306    "name": "InvalidSchnorrSig",
3307    "inputs": []
3308  },
3309  {
3310    "type": "error",
3311    "name": "InvalidSchnorrVK",
3312    "inputs": []
3313  },
3314  {
3315    "type": "error",
3316    "name": "NotInitializing",
3317    "inputs": []
3318  },
3319  {
3320    "type": "error",
3321    "name": "NothingToWithdraw",
3322    "inputs": []
3323  },
3324  {
3325    "type": "error",
3326    "name": "OwnableInvalidOwner",
3327    "inputs": [
3328      {
3329        "name": "owner",
3330        "type": "address",
3331        "internalType": "address"
3332      }
3333    ]
3334  },
3335  {
3336    "type": "error",
3337    "name": "OwnableUnauthorizedAccount",
3338    "inputs": [
3339      {
3340        "name": "account",
3341        "type": "address",
3342        "internalType": "address"
3343      }
3344    ]
3345  },
3346  {
3347    "type": "error",
3348    "name": "PowPrecompileFailed",
3349    "inputs": []
3350  },
3351  {
3352    "type": "error",
3353    "name": "PrematureWithdrawal",
3354    "inputs": []
3355  },
3356  {
3357    "type": "error",
3358    "name": "SchnorrKeyAlreadyUsed",
3359    "inputs": []
3360  },
3361  {
3362    "type": "error",
3363    "name": "UUPSUnauthorizedCallContext",
3364    "inputs": []
3365  },
3366  {
3367    "type": "error",
3368    "name": "UUPSUnsupportedProxiableUUID",
3369    "inputs": [
3370      {
3371        "name": "slot",
3372        "type": "bytes32",
3373        "internalType": "bytes32"
3374      }
3375    ]
3376  },
3377  {
3378    "type": "error",
3379    "name": "UndelegationAlreadyExists",
3380    "inputs": []
3381  },
3382  {
3383    "type": "error",
3384    "name": "ValidatorAlreadyExited",
3385    "inputs": []
3386  },
3387  {
3388    "type": "error",
3389    "name": "ValidatorAlreadyRegistered",
3390    "inputs": []
3391  },
3392  {
3393    "type": "error",
3394    "name": "ValidatorInactive",
3395    "inputs": []
3396  },
3397  {
3398    "type": "error",
3399    "name": "ValidatorNotExited",
3400    "inputs": []
3401  },
3402  {
3403    "type": "error",
3404    "name": "ZeroAddress",
3405    "inputs": []
3406  },
3407  {
3408    "type": "error",
3409    "name": "ZeroAmount",
3410    "inputs": []
3411  }
3412]
3413```*/
3414#[allow(
3415    non_camel_case_types,
3416    non_snake_case,
3417    clippy::pub_underscore_fields,
3418    clippy::style,
3419    clippy::empty_structs_with_brackets
3420)]
3421pub mod StakeTableV2 {
3422    use super::*;
3423    use alloy::sol_types as alloy_sol_types;
3424    /// The creation / init bytecode of the contract.
3425    ///
3426    /// ```text
3427    ///0x60a060405230608052348015610013575f5ffd5b5061001c610031565b610024610031565b61002c610031565b6100e3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100815760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613c5a6101095f395f8181611e1601528181611e3f0152611f7e0152613c5a5ff3fe608060405260043610610280575f3560e01c8063715018a611610155578063b3e6ebd5116100be578063d547741f11610078578063d547741f1461084c578063d9cc7d261461086b578063e63ab1e914610880578063f2fde38b146108a0578063fa52c7d8146108bf578063fc0c546a14610902575f5ffd5b8063b3e6ebd514610760578063b5700e681461078e578063b5ecb344146107ad578063be203094146107d8578063c64814dd146107f7578063c75f543e1461082d575f5ffd5b80639ffb6b431161010f5780639ffb6b431461062d578063a217fddf14610680578063a2d78dd514610693578063a3066aab146106e5578063ac5c2ad014610704578063ad3cb1cc14610723575f5ffd5b8063715018a6146105625780638456cb59146105765780638da5cb5b1461058a57806391d14854146105da5780639b30a5e6146105f95780639e9a8f3114610618575f5ffd5b8063394b348f116101f75780634f1ef286116101b15780634f1ef286146104bc57806352d1902d146104cf5780635544c2f1146104e35780635c975abb146104fd5780635f8754a6146105205780636a911ccf1461054e575f5ffd5b8063394b348f1461040a5780633b2b7ffa146104295780633e9df9b5146104485780633f3bb3661461045c5780633f4ba83a146104895780634d99dd161461049d575f5ffd5b80632140fecd116102485780632140fecd14610342578063248a9ca3146103615780632dc9bac61461038e5780632f2ff15d146103ad578063304240bf146103cc57806336568abe146103eb575f5ffd5b806301ffc9a714610284578063026e402b146102b85780630d8e6e2c146102d957806313b9057a146103045780631a20cd6314610323575b5f5ffd5b34801561028f575f5ffd5b506102a361029e3660046131ba565b610921565b60405190151581526020015b60405180910390f35b3480156102c3575f5ffd5b506102d76102d23660046131fc565b610957565b005b3480156102e4575f5ffd5b5060408051600281525f60208201819052918101919091526060016102af565b34801561030f575f5ffd5b506102d761031e366004613300565b61096d565b34801561032e575f5ffd5b506102d761033d36600461336a565b610986565b34801561034d575f5ffd5b506102d761035c366004613385565b610a9a565b34801561036c575f5ffd5b5061038061037b36600461339e565b610bee565b6040519081526020016102af565b348015610399575f5ffd5b506102d76103a83660046133b5565b610c0e565b3480156103b8575f5ffd5b506102d76103c73660046133ce565b610c97565b3480156103d7575f5ffd5b506102d76103e6366004613481565b610cb9565b3480156103f6575f5ffd5b506102d76104053660046133ce565b610ec1565b348015610415575f5ffd5b506102d761042436600461339e565b610ef9565b348015610434575f5ffd5b506102d76104433660046133b5565b610f66565b348015610453575f5ffd5b506103805f5481565b348015610467575f5ffd5b50600a546104769061ffff1681565b60405161ffff90911681526020016102af565b348015610494575f5ffd5b506102d76110c9565b3480156104a8575f5ffd5b506102d76104b73660046131fc565b6110eb565b6102d76104ca366004613501565b6110fd565b3480156104da575f5ffd5b50610380611118565b3480156104ee575f5ffd5b506102d761031e36600461354b565b348015610508575f5ffd5b505f516020613c0e5f395f51905f525460ff166102a3565b34801561052b575f5ffd5b506102a361053a36600461339e565b600c6020525f908152604090205460ff1681565b348015610559575f5ffd5b506102d7611133565b34801561056d575f5ffd5b506102d76111bd565b348015610581575f5ffd5b506102d76111d0565b348015610595575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016102af565b3480156105e5575f5ffd5b506102a36105f43660046133ce565b6111ef565b348015610604575f5ffd5b5061038061061336600461358f565b611225565b348015610623575f5ffd5b5061038060085481565b348015610638575f5ffd5b50610666610647366004613385565b600b6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff90931683526020830191909152016102af565b34801561068b575f5ffd5b506103805f81565b34801561069e575f5ffd5b506106d06106ad3660046135a9565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102af565b3480156106f0575f5ffd5b506102d76106ff366004613385565b61127f565b34801561070f575f5ffd5b506102d761071e3660046135d1565b611290565b34801561072e575f5ffd5b50610753604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102af919061366e565b34801561076b575f5ffd5b506102a361077a36600461339e565b60046020525f908152604090205460ff1681565b348015610799575f5ffd5b506001546105c2906001600160a01b031681565b3480156107b8575f5ffd5b506103806107c7366004613385565b60056020525f908152604090205481565b3480156107e3575f5ffd5b506102d76107f2366004613680565b611367565b348015610802575f5ffd5b506103806108113660046135a9565b600660209081525f928352604080842090915290825290205481565b348015610838575f5ffd5b506102d76108473660046136bf565b61147e565b348015610857575f5ffd5b506102d76108663660046133ce565b61158d565b348015610876575f5ffd5b5061038060095481565b34801561088b575f5ffd5b506103805f516020613bce5f395f51905f5281565b3480156108ab575f5ffd5b506102d76108ba366004613385565b6115a9565b3480156108ca575f5ffd5b506108f46108d9366004613385565b60036020525f90815260409020805460019091015460ff1682565b6040516102af92919061375e565b34801561090d575f5ffd5b506002546105c2906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b148061095157506301ffc9a760e01b6001600160e01b03198316145b92915050565b61095f6115e8565b6109698282611618565b5050565b60405163c2d7f81360e01b815260040160405180910390fd5b61098e6117b6565b60015460408051633c1a081560e21b815290515f926001600160a01b03169163f06820549160048083019260209291908290030181865afa1580156109d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f9919061378e565b610a0490600f6137bd565b9050621275006001600160401b038083169084161080610a355750806001600160401b0316836001600160401b0316115b15610a535760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03831660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde9060200160405180910390a1505050565b610aa26115e8565b6001600160a01b0381165f908152600560205260408120543391819003610adc576040516379298a5360e11b815260040160405180910390fd5b80421015610afd57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610b4557604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610b899084906137df565b9091555050600254610ba5906001600160a01b03168483611811565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610be091815260200190565b60405180910390a250505050565b5f9081525f516020613bee5f395f51905f52602052604090206001015490565b610c166117b6565b5f8161ffff16118015610c2f57506127108161ffff1611155b610c4c5760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff83169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd906020015b60405180910390a150565b610ca082610bee565b610ca98161189a565b610cb383836118a4565b50505050565b610cc16115e8565b33610ccb8161194c565b610cd485611999565b610cde86866119d4565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610d10818689611a4d565b8351604014610d3257604051634247068760e01b815260040160405180910390fd5b6127108361ffff161115610d595760405163dc81db8560e01b815260040160405180910390fd5b600160045f610d678a611225565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f610d9889611ae2565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115610ddf57610ddf61374a565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115610e2557610e2561374a565b02179055505060408051808201825261ffff86811682525f60208084018281526001600160a01b038916808452600b909252918590209351845461ffff191693169290921783555160019092019190915590519091507ff057d4ea81e98628653a8f90788541972078137334a92b42347eaccda80fc40a90610eb0908a908a9088908b908b906137f2565b60405180910390a250505050505050565b6001600160a01b0381163314610eea5760405163334bd91960e11b815260040160405180910390fd5b610ef48282611b06565b505050565b610f016117b6565b5f81118015610f1457506301e133808111155b610f315760405163674e8ef360e01b815260040160405180910390fd5b60098190556040518181527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610c8c565b610f6e6115e8565b33610f7881611b7f565b6127108261ffff161115610f9f5760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600b60205260409020805461ffff908116908416819003610fe157604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff16111561106d57600182015480158061100f575060095461100b9082613864565b4210155b61102c576040516316eb94cb60e01b815260040160405180910390fd5b600a5461103d9061ffff1683613877565b61ffff168561ffff161115611065576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd6490606001610be0565b5f516020613bce5f395f51905f526110e08161189a565b6110e8611c00565b50565b6110f36115e8565b6109698282611c59565b611105611e0b565b61110e82611eaf565b6109698282611eb7565b5f611121611f73565b505f516020613bae5f395f51905f5290565b61113b6115e8565b3361114581611b7f565b6001600160a01b0381165f908152600360205260409020600101805460ff191660021790556008546111779042613864565b6001600160a01b0382165f8181526005602052604080822093909355915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b6111c56117b6565b6111ce5f611fbc565b565b5f516020613bce5f395f51905f526111e78161189a565b6110e861202c565b5f9182525f516020613bee5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611262949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6112876115e8565b6110e881612074565b6112986115e8565b336112a281611b7f565b6112ab84611999565b6112b585856119d4565b604080516001600160a01b03831660208201525f910160405160208183030381529060405290506112e7818588611a4d565b600160045f6112f589611225565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5878787876040516113579493929190613891565b60405180910390a2505050505050565b5f516020613c2e5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156113985750825b90505f826001600160401b031660011480156113b35750303b155b9050811580156113c1575080155b156113df5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561140957845460ff60401b1916600160401b1785555b61141286612184565b61141a612195565b61142261219d565b61142d89898961228f565b831561147357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f516020613c2e5f395f51905f52805460029190600160401b900460ff16806114b4575080546001600160401b03808416911610155b156114d25760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556114fb612195565b6115055f866118a4565b5061151d5f516020613bce5f395f51905f52876118a4565b5062093a80600955600a805461ffff19166101f417905561153e8484612338565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b61159682610bee565b61159f8161189a565b610cb38383611b06565b6115b16117b6565b6001600160a01b0381166115df57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6110e881611fbc565b5f516020613c0e5f395f51905f525460ff16156111ce5760405163d93c066560e01b815260040160405180910390fd5b61162182611b7f565b335f82900361164357604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015611691573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b591906138f7565b9050828110156116e25760405163054365bb60e31b815260048101829052602481018490526044016115d6565b6002546116fa906001600160a01b03168330866124cd565b6001600160a01b0384165f9081526003602052604081208054859290611721908490613864565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061175c908490613864565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516117a891815260200190565b60405180910390a350505050565b336117e87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146111ce5760405163118cdaa760e01b81523360048201526024016115d6565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f51141615161561185b5750823b153d17155b80610cb35760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016115d6565b6110e8813361256a565b5f5f516020613bee5f395f51905f526118bd84846111ef565b61193c575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556118f23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610951565b5f915050610951565b5092915050565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561197b5761197b61374a565b146110e85760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526119b682826125a3565b15610969576040516306cf438f60e01b815260040160405180910390fd5b60045f6119e084611225565b815260208101919091526040015f205460ff1615611a105760405162da8a5760e11b815260040160405180910390fd5b600c5f611a1c83611ae2565b815260208101919091526040015f205460ff16156109695760405163ae493b0360e01b815260040160405180910390fd5b611a56826125c4565b5f604051806060016040528060248152602001613b6a6024913990505f8482604051602001611a86929190613925565b60405160208183030381529060405290505f611aa18261262b565b9050611abe8185611ab188612718565b611ab961278f565b61285c565b611ada5760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611262929190918252602082015260400190565b5f5f516020613bee5f395f51905f52611b1f84846111ef565b1561193c575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610951565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115611bb057611bb061374a565b03611bce5760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611be257611be261374a565b036109695760405163eab4a96360e01b815260040160405180910390fd5b611c0861290b565b5f516020613c0e5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001610c8c565b611c6282611b7f565b335f829003611c8457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209385168352929052205415611cc75760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015611d1057604051639266535160e01b8152600481018290526024016115d6565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290611d469084906137df565b92505081905550604051806040016040528084815260200160085442611d6c9190613864565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290611dbf9084906137df565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516117a891815260200190565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611e9157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e855f516020613bae5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156111ce5760405163703e46dd60e11b815260040160405180910390fd5b6110e86117b6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f11575060408051601f3d908101601f19168201909252611f0e918101906138f7565b60015b611f3957604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115d6565b5f516020613bae5f395f51905f528114611f6957604051632a87526960e21b8152600481018290526024016115d6565b610ef4838361293a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111ce5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6120346115e8565b5f516020613c0e5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611c41565b6001600160a01b0381165f90815260076020908152604080832033808552925282205490918190036120b957604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209386168352929052206001015442101561210157604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f908152600760209081526040808320868516845290915281208181556001015560025461213c91168383611811565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161217791815260200190565b60405180910390a2505050565b61218c61298f565b6110e8816129c5565b6111ce61298f565b5f516020613c2e5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156121ce5750825b90505f826001600160401b031660011480156121e95750303b155b9050811580156121f7575080155b156122155760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561223f57845460ff60401b1916600160401b1785555b435f55831561228857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001600160a01b0383166122b65760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166122dd5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b0319928316179092556001805492851692909116919091179055605a808210156123305760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b5f5b81811015610ef4575f83838381811061235557612355613941565b61236b9260206040909202019081019150613385565b90505f84848481811061238057612380613941565b905060400201602001602081019061239891906133b5565b90506127108161ffff1611156123c15760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156123f2576123f261374a565b036124105760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600b602052604090206001015415801561245157506001600160a01b0383165f908152600b602052604090205461ffff16155b839061247c5760405163050814e160e41b81526001600160a01b0390911660048201526024016115d6565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600b9052919091209051815461ffff1916921691909117815590516001918201550161233a565b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f5114161516156125265750833b153d17155b806122885760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016115d6565b61257482826111ef565b6109695760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016115d6565b805182515f911480156125bd575081602001518360200151145b9392505050565b805160208201515f915f516020613b8e5f395f51905f529115901516156125ea57505050565b825160208401518260038485858609850908838283091483821084841016169350505081610ef45760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612648836129cd565b90505f516020613b8e5f395f51905f5260035f828485099050828061266f5761266f613955565b8482099050828061268257612682613955565b82820890505f5f61269283612bd5565b925090505b806126fb5784806126aa576126aa613955565b60018708955084806126be576126be613955565b868709925084806126d1576126d1613955565b868409925084806126e4576126e4613955565b84840892506126f283612bd5565b92509050612697565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f808252602082015281516020830151159015161561273f575090565b6040518060400160405280835f015181526020015f516020613b8e5f395f51905f5284602001516127709190613969565b612787905f516020613b8e5f395f51905f526137df565b905292915050565b6127b660405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806128ff5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f516020613c0e5f395f51905f525460ff166111ce57604051638dfc202b60e01b815260040160405180910390fd5b61294382612c9d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561298757610ef48282612d00565b610969612d72565b5f516020613c2e5f395f51905f5254600160401b900460ff166111ce57604051631afcd79f60e31b815260040160405180910390fd5b6115b161298f565b5f5f6129d883612d91565b8051909150603081146129ed576129ed613988565b5f816001600160401b03811115612a0657612a06613224565b6040519080825280601f01601f191660200182016040528015612a30576020820181803683370190505b5090505f5b82811015612a9f57836001612a4a83866137df565b612a5491906137df565b81518110612a6457612a64613941565b602001015160f81c60f81b828281518110612a8157612a81613941565b60200101906001600160f81b03191690815f1a905350600101612a35565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015612b2f578381612adb85886137df565b612ae59190613864565b81518110612af557612af5613941565b602001015160f81c60f81b60f81c828281518110612b1557612b15613941565b60ff90921660209283029190910190910152600101612ac7565b505f612b3a826130dc565b90506101005f516020613b8e5f395f51905f525f612b5886896137df565b90505f5b81811015612bc5575f886001612b7284866137df565b612b7c91906137df565b81518110612b8c57612b8c613941565b016020015160f81c90508380612ba457612ba4613955565b85870995508380612bb757612bb7613955565b818708955050600101612b5c565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020613b8e5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083612c6357604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115612c7c57612c7983826137df565b92505b8080612c8a57612c8a613955565b8384099690961496919550909350505050565b806001600160a01b03163b5f03612cd257604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115d6565b5f516020613bae5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612d1c919061399c565b5f60405180830381855af49150503d805f8114612d54576040519150601f19603f3d011682016040523d82523d5f602084013e612d59565b606091505b5091509150612d6985838361313c565b95945050505050565b34156111ce5760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001612dd1929190613925565b6040516020818303038152906040529050808460f81b604051602001612df89291906139a7565b604051602081830303815290604052905080604051602001612e1a91906139d1565b60408051601f1981840301815290829052915061010160f01b90612e4490839083906020016139e9565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b03811115612eb357612eb3613224565b6040519080825280601f01601f191660200182016040528015612edd576020820181803683370190505b5090505f82604051602001612ef491815260200190565b60408051601f1981840301815291905290505f5b8151811015612f5e57818181518110612f2357612f23613941565b602001015160f81c60f81b838281518110612f4057612f40613941565b60200101906001600160f81b03191690815f1a905350600101612f08565b505f84604051602001612f7391815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613005575f838281518110612fac57612fac613941565b602001015160f81c60f81b838381518110612fc957612fc9613941565b602001015160f81c60f81b1890508881604051602001612fea929190613a0d565b60408051601f19818403018152919052985050600101612f91565b5086888760405160200161301b93929190613a31565b6040516020818303038152906040529650868051906020012093508360405160200161304991815260200190565b60408051601f1981840301815291905291505f5b61306a8a60ff8d166137df565b8110156130cb5782818151811061308357613083613941565b01602001516001600160f81b0319168461309d838d613864565b815181106130ad576130ad613941565b60200101906001600160f81b03191690815f1a90535060010161305d565b50919b9a5050505050505050505050565b5f80805b8351811015611945578381815181106130fb576130fb613941565b602002602001015160ff168160086131139190613a64565b61311e906002613b5e565b6131289190613a64565b6131329083613864565b91506001016130e0565b6060826131515761314c82613191565b6125bd565b815115801561316857506001600160a01b0384163b155b1561194557604051639996b31560e01b81526001600160a01b03851660048201526024016115d6565b8051156131a15780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156131ca575f5ffd5b81356001600160e01b0319811681146125bd575f5ffd5b80356001600160a01b03811681146131f7575f5ffd5b919050565b5f5f6040838503121561320d575f5ffd5b613216836131e1565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561325a5761325a613224565b60405290565b5f60808284031215613270575f5ffd5b604051608081016001600160401b038111828210171561329257613292613224565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156132d0575f5ffd5b6132d8613238565b823581526020928301359281019290925250919050565b803561ffff811681146131f7575f5ffd5b5f5f5f5f6101208587031215613314575f5ffd5b61331e8686613260565b935061332d86608087016132c0565b925061333c8660c087016132c0565b915061334b61010086016132ef565b905092959194509250565b6001600160401b03811681146110e8575f5ffd5b5f6020828403121561337a575f5ffd5b81356125bd81613356565b5f60208284031215613395575f5ffd5b6125bd826131e1565b5f602082840312156133ae575f5ffd5b5035919050565b5f602082840312156133c5575f5ffd5b6125bd826132ef565b5f5f604083850312156133df575f5ffd5b823591506133ef602084016131e1565b90509250929050565b5f82601f830112613407575f5ffd5b81356001600160401b0381111561342057613420613224565b604051601f8201601f19908116603f011681016001600160401b038111828210171561344e5761344e613224565b604052818152838201602001851015613465575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f6101408688031215613496575f5ffd5b6134a08787613260565b94506134af87608088016132c0565b93506134be8760c088016132c0565b92506101008601356001600160401b038111156134d9575f5ffd5b6134e5888289016133f8565b9250506134f561012087016132ef565b90509295509295909350565b5f5f60408385031215613512575f5ffd5b61351b836131e1565b915060208301356001600160401b03811115613535575f5ffd5b613541858286016133f8565b9150509250929050565b5f5f5f610100848603121561355e575f5ffd5b6135688585613260565b925061357785608086016132c0565b91506135868560c086016132c0565b90509250925092565b5f6080828403121561359f575f5ffd5b6125bd8383613260565b5f5f604083850312156135ba575f5ffd5b6135c3836131e1565b91506133ef602084016131e1565b5f5f5f5f61012085870312156135e5575f5ffd5b6135ef8686613260565b93506135fe86608087016132c0565b925061360d8660c087016132c0565b91506101008501356001600160401b03811115613628575f5ffd5b613634878288016133f8565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6125bd6020830184613640565b5f5f5f5f60808587031215613693575f5ffd5b61369c856131e1565b93506136aa602086016131e1565b92506040850135915061334b606086016131e1565b5f5f5f5f606085870312156136d2575f5ffd5b6136db856131e1565b93506136e9602086016131e1565b925060408501356001600160401b03811115613703575f5ffd5b8501601f81018713613713575f5ffd5b80356001600160401b03811115613728575f5ffd5b8760208260061b840101111561373c575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061378157634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f6020828403121561379e575f5ffd5b81516125bd81613356565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160290811690818114611945576119456137a9565b81810381811115610951576109516137a9565b8551815260208087015190820152604080870151908201526060808701519082015284516080820152602085015160a082015261ffff841660c0820152825160e082015260208301516101008201526101406101208201525f613859610140830184613640565b979650505050505050565b80820180821115610951576109516137a9565b61ffff8181168382160190811115610951576109516137a9565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f6138ed610120830184613640565b9695505050505050565b5f60208284031215613907575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f613939613933838661390e565b8461390e565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261398357634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f6125bd828461390e565b5f6139b2828561390e565b5f81526001600160f81b03199390931660018401525050600201919050565b5f6139dc828461390e565b5f81526001019392505050565b5f6139f4828561390e565b6001600160f01b03199390931683525050600201919050565b5f613a18828561390e565b6001600160f81b03199390931683525050600101919050565b5f613a3c828661390e565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610951576109516137a9565b6001815b6001841115613ab657808504811115613a9a57613a9a6137a9565b6001841615613aa857908102905b60019390931c928002613a7f565b935093915050565b5f82613acc57506001610951565b81613ad857505f610951565b8160018114613aee5760028114613af857613b14565b6001915050610951565b60ff841115613b0957613b096137a9565b50506001821b610951565b5060208310610133831016604e8410600b8410161715613b37575081810a610951565b613b435f198484613a7b565b805f1904821115613b5657613b566137a9565b029392505050565b5f6125bd8383613abe56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3428    /// ```
3429    #[rustfmt::skip]
3430    #[allow(clippy::all)]
3431    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3432        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\x001V[a\0$a\x001V[a\0,a\x001V[a\0\xE3V[\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\0\x81W`@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\xE0W\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<Za\x01\t_9_\x81\x81a\x1E\x16\x01R\x81\x81a\x1E?\x01Ra\x1F~\x01Ra<Z_\xF3\xFE`\x80`@R`\x046\x10a\x02\x80W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01UW\x80c\xB3\xE6\xEB\xD5\x11a\0\xBEW\x80c\xD5Gt\x1F\x11a\0xW\x80c\xD5Gt\x1F\x14a\x08LW\x80c\xD9\xCC}&\x14a\x08kW\x80c\xE6:\xB1\xE9\x14a\x08\x80W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA0W\x80c\xFAR\xC7\xD8\x14a\x08\xBFW\x80c\xFC\x0CTj\x14a\t\x02W__\xFD[\x80c\xB3\xE6\xEB\xD5\x14a\x07`W\x80c\xB5p\x0Eh\x14a\x07\x8EW\x80c\xB5\xEC\xB3D\x14a\x07\xADW\x80c\xBE 0\x94\x14a\x07\xD8W\x80c\xC6H\x14\xDD\x14a\x07\xF7W\x80c\xC7_T>\x14a\x08-W__\xFD[\x80c\x9F\xFBkC\x11a\x01\x0FW\x80c\x9F\xFBkC\x14a\x06-W\x80c\xA2\x17\xFD\xDF\x14a\x06\x80W\x80c\xA2\xD7\x8D\xD5\x14a\x06\x93W\x80c\xA3\x06j\xAB\x14a\x06\xE5W\x80c\xAC\\*\xD0\x14a\x07\x04W\x80c\xAD<\xB1\xCC\x14a\x07#W__\xFD[\x80cqP\x18\xA6\x14a\x05bW\x80c\x84V\xCBY\x14a\x05vW\x80c\x8D\xA5\xCB[\x14a\x05\x8AW\x80c\x91\xD1HT\x14a\x05\xDAW\x80c\x9B0\xA5\xE6\x14a\x05\xF9W\x80c\x9E\x9A\x8F1\x14a\x06\x18W__\xFD[\x80c9K4\x8F\x11a\x01\xF7W\x80cO\x1E\xF2\x86\x11a\x01\xB1W\x80cO\x1E\xF2\x86\x14a\x04\xBCW\x80cR\xD1\x90-\x14a\x04\xCFW\x80cUD\xC2\xF1\x14a\x04\xE3W\x80c\\\x97Z\xBB\x14a\x04\xFDW\x80c_\x87T\xA6\x14a\x05 W\x80cj\x91\x1C\xCF\x14a\x05NW__\xFD[\x80c9K4\x8F\x14a\x04\nW\x80c;+\x7F\xFA\x14a\x04)W\x80c>\x9D\xF9\xB5\x14a\x04HW\x80c?;\xB3f\x14a\x04\\W\x80c?K\xA8:\x14a\x04\x89W\x80cM\x99\xDD\x16\x14a\x04\x9DW__\xFD[\x80c!@\xFE\xCD\x11a\x02HW\x80c!@\xFE\xCD\x14a\x03BW\x80c$\x8A\x9C\xA3\x14a\x03aW\x80c-\xC9\xBA\xC6\x14a\x03\x8EW\x80c//\xF1]\x14a\x03\xADW\x80c0B@\xBF\x14a\x03\xCCW\x80c6V\x8A\xBE\x14a\x03\xEBW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x02\x84W\x80c\x02n@+\x14a\x02\xB8W\x80c\r\x8En,\x14a\x02\xD9W\x80c\x13\xB9\x05z\x14a\x03\x04W\x80c\x1A \xCDc\x14a\x03#W[__\xFD[4\x80\x15a\x02\x8FW__\xFD[Pa\x02\xA3a\x02\x9E6`\x04a1\xBAV[a\t!V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xC3W__\xFD[Pa\x02\xD7a\x02\xD26`\x04a1\xFCV[a\tWV[\0[4\x80\x15a\x02\xE4W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xAFV[4\x80\x15a\x03\x0FW__\xFD[Pa\x02\xD7a\x03\x1E6`\x04a3\0V[a\tmV[4\x80\x15a\x03.W__\xFD[Pa\x02\xD7a\x03=6`\x04a3jV[a\t\x86V[4\x80\x15a\x03MW__\xFD[Pa\x02\xD7a\x03\\6`\x04a3\x85V[a\n\x9AV[4\x80\x15a\x03lW__\xFD[Pa\x03\x80a\x03{6`\x04a3\x9EV[a\x0B\xEEV[`@Q\x90\x81R` \x01a\x02\xAFV[4\x80\x15a\x03\x99W__\xFD[Pa\x02\xD7a\x03\xA86`\x04a3\xB5V[a\x0C\x0EV[4\x80\x15a\x03\xB8W__\xFD[Pa\x02\xD7a\x03\xC76`\x04a3\xCEV[a\x0C\x97V[4\x80\x15a\x03\xD7W__\xFD[Pa\x02\xD7a\x03\xE66`\x04a4\x81V[a\x0C\xB9V[4\x80\x15a\x03\xF6W__\xFD[Pa\x02\xD7a\x04\x056`\x04a3\xCEV[a\x0E\xC1V[4\x80\x15a\x04\x15W__\xFD[Pa\x02\xD7a\x04$6`\x04a3\x9EV[a\x0E\xF9V[4\x80\x15a\x044W__\xFD[Pa\x02\xD7a\x04C6`\x04a3\xB5V[a\x0FfV[4\x80\x15a\x04SW__\xFD[Pa\x03\x80_T\x81V[4\x80\x15a\x04gW__\xFD[P`\nTa\x04v\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xAFV[4\x80\x15a\x04\x94W__\xFD[Pa\x02\xD7a\x10\xC9V[4\x80\x15a\x04\xA8W__\xFD[Pa\x02\xD7a\x04\xB76`\x04a1\xFCV[a\x10\xEBV[a\x02\xD7a\x04\xCA6`\x04a5\x01V[a\x10\xFDV[4\x80\x15a\x04\xDAW__\xFD[Pa\x03\x80a\x11\x18V[4\x80\x15a\x04\xEEW__\xFD[Pa\x02\xD7a\x03\x1E6`\x04a5KV[4\x80\x15a\x05\x08W__\xFD[P_Q` a<\x0E_9_Q\x90_RT`\xFF\x16a\x02\xA3V[4\x80\x15a\x05+W__\xFD[Pa\x02\xA3a\x05:6`\x04a3\x9EV[`\x0C` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x05YW__\xFD[Pa\x02\xD7a\x113V[4\x80\x15a\x05mW__\xFD[Pa\x02\xD7a\x11\xBDV[4\x80\x15a\x05\x81W__\xFD[Pa\x02\xD7a\x11\xD0V[4\x80\x15a\x05\x95W__\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\x02\xAFV[4\x80\x15a\x05\xE5W__\xFD[Pa\x02\xA3a\x05\xF46`\x04a3\xCEV[a\x11\xEFV[4\x80\x15a\x06\x04W__\xFD[Pa\x03\x80a\x06\x136`\x04a5\x8FV[a\x12%V[4\x80\x15a\x06#W__\xFD[Pa\x03\x80`\x08T\x81V[4\x80\x15a\x068W__\xFD[Pa\x06fa\x06G6`\x04a3\x85V[`\x0B` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x02\xAFV[4\x80\x15a\x06\x8BW__\xFD[Pa\x03\x80_\x81V[4\x80\x15a\x06\x9EW__\xFD[Pa\x06\xD0a\x06\xAD6`\x04a5\xA9V[`\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\x02\xAFV[4\x80\x15a\x06\xF0W__\xFD[Pa\x02\xD7a\x06\xFF6`\x04a3\x85V[a\x12\x7FV[4\x80\x15a\x07\x0FW__\xFD[Pa\x02\xD7a\x07\x1E6`\x04a5\xD1V[a\x12\x90V[4\x80\x15a\x07.W__\xFD[Pa\x07S`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xAF\x91\x90a6nV[4\x80\x15a\x07kW__\xFD[Pa\x02\xA3a\x07z6`\x04a3\x9EV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07\x99W__\xFD[P`\x01Ta\x05\xC2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x07\xB8W__\xFD[Pa\x03\x80a\x07\xC76`\x04a3\x85V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x07\xE3W__\xFD[Pa\x02\xD7a\x07\xF26`\x04a6\x80V[a\x13gV[4\x80\x15a\x08\x02W__\xFD[Pa\x03\x80a\x08\x116`\x04a5\xA9V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x088W__\xFD[Pa\x02\xD7a\x08G6`\x04a6\xBFV[a\x14~V[4\x80\x15a\x08WW__\xFD[Pa\x02\xD7a\x08f6`\x04a3\xCEV[a\x15\x8DV[4\x80\x15a\x08vW__\xFD[Pa\x03\x80`\tT\x81V[4\x80\x15a\x08\x8BW__\xFD[Pa\x03\x80_Q` a;\xCE_9_Q\x90_R\x81V[4\x80\x15a\x08\xABW__\xFD[Pa\x02\xD7a\x08\xBA6`\x04a3\x85V[a\x15\xA9V[4\x80\x15a\x08\xCAW__\xFD[Pa\x08\xF4a\x08\xD96`\x04a3\x85V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x02\xAF\x92\x91\x90a7^V[4\x80\x15a\t\rW__\xFD[P`\x02Ta\x05\xC2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\tQWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\t_a\x15\xE8V[a\ti\x82\x82a\x16\x18V[PPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t\x8Ea\x17\xB6V[`\x01T`@\x80Qc<\x1A\x08\x15`\xE2\x1B\x81R\x90Q_\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\xF0h T\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\t\xD5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF9\x91\x90a7\x8EV[a\n\x04\x90`\x0Fa7\xBDV[\x90Pb\x12u\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x90\x84\x16\x10\x80a\n5WP\x80`\x01`\x01`@\x1B\x03\x16\x83`\x01`\x01`@\x1B\x03\x16\x11[\x15a\nSW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x83\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPV[a\n\xA2a\x15\xE8V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\n\xDCW`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\n\xFDW`@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\x0BEW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x0B\x89\x90\x84\x90a7\xDFV[\x90\x91UPP`\x02Ta\x0B\xA5\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a\x18\x11V[\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\x0B\xE0\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[_\x90\x81R_Q` a;\xEE_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x0C\x16a\x17\xB6V[_\x81a\xFF\xFF\x16\x11\x80\x15a\x0C/WPa'\x10\x81a\xFF\xFF\x16\x11\x15[a\x0CLW`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[a\x0C\xA0\x82a\x0B\xEEV[a\x0C\xA9\x81a\x18\x9AV[a\x0C\xB3\x83\x83a\x18\xA4V[PPPPV[a\x0C\xC1a\x15\xE8V[3a\x0C\xCB\x81a\x19LV[a\x0C\xD4\x85a\x19\x99V[a\x0C\xDE\x86\x86a\x19\xD4V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\r\x10\x81\x86\x89a\x1AMV[\x83Q`@\x14a\r2W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10\x83a\xFF\xFF\x16\x11\x15a\rYW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\rg\x8Aa\x12%V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0C_a\r\x98\x89a\x1A\xE2V[\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\r\xDFWa\r\xDFa7JV[\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\x0E%Wa\x0E%a7JV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x86\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\x0B\x90\x92R\x91\x85\x90 \x93Q\x84Ta\xFF\xFF\x19\x16\x93\x16\x92\x90\x92\x17\x83UQ`\x01\x90\x92\x01\x91\x90\x91U\x90Q\x90\x91P\x7F\xF0W\xD4\xEA\x81\xE9\x86(e:\x8F\x90x\x85A\x97 x\x13s4\xA9+B4~\xAC\xCD\xA8\x0F\xC4\n\x90a\x0E\xB0\x90\x8A\x90\x8A\x90\x88\x90\x8B\x90\x8B\x90a7\xF2V[`@Q\x80\x91\x03\x90\xA2PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x0E\xEAW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0E\xF4\x82\x82a\x1B\x06V[PPPV[a\x0F\x01a\x17\xB6V[_\x81\x11\x80\x15a\x0F\x14WPc\x01\xE13\x80\x81\x11\x15[a\x0F1W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x81\x90U`@Q\x81\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\x0C\x8CV[a\x0Fna\x15\xE8V[3a\x0Fx\x81a\x1B\x7FV[a'\x10\x82a\xFF\xFF\x16\x11\x15a\x0F\x9FW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x0B` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x0F\xE1W`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x10mW`\x01\x82\x01T\x80\x15\x80a\x10\x0FWP`\tTa\x10\x0B\x90\x82a8dV[B\x10\x15[a\x10,W`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x10=\x90a\xFF\xFF\x16\x83a8wV[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x10eW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01a\x0B\xE0V[_Q` a;\xCE_9_Q\x90_Ra\x10\xE0\x81a\x18\x9AV[a\x10\xE8a\x1C\0V[PV[a\x10\xF3a\x15\xE8V[a\ti\x82\x82a\x1CYV[a\x11\x05a\x1E\x0BV[a\x11\x0E\x82a\x1E\xAFV[a\ti\x82\x82a\x1E\xB7V[_a\x11!a\x1FsV[P_Q` a;\xAE_9_Q\x90_R\x90V[a\x11;a\x15\xE8V[3a\x11E\x81a\x1B\x7FV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x11w\x90Ba8dV[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x05` R`@\x80\x82 \x93\x90\x93U\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\x11\xC5a\x17\xB6V[a\x11\xCE_a\x1F\xBCV[V[_Q` a;\xCE_9_Q\x90_Ra\x11\xE7\x81a\x18\x9AV[a\x10\xE8a ,V[_\x91\x82R_Q` a;\xEE_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\x12b\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[a\x12\x87a\x15\xE8V[a\x10\xE8\x81a tV[a\x12\x98a\x15\xE8V[3a\x12\xA2\x81a\x1B\x7FV[a\x12\xAB\x84a\x19\x99V[a\x12\xB5\x85\x85a\x19\xD4V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x12\xE7\x81\x85\x88a\x1AMV[`\x01`\x04_a\x12\xF5\x89a\x12%V[\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\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa\x13W\x94\x93\x92\x91\x90a8\x91V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[_Q` a<._9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x13\x98WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x13\xB3WP0;\x15[\x90P\x81\x15\x80\x15a\x13\xC1WP\x80\x15[\x15a\x13\xDFW`@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\x14\tW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x14\x12\x86a!\x84V[a\x14\x1Aa!\x95V[a\x14\"a!\x9DV[a\x14-\x89\x89\x89a\"\x8FV[\x83\x15a\x14sW\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[_Q` a<._9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x14\xB4WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x14\xD2W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81Ua\x14\xFBa!\x95V[a\x15\x05_\x86a\x18\xA4V[Pa\x15\x1D_Q` a;\xCE_9_Q\x90_R\x87a\x18\xA4V[Pb\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90Ua\x15>\x84\x84a#8V[\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\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\xA1PPPPPPV[a\x15\x96\x82a\x0B\xEEV[a\x15\x9F\x81a\x18\x9AV[a\x0C\xB3\x83\x83a\x1B\x06V[a\x15\xB1a\x17\xB6V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xDFW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x10\xE8\x81a\x1F\xBCV[_Q` a<\x0E_9_Q\x90_RT`\xFF\x16\x15a\x11\xCEW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x16!\x82a\x1B\x7FV[3_\x82\x90\x03a\x16CW`@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\x16\x91W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xB5\x91\x90a8\xF7V[\x90P\x82\x81\x10\x15a\x16\xE2W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01a\x15\xD6V[`\x02Ta\x16\xFA\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a$\xCDV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x17!\x90\x84\x90a8dV[\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\x17\\\x90\x84\x90a8dV[\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\x17\xA8\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[3a\x17\xE8\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\x11\xCEW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xD6V[_`@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\x18[WP\x82;\x15=\x17\x15[\x80a\x0C\xB3W`@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\x15\xD6V[a\x10\xE8\x813a%jV[__Q` a;\xEE_9_Q\x90_Ra\x18\xBD\x84\x84a\x11\xEFV[a\x19<W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x18\xF23\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\tQV[_\x91PPa\tQV[P\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x19{Wa\x19{a7JV[\x14a\x10\xE8W`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x19\xB6\x82\x82a%\xA3V[\x15a\tiW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x19\xE0\x84a\x12%V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x1A\x10W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C_a\x1A\x1C\x83a\x1A\xE2V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\tiW`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1AV\x82a%\xC4V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a;j`$\x919\x90P_\x84\x82`@Q` \x01a\x1A\x86\x92\x91\x90a9%V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x1A\xA1\x82a&+V[\x90Pa\x1A\xBE\x81\x85a\x1A\xB1\x88a'\x18V[a\x1A\xB9a'\x8FV[a(\\V[a\x1A\xDAW`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a\x12b\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[__Q` a;\xEE_9_Q\x90_Ra\x1B\x1F\x84\x84a\x11\xEFV[\x15a\x19<W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\tQV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x1B\xB0Wa\x1B\xB0a7JV[\x03a\x1B\xCEW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x1B\xE2Wa\x1B\xE2a7JV[\x03a\tiW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\x08a)\x0BV[_Q` a<\x0E_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x0C\x8CV[a\x1Cb\x82a\x1B\x7FV[3_\x82\x90\x03a\x1C\x84W`@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\x1C\xC7W`@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\x1D\x10W`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xD6V[`\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\x1DF\x90\x84\x90a7\xDFV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\x1Dl\x91\x90a8dV[\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\x1D\xBF\x90\x84\x90a7\xDFV[\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\x17\xA8\x91\x81R` \x01\x90V[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\x1E\x91WP\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\x1E\x85_Q` a;\xAE_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x11\xCEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xE8a\x17\xB6V[\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\x1F\x11WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1F\x0E\x91\x81\x01\x90a8\xF7V[`\x01[a\x1F9W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xD6V[_Q` a;\xAE_9_Q\x90_R\x81\x14a\x1FiW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xD6V[a\x0E\xF4\x83\x83a):V[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\x11\xCEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a 4a\x15\xE8V[_Q` a<\x0E_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a\x1CAV[`\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 \xB9W`@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!\x01W`@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!<\x91\x16\x83\x83a\x18\x11V[\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!w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[a!\x8Ca)\x8FV[a\x10\xE8\x81a)\xC5V[a\x11\xCEa)\x8FV[_Q` a<._9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a!\xCEWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a!\xE9WP0;\x15[\x90P\x81\x15\x80\x15a!\xF7WP\x80\x15[\x15a\"\x15W`@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\"?W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\"\x88W\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[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\"\xB6W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\"\xDDW`@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#0W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[_[\x81\x81\x10\x15a\x0E\xF4W_\x83\x83\x83\x81\x81\x10a#UWa#Ua9AV[a#k\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa3\x85V[\x90P_\x84\x84\x84\x81\x81\x10a#\x80Wa#\x80a9AV[\x90P`@\x02\x01` \x01` \x81\x01\x90a#\x98\x91\x90a3\xB5V[\x90Pa'\x10\x81a\xFF\xFF\x16\x11\x15a#\xC1W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a#\xF2Wa#\xF2a7JV[\x03a$\x10W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x0B` R`@\x90 `\x01\x01T\x15\x80\x15a$QWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x0B` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a$|W`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\x15\xD6V[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\x0B\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a#:V[_`@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%&WP\x83;\x15=\x17\x15[\x80a\"\x88W`@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\x15\xD6V[a%t\x82\x82a\x11\xEFV[a\tiW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x15\xD6V[\x80Q\x82Q_\x91\x14\x80\x15a%\xBDWP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` a;\x8E_9_Q\x90_R\x91\x15\x90\x15\x16\x15a%\xEAWPPPV[\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\x0E\xF4W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a&H\x83a)\xCDV[\x90P_Q` a;\x8E_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a&oWa&oa9UV[\x84\x82\t\x90P\x82\x80a&\x82Wa&\x82a9UV[\x82\x82\x08\x90P__a&\x92\x83a+\xD5V[\x92P\x90P[\x80a&\xFBW\x84\x80a&\xAAWa&\xAAa9UV[`\x01\x87\x08\x95P\x84\x80a&\xBEWa&\xBEa9UV[\x86\x87\t\x92P\x84\x80a&\xD1Wa&\xD1a9UV[\x86\x84\t\x92P\x84\x80a&\xE4Wa&\xE4a9UV[\x84\x84\x08\x92Pa&\xF2\x83a+\xD5V[\x92P\x90Pa&\x97V[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'?WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a;\x8E_9_Q\x90_R\x84` \x01Qa'p\x91\x90a9iV[a'\x87\x90_Q` a;\x8E_9_Q\x90_Ra7\xDFV[\x90R\x92\x91PPV[a'\xB6`@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(\xFFW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` a<\x0E_9_Q\x90_RT`\xFF\x16a\x11\xCEW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a)C\x82a,\x9DV[`@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)\x87Wa\x0E\xF4\x82\x82a-\0V[a\tia-rV[_Q` a<._9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x11\xCEW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\xB1a)\x8FV[__a)\xD8\x83a-\x91V[\x80Q\x90\x91P`0\x81\x14a)\xEDWa)\xEDa9\x88V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x06Wa*\x06a2$V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a*0W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a*\x9FW\x83`\x01a*J\x83\x86a7\xDFV[a*T\x91\x90a7\xDFV[\x81Q\x81\x10a*dWa*da9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a*\x81Wa*\x81a9AV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a*5V[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+/W\x83\x81a*\xDB\x85\x88a7\xDFV[a*\xE5\x91\x90a8dV[\x81Q\x81\x10a*\xF5Wa*\xF5a9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a+\x15Wa+\x15a9AV[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a*\xC7V[P_a+:\x82a0\xDCV[\x90Pa\x01\0_Q` a;\x8E_9_Q\x90_R_a+X\x86\x89a7\xDFV[\x90P_[\x81\x81\x10\x15a+\xC5W_\x88`\x01a+r\x84\x86a7\xDFV[a+|\x91\x90a7\xDFV[\x81Q\x81\x10a+\x8CWa+\x8Ca9AV[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a+\xA4Wa+\xA4a9UV[\x85\x87\t\x95P\x83\x80a+\xB7Wa+\xB7a9UV[\x81\x87\x08\x95PP`\x01\x01a+\\V[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;\x8E_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,cW`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a,|Wa,y\x83\x82a7\xDFV[\x92P[\x80\x80a,\x8AWa,\x8Aa9UV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a,\xD2W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xD6V[_Q` a;\xAE_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-\x1C\x91\x90a9\x9CV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a-TW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a-YV[``\x91P[P\x91P\x91Pa-i\x85\x83\x83a1<V[\x95\x94PPPPPV[4\x15a\x11\xCEW`@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-\xD1\x92\x91\x90a9%V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a-\xF8\x92\x91\x90a9\xA7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a.\x1A\x91\x90a9\xD1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a.D\x90\x83\x90\x83\x90` \x01a9\xE9V[`@\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\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xB3Wa.\xB3a2$V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xDDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a.\xF4\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a/^W\x81\x81\x81Q\x81\x10a/#Wa/#a9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a/@Wa/@a9AV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a/\x08V[P_\x84`@Q` \x01a/s\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a0\x05W_\x83\x82\x81Q\x81\x10a/\xACWa/\xACa9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a/\xC9Wa/\xC9a9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a/\xEA\x92\x91\x90a:\rV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a/\x91V[P\x86\x88\x87`@Q` \x01a0\x1B\x93\x92\x91\x90a:1V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a0I\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a0j\x8A`\xFF\x8D\x16a7\xDFV[\x81\x10\x15a0\xCBW\x82\x81\x81Q\x81\x10a0\x83Wa0\x83a9AV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a0\x9D\x83\x8Da8dV[\x81Q\x81\x10a0\xADWa0\xADa9AV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a0]V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\x19EW\x83\x81\x81Q\x81\x10a0\xFBWa0\xFBa9AV[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a1\x13\x91\x90a:dV[a1\x1E\x90`\x02a;^V[a1(\x91\x90a:dV[a12\x90\x83a8dV[\x91P`\x01\x01a0\xE0V[``\x82a1QWa1L\x82a1\x91V[a%\xBDV[\x81Q\x15\x80\x15a1hWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x19EW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xD6V[\x80Q\x15a1\xA1W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a1\xCAW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a%\xBDW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a1\xF7W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a2\rW__\xFD[a2\x16\x83a1\xE1V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2ZWa2Za2$V[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a2pW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x92Wa2\x92a2$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\x15a2\xD0W__\xFD[a2\xD8a28V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a1\xF7W__\xFD[____a\x01 \x85\x87\x03\x12\x15a3\x14W__\xFD[a3\x1E\x86\x86a2`V[\x93Pa3-\x86`\x80\x87\x01a2\xC0V[\x92Pa3<\x86`\xC0\x87\x01a2\xC0V[\x91Pa3Ka\x01\0\x86\x01a2\xEFV[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x10\xE8W__\xFD[_` \x82\x84\x03\x12\x15a3zW__\xFD[\x815a%\xBD\x81a3VV[_` \x82\x84\x03\x12\x15a3\x95W__\xFD[a%\xBD\x82a1\xE1V[_` \x82\x84\x03\x12\x15a3\xAEW__\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a3\xC5W__\xFD[a%\xBD\x82a2\xEFV[__`@\x83\x85\x03\x12\x15a3\xDFW__\xFD[\x825\x91Pa3\xEF` \x84\x01a1\xE1V[\x90P\x92P\x92\x90PV[_\x82`\x1F\x83\x01\x12a4\x07W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4 Wa4 a2$V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a4NWa4Na2$V[`@R\x81\x81R\x83\x82\x01` \x01\x85\x10\x15a4eW__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_____a\x01@\x86\x88\x03\x12\x15a4\x96W__\xFD[a4\xA0\x87\x87a2`V[\x94Pa4\xAF\x87`\x80\x88\x01a2\xC0V[\x93Pa4\xBE\x87`\xC0\x88\x01a2\xC0V[\x92Pa\x01\0\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xD9W__\xFD[a4\xE5\x88\x82\x89\x01a3\xF8V[\x92PPa4\xF5a\x01 \x87\x01a2\xEFV[\x90P\x92\x95P\x92\x95\x90\x93PV[__`@\x83\x85\x03\x12\x15a5\x12W__\xFD[a5\x1B\x83a1\xE1V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a55W__\xFD[a5A\x85\x82\x86\x01a3\xF8V[\x91PP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a5^W__\xFD[a5h\x85\x85a2`V[\x92Pa5w\x85`\x80\x86\x01a2\xC0V[\x91Pa5\x86\x85`\xC0\x86\x01a2\xC0V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a5\x9FW__\xFD[a%\xBD\x83\x83a2`V[__`@\x83\x85\x03\x12\x15a5\xBAW__\xFD[a5\xC3\x83a1\xE1V[\x91Pa3\xEF` \x84\x01a1\xE1V[____a\x01 \x85\x87\x03\x12\x15a5\xE5W__\xFD[a5\xEF\x86\x86a2`V[\x93Pa5\xFE\x86`\x80\x87\x01a2\xC0V[\x92Pa6\r\x86`\xC0\x87\x01a2\xC0V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6(W__\xFD[a64\x87\x82\x88\x01a3\xF8V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a%\xBD` \x83\x01\x84a6@V[____`\x80\x85\x87\x03\x12\x15a6\x93W__\xFD[a6\x9C\x85a1\xE1V[\x93Pa6\xAA` \x86\x01a1\xE1V[\x92P`@\x85\x015\x91Pa3K``\x86\x01a1\xE1V[____``\x85\x87\x03\x12\x15a6\xD2W__\xFD[a6\xDB\x85a1\xE1V[\x93Pa6\xE9` \x86\x01a1\xE1V[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7\x03W__\xFD[\x85\x01`\x1F\x81\x01\x87\x13a7\x13W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a7(W__\xFD[\x87` \x82`\x06\x1B\x84\x01\x01\x11\x15a7<W__\xFD[\x94\x97\x93\x96P` \x01\x94PPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a7\x81WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a7\x9EW__\xFD[\x81Qa%\xBD\x81a3VV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a\x19EWa\x19Ea7\xA9V[\x81\x81\x03\x81\x81\x11\x15a\tQWa\tQa7\xA9V[\x85Q\x81R` \x80\x87\x01Q\x90\x82\x01R`@\x80\x87\x01Q\x90\x82\x01R``\x80\x87\x01Q\x90\x82\x01R\x84Q`\x80\x82\x01R` \x85\x01Q`\xA0\x82\x01Ra\xFF\xFF\x84\x16`\xC0\x82\x01R\x82Q`\xE0\x82\x01R` \x83\x01Qa\x01\0\x82\x01Ra\x01@a\x01 \x82\x01R_a8Ya\x01@\x83\x01\x84a6@V[\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\tQWa\tQa7\xA9V[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\tQWa\tQa7\xA9V[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_a8\xEDa\x01 \x83\x01\x84a6@V[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a9\x07W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a99a93\x83\x86a9\x0EV[\x84a9\x0EV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a9\x83WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a%\xBD\x82\x84a9\x0EV[_a9\xB2\x82\x85a9\x0EV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a9\xDC\x82\x84a9\x0EV[_\x81R`\x01\x01\x93\x92PPPV[_a9\xF4\x82\x85a9\x0EV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a:\x18\x82\x85a9\x0EV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a:<\x82\x86a9\x0EV[`\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\tQWa\tQa7\xA9V[`\x01\x81[`\x01\x84\x11\x15a:\xB6W\x80\x85\x04\x81\x11\x15a:\x9AWa:\x9Aa7\xA9V[`\x01\x84\x16\x15a:\xA8W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a:\x7FV[\x93P\x93\x91PPV[_\x82a:\xCCWP`\x01a\tQV[\x81a:\xD8WP_a\tQV[\x81`\x01\x81\x14a:\xEEW`\x02\x81\x14a:\xF8Wa;\x14V[`\x01\x91PPa\tQV[`\xFF\x84\x11\x15a;\tWa;\ta7\xA9V[PP`\x01\x82\x1Ba\tQV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a;7WP\x81\x81\na\tQV[a;C_\x19\x84\x84a:{V[\x80_\x19\x04\x82\x11\x15a;VWa;Va7\xA9V[\x02\x93\x92PPPV[_a%\xBD\x83\x83a:\xBEV\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+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
3433    );
3434    /// The runtime bytecode of the contract, as deployed on the network.
3435    ///
3436    /// ```text
3437    ///0x608060405260043610610280575f3560e01c8063715018a611610155578063b3e6ebd5116100be578063d547741f11610078578063d547741f1461084c578063d9cc7d261461086b578063e63ab1e914610880578063f2fde38b146108a0578063fa52c7d8146108bf578063fc0c546a14610902575f5ffd5b8063b3e6ebd514610760578063b5700e681461078e578063b5ecb344146107ad578063be203094146107d8578063c64814dd146107f7578063c75f543e1461082d575f5ffd5b80639ffb6b431161010f5780639ffb6b431461062d578063a217fddf14610680578063a2d78dd514610693578063a3066aab146106e5578063ac5c2ad014610704578063ad3cb1cc14610723575f5ffd5b8063715018a6146105625780638456cb59146105765780638da5cb5b1461058a57806391d14854146105da5780639b30a5e6146105f95780639e9a8f3114610618575f5ffd5b8063394b348f116101f75780634f1ef286116101b15780634f1ef286146104bc57806352d1902d146104cf5780635544c2f1146104e35780635c975abb146104fd5780635f8754a6146105205780636a911ccf1461054e575f5ffd5b8063394b348f1461040a5780633b2b7ffa146104295780633e9df9b5146104485780633f3bb3661461045c5780633f4ba83a146104895780634d99dd161461049d575f5ffd5b80632140fecd116102485780632140fecd14610342578063248a9ca3146103615780632dc9bac61461038e5780632f2ff15d146103ad578063304240bf146103cc57806336568abe146103eb575f5ffd5b806301ffc9a714610284578063026e402b146102b85780630d8e6e2c146102d957806313b9057a146103045780631a20cd6314610323575b5f5ffd5b34801561028f575f5ffd5b506102a361029e3660046131ba565b610921565b60405190151581526020015b60405180910390f35b3480156102c3575f5ffd5b506102d76102d23660046131fc565b610957565b005b3480156102e4575f5ffd5b5060408051600281525f60208201819052918101919091526060016102af565b34801561030f575f5ffd5b506102d761031e366004613300565b61096d565b34801561032e575f5ffd5b506102d761033d36600461336a565b610986565b34801561034d575f5ffd5b506102d761035c366004613385565b610a9a565b34801561036c575f5ffd5b5061038061037b36600461339e565b610bee565b6040519081526020016102af565b348015610399575f5ffd5b506102d76103a83660046133b5565b610c0e565b3480156103b8575f5ffd5b506102d76103c73660046133ce565b610c97565b3480156103d7575f5ffd5b506102d76103e6366004613481565b610cb9565b3480156103f6575f5ffd5b506102d76104053660046133ce565b610ec1565b348015610415575f5ffd5b506102d761042436600461339e565b610ef9565b348015610434575f5ffd5b506102d76104433660046133b5565b610f66565b348015610453575f5ffd5b506103805f5481565b348015610467575f5ffd5b50600a546104769061ffff1681565b60405161ffff90911681526020016102af565b348015610494575f5ffd5b506102d76110c9565b3480156104a8575f5ffd5b506102d76104b73660046131fc565b6110eb565b6102d76104ca366004613501565b6110fd565b3480156104da575f5ffd5b50610380611118565b3480156104ee575f5ffd5b506102d761031e36600461354b565b348015610508575f5ffd5b505f516020613c0e5f395f51905f525460ff166102a3565b34801561052b575f5ffd5b506102a361053a36600461339e565b600c6020525f908152604090205460ff1681565b348015610559575f5ffd5b506102d7611133565b34801561056d575f5ffd5b506102d76111bd565b348015610581575f5ffd5b506102d76111d0565b348015610595575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016102af565b3480156105e5575f5ffd5b506102a36105f43660046133ce565b6111ef565b348015610604575f5ffd5b5061038061061336600461358f565b611225565b348015610623575f5ffd5b5061038060085481565b348015610638575f5ffd5b50610666610647366004613385565b600b6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff90931683526020830191909152016102af565b34801561068b575f5ffd5b506103805f81565b34801561069e575f5ffd5b506106d06106ad3660046135a9565b600760209081525f92835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102af565b3480156106f0575f5ffd5b506102d76106ff366004613385565b61127f565b34801561070f575f5ffd5b506102d761071e3660046135d1565b611290565b34801561072e575f5ffd5b50610753604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102af919061366e565b34801561076b575f5ffd5b506102a361077a36600461339e565b60046020525f908152604090205460ff1681565b348015610799575f5ffd5b506001546105c2906001600160a01b031681565b3480156107b8575f5ffd5b506103806107c7366004613385565b60056020525f908152604090205481565b3480156107e3575f5ffd5b506102d76107f2366004613680565b611367565b348015610802575f5ffd5b506103806108113660046135a9565b600660209081525f928352604080842090915290825290205481565b348015610838575f5ffd5b506102d76108473660046136bf565b61147e565b348015610857575f5ffd5b506102d76108663660046133ce565b61158d565b348015610876575f5ffd5b5061038060095481565b34801561088b575f5ffd5b506103805f516020613bce5f395f51905f5281565b3480156108ab575f5ffd5b506102d76108ba366004613385565b6115a9565b3480156108ca575f5ffd5b506108f46108d9366004613385565b60036020525f90815260409020805460019091015460ff1682565b6040516102af92919061375e565b34801561090d575f5ffd5b506002546105c2906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b148061095157506301ffc9a760e01b6001600160e01b03198316145b92915050565b61095f6115e8565b6109698282611618565b5050565b60405163c2d7f81360e01b815260040160405180910390fd5b61098e6117b6565b60015460408051633c1a081560e21b815290515f926001600160a01b03169163f06820549160048083019260209291908290030181865afa1580156109d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f9919061378e565b610a0490600f6137bd565b9050621275006001600160401b038083169084161080610a355750806001600160401b0316836001600160401b0316115b15610a535760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03831660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde9060200160405180910390a1505050565b610aa26115e8565b6001600160a01b0381165f908152600560205260408120543391819003610adc576040516379298a5360e11b815260040160405180910390fd5b80421015610afd57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610b4557604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610b899084906137df565b9091555050600254610ba5906001600160a01b03168483611811565b826001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610be091815260200190565b60405180910390a250505050565b5f9081525f516020613bee5f395f51905f52602052604090206001015490565b610c166117b6565b5f8161ffff16118015610c2f57506127108161ffff1611155b610c4c5760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff83169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd906020015b60405180910390a150565b610ca082610bee565b610ca98161189a565b610cb383836118a4565b50505050565b610cc16115e8565b33610ccb8161194c565b610cd485611999565b610cde86866119d4565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610d10818689611a4d565b8351604014610d3257604051634247068760e01b815260040160405180910390fd5b6127108361ffff161115610d595760405163dc81db8560e01b815260040160405180910390fd5b600160045f610d678a611225565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f610d9889611ae2565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f815260200160016002811115610ddf57610ddf61374a565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff1990911690836002811115610e2557610e2561374a565b02179055505060408051808201825261ffff86811682525f60208084018281526001600160a01b038916808452600b909252918590209351845461ffff191693169290921783555160019092019190915590519091507ff057d4ea81e98628653a8f90788541972078137334a92b42347eaccda80fc40a90610eb0908a908a9088908b908b906137f2565b60405180910390a250505050505050565b6001600160a01b0381163314610eea5760405163334bd91960e11b815260040160405180910390fd5b610ef48282611b06565b505050565b610f016117b6565b5f81118015610f1457506301e133808111155b610f315760405163674e8ef360e01b815260040160405180910390fd5b60098190556040518181527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610c8c565b610f6e6115e8565b33610f7881611b7f565b6127108261ffff161115610f9f5760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600b60205260409020805461ffff908116908416819003610fe157604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff16111561106d57600182015480158061100f575060095461100b9082613864565b4210155b61102c576040516316eb94cb60e01b815260040160405180910390fd5b600a5461103d9061ffff1683613877565b61ffff168561ffff161115611065576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd6490606001610be0565b5f516020613bce5f395f51905f526110e08161189a565b6110e8611c00565b50565b6110f36115e8565b6109698282611c59565b611105611e0b565b61110e82611eaf565b6109698282611eb7565b5f611121611f73565b505f516020613bae5f395f51905f5290565b61113b6115e8565b3361114581611b7f565b6001600160a01b0381165f908152600360205260409020600101805460ff191660021790556008546111779042613864565b6001600160a01b0382165f8181526005602052604080822093909355915190917ffb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd1691a250565b6111c56117b6565b6111ce5f611fbc565b565b5f516020613bce5f395f51905f526111e78161189a565b6110e861202c565b5f9182525f516020613bee5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611262949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b6112876115e8565b6110e881612074565b6112986115e8565b336112a281611b7f565b6112ab84611999565b6112b585856119d4565b604080516001600160a01b03831660208201525f910160405160208183030381529060405290506112e7818588611a4d565b600160045f6112f589611225565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5878787876040516113579493929190613891565b60405180910390a2505050505050565b5f516020613c2e5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156113985750825b90505f826001600160401b031660011480156113b35750303b155b9050811580156113c1575080155b156113df5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561140957845460ff60401b1916600160401b1785555b61141286612184565b61141a612195565b61142261219d565b61142d89898961228f565b831561147357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f516020613c2e5f395f51905f52805460029190600160401b900460ff16806114b4575080546001600160401b03808416911610155b156114d25760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556114fb612195565b6115055f866118a4565b5061151d5f516020613bce5f395f51905f52876118a4565b5062093a80600955600a805461ffff19166101f417905561153e8484612338565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b61159682610bee565b61159f8161189a565b610cb38383611b06565b6115b16117b6565b6001600160a01b0381166115df57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6110e881611fbc565b5f516020613c0e5f395f51905f525460ff16156111ce5760405163d93c066560e01b815260040160405180910390fd5b61162182611b7f565b335f82900361164357604051631f2a200560e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015611691573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b591906138f7565b9050828110156116e25760405163054365bb60e31b815260048101829052602481018490526044016115d6565b6002546116fa906001600160a01b03168330866124cd565b6001600160a01b0384165f9081526003602052604081208054859290611721908490613864565b90915550506001600160a01b038085165f9081526006602090815260408083209386168352929052908120805485929061175c908490613864565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b856040516117a891815260200190565b60405180910390a350505050565b336117e87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146111ce5760405163118cdaa760e01b81523360048201526024016115d6565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f51141615161561185b5750823b153d17155b80610cb35760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016115d6565b6110e8813361256a565b5f5f516020613bee5f395f51905f526118bd84846111ef565b61193c575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556118f23390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610951565b5f915050610951565b5092915050565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561197b5761197b61374a565b146110e85760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526119b682826125a3565b15610969576040516306cf438f60e01b815260040160405180910390fd5b60045f6119e084611225565b815260208101919091526040015f205460ff1615611a105760405162da8a5760e11b815260040160405180910390fd5b600c5f611a1c83611ae2565b815260208101919091526040015f205460ff16156109695760405163ae493b0360e01b815260040160405180910390fd5b611a56826125c4565b5f604051806060016040528060248152602001613b6a6024913990505f8482604051602001611a86929190613925565b60405160208183030381529060405290505f611aa18261262b565b9050611abe8185611ab188612718565b611ab961278f565b61285c565b611ada5760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611262929190918252602082015260400190565b5f5f516020613bee5f395f51905f52611b1f84846111ef565b1561193c575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610951565b6001600160a01b0381165f9081526003602052604081206001015460ff1690816002811115611bb057611bb061374a565b03611bce5760405163508a793f60e01b815260040160405180910390fd5b6002816002811115611be257611be261374a565b036109695760405163eab4a96360e01b815260040160405180910390fd5b611c0861290b565b5f516020613c0e5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001610c8c565b611c6282611b7f565b335f829003611c8457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209385168352929052205415611cc75760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f9081526006602090815260408083209385168352929052205482811015611d1057604051639266535160e01b8152600481018290526024016115d6565b6001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290611d469084906137df565b92505081905550604051806040016040528084815260200160085442611d6c9190613864565b90526001600160a01b038086165f81815260076020908152604080832094881683529381528382208551815594810151600190950194909455908152600390925281208054859290611dbf9084906137df565b92505081905550836001600160a01b0316826001600160a01b03167f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c856040516117a891815260200190565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611e9157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e855f516020613bae5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156111ce5760405163703e46dd60e11b815260040160405180910390fd5b6110e86117b6565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f11575060408051601f3d908101601f19168201909252611f0e918101906138f7565b60015b611f3957604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115d6565b5f516020613bae5f395f51905f528114611f6957604051632a87526960e21b8152600481018290526024016115d6565b610ef4838361293a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111ce5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6120346115e8565b5f516020613c0e5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611c41565b6001600160a01b0381165f90815260076020908152604080832033808552925282205490918190036120b957604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f9081526007602090815260408083209386168352929052206001015442101561210157604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f908152600760209081526040808320868516845290915281208181556001015560025461213c91168383611811565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161217791815260200190565b60405180910390a2505050565b61218c61298f565b6110e8816129c5565b6111ce61298f565b5f516020613c2e5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156121ce5750825b90505f826001600160401b031660011480156121e95750303b155b9050811580156121f7575080155b156122155760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561223f57845460ff60401b1916600160401b1785555b435f55831561228857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6001600160a01b0383166122b65760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382166122dd5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b0319928316179092556001805492851692909116919091179055605a808210156123305760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b5f5b81811015610ef4575f83838381811061235557612355613941565b61236b9260206040909202019081019150613385565b90505f84848481811061238057612380613941565b905060400201602001602081019061239891906133b5565b90506127108161ffff1611156123c15760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156123f2576123f261374a565b036124105760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600b602052604090206001015415801561245157506001600160a01b0383165f908152600b602052604090205461ffff16155b839061247c5760405163050814e160e41b81526001600160a01b0390911660048201526024016115d6565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600b9052919091209051815461ffff1916921691909117815590516001918201550161233a565b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f5114161516156125265750833b153d17155b806122885760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016115d6565b61257482826111ef565b6109695760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016115d6565b805182515f911480156125bd575081602001518360200151145b9392505050565b805160208201515f915f516020613b8e5f395f51905f529115901516156125ea57505050565b825160208401518260038485858609850908838283091483821084841016169350505081610ef45760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612648836129cd565b90505f516020613b8e5f395f51905f5260035f828485099050828061266f5761266f613955565b8482099050828061268257612682613955565b82820890505f5f61269283612bd5565b925090505b806126fb5784806126aa576126aa613955565b60018708955084806126be576126be613955565b868709925084806126d1576126d1613955565b868409925084806126e4576126e4613955565b84840892506126f283612bd5565b92509050612697565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f808252602082015281516020830151159015161561273f575090565b6040518060400160405280835f015181526020015f516020613b8e5f395f51905f5284602001516127709190613969565b612787905f516020613b8e5f395f51905f526137df565b905292915050565b6127b660405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806128ff5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f516020613c0e5f395f51905f525460ff166111ce57604051638dfc202b60e01b815260040160405180910390fd5b61294382612c9d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561298757610ef48282612d00565b610969612d72565b5f516020613c2e5f395f51905f5254600160401b900460ff166111ce57604051631afcd79f60e31b815260040160405180910390fd5b6115b161298f565b5f5f6129d883612d91565b8051909150603081146129ed576129ed613988565b5f816001600160401b03811115612a0657612a06613224565b6040519080825280601f01601f191660200182016040528015612a30576020820181803683370190505b5090505f5b82811015612a9f57836001612a4a83866137df565b612a5491906137df565b81518110612a6457612a64613941565b602001015160f81c60f81b828281518110612a8157612a81613941565b60200101906001600160f81b03191690815f1a905350600101612a35565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b82811015612b2f578381612adb85886137df565b612ae59190613864565b81518110612af557612af5613941565b602001015160f81c60f81b60f81c828281518110612b1557612b15613941565b60ff90921660209283029190910190910152600101612ac7565b505f612b3a826130dc565b90506101005f516020613b8e5f395f51905f525f612b5886896137df565b90505f5b81811015612bc5575f886001612b7284866137df565b612b7c91906137df565b81518110612b8c57612b8c613941565b016020015160f81c90508380612ba457612ba4613955565b85870995508380612bb757612bb7613955565b818708955050600101612b5c565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f516020613b8e5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f51925083612c6357604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115612c7c57612c7983826137df565b92505b8080612c8a57612c8a613955565b8384099690961496919550909350505050565b806001600160a01b03163b5f03612cd257604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115d6565b5f516020613bae5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612d1c919061399c565b5f60405180830381855af49150503d805f8114612d54576040519150601f19603f3d011682016040523d82523d5f602084013e612d59565b606091505b5091509150612d6985838361313c565b95945050505050565b34156111ce5760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f90846020820181803683370190505090508086604051602001612dd1929190613925565b6040516020818303038152906040529050808460f81b604051602001612df89291906139a7565b604051602081830303815290604052905080604051602001612e1a91906139d1565b60408051601f1981840301815290829052915061010160f01b90612e4490839083906020016139e9565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b03811115612eb357612eb3613224565b6040519080825280601f01601f191660200182016040528015612edd576020820181803683370190505b5090505f82604051602001612ef491815260200190565b60408051601f1981840301815291905290505f5b8151811015612f5e57818181518110612f2357612f23613941565b602001015160f81c60f81b838281518110612f4057612f40613941565b60200101906001600160f81b03191690815f1a905350600101612f08565b505f84604051602001612f7391815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613005575f838281518110612fac57612fac613941565b602001015160f81c60f81b838381518110612fc957612fc9613941565b602001015160f81c60f81b1890508881604051602001612fea929190613a0d565b60408051601f19818403018152919052985050600101612f91565b5086888760405160200161301b93929190613a31565b6040516020818303038152906040529650868051906020012093508360405160200161304991815260200190565b60408051601f1981840301815291905291505f5b61306a8a60ff8d166137df565b8110156130cb5782818151811061308357613083613941565b01602001516001600160f81b0319168461309d838d613864565b815181106130ad576130ad613941565b60200101906001600160f81b03191690815f1a90535060010161305d565b50919b9a5050505050505050505050565b5f80805b8351811015611945578381815181106130fb576130fb613941565b602002602001015160ff168160086131139190613a64565b61311e906002613b5e565b6131289190613a64565b6131329083613864565b91506001016130e0565b6060826131515761314c82613191565b6125bd565b815115801561316857506001600160a01b0384163b155b1561194557604051639996b31560e01b81526001600160a01b03851660048201526024016115d6565b8051156131a15780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156131ca575f5ffd5b81356001600160e01b0319811681146125bd575f5ffd5b80356001600160a01b03811681146131f7575f5ffd5b919050565b5f5f6040838503121561320d575f5ffd5b613216836131e1565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561325a5761325a613224565b60405290565b5f60808284031215613270575f5ffd5b604051608081016001600160401b038111828210171561329257613292613224565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156132d0575f5ffd5b6132d8613238565b823581526020928301359281019290925250919050565b803561ffff811681146131f7575f5ffd5b5f5f5f5f6101208587031215613314575f5ffd5b61331e8686613260565b935061332d86608087016132c0565b925061333c8660c087016132c0565b915061334b61010086016132ef565b905092959194509250565b6001600160401b03811681146110e8575f5ffd5b5f6020828403121561337a575f5ffd5b81356125bd81613356565b5f60208284031215613395575f5ffd5b6125bd826131e1565b5f602082840312156133ae575f5ffd5b5035919050565b5f602082840312156133c5575f5ffd5b6125bd826132ef565b5f5f604083850312156133df575f5ffd5b823591506133ef602084016131e1565b90509250929050565b5f82601f830112613407575f5ffd5b81356001600160401b0381111561342057613420613224565b604051601f8201601f19908116603f011681016001600160401b038111828210171561344e5761344e613224565b604052818152838201602001851015613465575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f6101408688031215613496575f5ffd5b6134a08787613260565b94506134af87608088016132c0565b93506134be8760c088016132c0565b92506101008601356001600160401b038111156134d9575f5ffd5b6134e5888289016133f8565b9250506134f561012087016132ef565b90509295509295909350565b5f5f60408385031215613512575f5ffd5b61351b836131e1565b915060208301356001600160401b03811115613535575f5ffd5b613541858286016133f8565b9150509250929050565b5f5f5f610100848603121561355e575f5ffd5b6135688585613260565b925061357785608086016132c0565b91506135868560c086016132c0565b90509250925092565b5f6080828403121561359f575f5ffd5b6125bd8383613260565b5f5f604083850312156135ba575f5ffd5b6135c3836131e1565b91506133ef602084016131e1565b5f5f5f5f61012085870312156135e5575f5ffd5b6135ef8686613260565b93506135fe86608087016132c0565b925061360d8660c087016132c0565b91506101008501356001600160401b03811115613628575f5ffd5b613634878288016133f8565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6125bd6020830184613640565b5f5f5f5f60808587031215613693575f5ffd5b61369c856131e1565b93506136aa602086016131e1565b92506040850135915061334b606086016131e1565b5f5f5f5f606085870312156136d2575f5ffd5b6136db856131e1565b93506136e9602086016131e1565b925060408501356001600160401b03811115613703575f5ffd5b8501601f81018713613713575f5ffd5b80356001600160401b03811115613728575f5ffd5b8760208260061b840101111561373c575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52602160045260245ffd5b828152604081016003831061378157634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f6020828403121561379e575f5ffd5b81516125bd81613356565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160290811690818114611945576119456137a9565b81810381811115610951576109516137a9565b8551815260208087015190820152604080870151908201526060808701519082015284516080820152602085015160a082015261ffff841660c0820152825160e082015260208301516101008201526101406101208201525f613859610140830184613640565b979650505050505050565b80820180821115610951576109516137a9565b61ffff8181168382160190811115610951576109516137a9565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f6138ed610120830184613640565b9695505050505050565b5f60208284031215613907575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f613939613933838661390e565b8461390e565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261398357634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f6125bd828461390e565b5f6139b2828561390e565b5f81526001600160f81b03199390931660018401525050600201919050565b5f6139dc828461390e565b5f81526001019392505050565b5f6139f4828561390e565b6001600160f01b03199390931683525050600201919050565b5f613a18828561390e565b6001600160f81b03199390931683525050600101919050565b5f613a3c828661390e565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610951576109516137a9565b6001815b6001841115613ab657808504811115613a9a57613a9a6137a9565b6001841615613aa857908102905b60019390931c928002613a7f565b935093915050565b5f82613acc57506001610951565b81613ad857505f610951565b8160018114613aee5760028114613af857613b14565b6001915050610951565b60ff841115613b0957613b096137a9565b50506001821b610951565b5060208310610133831016604e8410600b8410161715613b37575081810a610951565b613b435f198484613a7b565b805f1904821115613b5657613b566137a9565b029392505050565b5f6125bd8383613abe56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3438    /// ```
3439    #[rustfmt::skip]
3440    #[allow(clippy::all)]
3441    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3442        b"`\x80`@R`\x046\x10a\x02\x80W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01UW\x80c\xB3\xE6\xEB\xD5\x11a\0\xBEW\x80c\xD5Gt\x1F\x11a\0xW\x80c\xD5Gt\x1F\x14a\x08LW\x80c\xD9\xCC}&\x14a\x08kW\x80c\xE6:\xB1\xE9\x14a\x08\x80W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA0W\x80c\xFAR\xC7\xD8\x14a\x08\xBFW\x80c\xFC\x0CTj\x14a\t\x02W__\xFD[\x80c\xB3\xE6\xEB\xD5\x14a\x07`W\x80c\xB5p\x0Eh\x14a\x07\x8EW\x80c\xB5\xEC\xB3D\x14a\x07\xADW\x80c\xBE 0\x94\x14a\x07\xD8W\x80c\xC6H\x14\xDD\x14a\x07\xF7W\x80c\xC7_T>\x14a\x08-W__\xFD[\x80c\x9F\xFBkC\x11a\x01\x0FW\x80c\x9F\xFBkC\x14a\x06-W\x80c\xA2\x17\xFD\xDF\x14a\x06\x80W\x80c\xA2\xD7\x8D\xD5\x14a\x06\x93W\x80c\xA3\x06j\xAB\x14a\x06\xE5W\x80c\xAC\\*\xD0\x14a\x07\x04W\x80c\xAD<\xB1\xCC\x14a\x07#W__\xFD[\x80cqP\x18\xA6\x14a\x05bW\x80c\x84V\xCBY\x14a\x05vW\x80c\x8D\xA5\xCB[\x14a\x05\x8AW\x80c\x91\xD1HT\x14a\x05\xDAW\x80c\x9B0\xA5\xE6\x14a\x05\xF9W\x80c\x9E\x9A\x8F1\x14a\x06\x18W__\xFD[\x80c9K4\x8F\x11a\x01\xF7W\x80cO\x1E\xF2\x86\x11a\x01\xB1W\x80cO\x1E\xF2\x86\x14a\x04\xBCW\x80cR\xD1\x90-\x14a\x04\xCFW\x80cUD\xC2\xF1\x14a\x04\xE3W\x80c\\\x97Z\xBB\x14a\x04\xFDW\x80c_\x87T\xA6\x14a\x05 W\x80cj\x91\x1C\xCF\x14a\x05NW__\xFD[\x80c9K4\x8F\x14a\x04\nW\x80c;+\x7F\xFA\x14a\x04)W\x80c>\x9D\xF9\xB5\x14a\x04HW\x80c?;\xB3f\x14a\x04\\W\x80c?K\xA8:\x14a\x04\x89W\x80cM\x99\xDD\x16\x14a\x04\x9DW__\xFD[\x80c!@\xFE\xCD\x11a\x02HW\x80c!@\xFE\xCD\x14a\x03BW\x80c$\x8A\x9C\xA3\x14a\x03aW\x80c-\xC9\xBA\xC6\x14a\x03\x8EW\x80c//\xF1]\x14a\x03\xADW\x80c0B@\xBF\x14a\x03\xCCW\x80c6V\x8A\xBE\x14a\x03\xEBW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x02\x84W\x80c\x02n@+\x14a\x02\xB8W\x80c\r\x8En,\x14a\x02\xD9W\x80c\x13\xB9\x05z\x14a\x03\x04W\x80c\x1A \xCDc\x14a\x03#W[__\xFD[4\x80\x15a\x02\x8FW__\xFD[Pa\x02\xA3a\x02\x9E6`\x04a1\xBAV[a\t!V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xC3W__\xFD[Pa\x02\xD7a\x02\xD26`\x04a1\xFCV[a\tWV[\0[4\x80\x15a\x02\xE4W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xAFV[4\x80\x15a\x03\x0FW__\xFD[Pa\x02\xD7a\x03\x1E6`\x04a3\0V[a\tmV[4\x80\x15a\x03.W__\xFD[Pa\x02\xD7a\x03=6`\x04a3jV[a\t\x86V[4\x80\x15a\x03MW__\xFD[Pa\x02\xD7a\x03\\6`\x04a3\x85V[a\n\x9AV[4\x80\x15a\x03lW__\xFD[Pa\x03\x80a\x03{6`\x04a3\x9EV[a\x0B\xEEV[`@Q\x90\x81R` \x01a\x02\xAFV[4\x80\x15a\x03\x99W__\xFD[Pa\x02\xD7a\x03\xA86`\x04a3\xB5V[a\x0C\x0EV[4\x80\x15a\x03\xB8W__\xFD[Pa\x02\xD7a\x03\xC76`\x04a3\xCEV[a\x0C\x97V[4\x80\x15a\x03\xD7W__\xFD[Pa\x02\xD7a\x03\xE66`\x04a4\x81V[a\x0C\xB9V[4\x80\x15a\x03\xF6W__\xFD[Pa\x02\xD7a\x04\x056`\x04a3\xCEV[a\x0E\xC1V[4\x80\x15a\x04\x15W__\xFD[Pa\x02\xD7a\x04$6`\x04a3\x9EV[a\x0E\xF9V[4\x80\x15a\x044W__\xFD[Pa\x02\xD7a\x04C6`\x04a3\xB5V[a\x0FfV[4\x80\x15a\x04SW__\xFD[Pa\x03\x80_T\x81V[4\x80\x15a\x04gW__\xFD[P`\nTa\x04v\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xAFV[4\x80\x15a\x04\x94W__\xFD[Pa\x02\xD7a\x10\xC9V[4\x80\x15a\x04\xA8W__\xFD[Pa\x02\xD7a\x04\xB76`\x04a1\xFCV[a\x10\xEBV[a\x02\xD7a\x04\xCA6`\x04a5\x01V[a\x10\xFDV[4\x80\x15a\x04\xDAW__\xFD[Pa\x03\x80a\x11\x18V[4\x80\x15a\x04\xEEW__\xFD[Pa\x02\xD7a\x03\x1E6`\x04a5KV[4\x80\x15a\x05\x08W__\xFD[P_Q` a<\x0E_9_Q\x90_RT`\xFF\x16a\x02\xA3V[4\x80\x15a\x05+W__\xFD[Pa\x02\xA3a\x05:6`\x04a3\x9EV[`\x0C` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x05YW__\xFD[Pa\x02\xD7a\x113V[4\x80\x15a\x05mW__\xFD[Pa\x02\xD7a\x11\xBDV[4\x80\x15a\x05\x81W__\xFD[Pa\x02\xD7a\x11\xD0V[4\x80\x15a\x05\x95W__\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\x02\xAFV[4\x80\x15a\x05\xE5W__\xFD[Pa\x02\xA3a\x05\xF46`\x04a3\xCEV[a\x11\xEFV[4\x80\x15a\x06\x04W__\xFD[Pa\x03\x80a\x06\x136`\x04a5\x8FV[a\x12%V[4\x80\x15a\x06#W__\xFD[Pa\x03\x80`\x08T\x81V[4\x80\x15a\x068W__\xFD[Pa\x06fa\x06G6`\x04a3\x85V[`\x0B` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x02\xAFV[4\x80\x15a\x06\x8BW__\xFD[Pa\x03\x80_\x81V[4\x80\x15a\x06\x9EW__\xFD[Pa\x06\xD0a\x06\xAD6`\x04a5\xA9V[`\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\x02\xAFV[4\x80\x15a\x06\xF0W__\xFD[Pa\x02\xD7a\x06\xFF6`\x04a3\x85V[a\x12\x7FV[4\x80\x15a\x07\x0FW__\xFD[Pa\x02\xD7a\x07\x1E6`\x04a5\xD1V[a\x12\x90V[4\x80\x15a\x07.W__\xFD[Pa\x07S`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xAF\x91\x90a6nV[4\x80\x15a\x07kW__\xFD[Pa\x02\xA3a\x07z6`\x04a3\x9EV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x07\x99W__\xFD[P`\x01Ta\x05\xC2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x07\xB8W__\xFD[Pa\x03\x80a\x07\xC76`\x04a3\x85V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x07\xE3W__\xFD[Pa\x02\xD7a\x07\xF26`\x04a6\x80V[a\x13gV[4\x80\x15a\x08\x02W__\xFD[Pa\x03\x80a\x08\x116`\x04a5\xA9V[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\x088W__\xFD[Pa\x02\xD7a\x08G6`\x04a6\xBFV[a\x14~V[4\x80\x15a\x08WW__\xFD[Pa\x02\xD7a\x08f6`\x04a3\xCEV[a\x15\x8DV[4\x80\x15a\x08vW__\xFD[Pa\x03\x80`\tT\x81V[4\x80\x15a\x08\x8BW__\xFD[Pa\x03\x80_Q` a;\xCE_9_Q\x90_R\x81V[4\x80\x15a\x08\xABW__\xFD[Pa\x02\xD7a\x08\xBA6`\x04a3\x85V[a\x15\xA9V[4\x80\x15a\x08\xCAW__\xFD[Pa\x08\xF4a\x08\xD96`\x04a3\x85V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x02\xAF\x92\x91\x90a7^V[4\x80\x15a\t\rW__\xFD[P`\x02Ta\x05\xC2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\tQWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\t_a\x15\xE8V[a\ti\x82\x82a\x16\x18V[PPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t\x8Ea\x17\xB6V[`\x01T`@\x80Qc<\x1A\x08\x15`\xE2\x1B\x81R\x90Q_\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\xF0h T\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\t\xD5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF9\x91\x90a7\x8EV[a\n\x04\x90`\x0Fa7\xBDV[\x90Pb\x12u\0`\x01`\x01`@\x1B\x03\x80\x83\x16\x90\x84\x16\x10\x80a\n5WP\x80`\x01`\x01`@\x1B\x03\x16\x83`\x01`\x01`@\x1B\x03\x16\x11[\x15a\nSW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x83\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPV[a\n\xA2a\x15\xE8V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\n\xDCW`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\n\xFDW`@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\x0BEW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x0B\x89\x90\x84\x90a7\xDFV[\x90\x91UPP`\x02Ta\x0B\xA5\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a\x18\x11V[\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\x0B\xE0\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPPV[_\x90\x81R_Q` a;\xEE_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x0C\x16a\x17\xB6V[_\x81a\xFF\xFF\x16\x11\x80\x15a\x0C/WPa'\x10\x81a\xFF\xFF\x16\x11\x15[a\x0CLW`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[a\x0C\xA0\x82a\x0B\xEEV[a\x0C\xA9\x81a\x18\x9AV[a\x0C\xB3\x83\x83a\x18\xA4V[PPPPV[a\x0C\xC1a\x15\xE8V[3a\x0C\xCB\x81a\x19LV[a\x0C\xD4\x85a\x19\x99V[a\x0C\xDE\x86\x86a\x19\xD4V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\r\x10\x81\x86\x89a\x1AMV[\x83Q`@\x14a\r2W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10\x83a\xFF\xFF\x16\x11\x15a\rYW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\rg\x8Aa\x12%V[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0C_a\r\x98\x89a\x1A\xE2V[\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\r\xDFWa\r\xDFa7JV[\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\x0E%Wa\x0E%a7JV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x86\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\x0B\x90\x92R\x91\x85\x90 \x93Q\x84Ta\xFF\xFF\x19\x16\x93\x16\x92\x90\x92\x17\x83UQ`\x01\x90\x92\x01\x91\x90\x91U\x90Q\x90\x91P\x7F\xF0W\xD4\xEA\x81\xE9\x86(e:\x8F\x90x\x85A\x97 x\x13s4\xA9+B4~\xAC\xCD\xA8\x0F\xC4\n\x90a\x0E\xB0\x90\x8A\x90\x8A\x90\x88\x90\x8B\x90\x8B\x90a7\xF2V[`@Q\x80\x91\x03\x90\xA2PPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x0E\xEAW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0E\xF4\x82\x82a\x1B\x06V[PPPV[a\x0F\x01a\x17\xB6V[_\x81\x11\x80\x15a\x0F\x14WPc\x01\xE13\x80\x81\x11\x15[a\x0F1W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x81\x90U`@Q\x81\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\x0C\x8CV[a\x0Fna\x15\xE8V[3a\x0Fx\x81a\x1B\x7FV[a'\x10\x82a\xFF\xFF\x16\x11\x15a\x0F\x9FW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x0B` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x0F\xE1W`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x10mW`\x01\x82\x01T\x80\x15\x80a\x10\x0FWP`\tTa\x10\x0B\x90\x82a8dV[B\x10\x15[a\x10,W`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x10=\x90a\xFF\xFF\x16\x83a8wV[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x10eW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01a\x0B\xE0V[_Q` a;\xCE_9_Q\x90_Ra\x10\xE0\x81a\x18\x9AV[a\x10\xE8a\x1C\0V[PV[a\x10\xF3a\x15\xE8V[a\ti\x82\x82a\x1CYV[a\x11\x05a\x1E\x0BV[a\x11\x0E\x82a\x1E\xAFV[a\ti\x82\x82a\x1E\xB7V[_a\x11!a\x1FsV[P_Q` a;\xAE_9_Q\x90_R\x90V[a\x11;a\x15\xE8V[3a\x11E\x81a\x1B\x7FV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x90 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x11w\x90Ba8dV[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x05` R`@\x80\x82 \x93\x90\x93U\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\x11\xC5a\x17\xB6V[a\x11\xCE_a\x1F\xBCV[V[_Q` a;\xCE_9_Q\x90_Ra\x11\xE7\x81a\x18\x9AV[a\x10\xE8a ,V[_\x91\x82R_Q` a;\xEE_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\x12b\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[a\x12\x87a\x15\xE8V[a\x10\xE8\x81a tV[a\x12\x98a\x15\xE8V[3a\x12\xA2\x81a\x1B\x7FV[a\x12\xAB\x84a\x19\x99V[a\x12\xB5\x85\x85a\x19\xD4V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x12\xE7\x81\x85\x88a\x1AMV[`\x01`\x04_a\x12\xF5\x89a\x12%V[\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\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa\x13W\x94\x93\x92\x91\x90a8\x91V[`@Q\x80\x91\x03\x90\xA2PPPPPPV[_Q` a<._9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x13\x98WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x13\xB3WP0;\x15[\x90P\x81\x15\x80\x15a\x13\xC1WP\x80\x15[\x15a\x13\xDFW`@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\x14\tW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x14\x12\x86a!\x84V[a\x14\x1Aa!\x95V[a\x14\"a!\x9DV[a\x14-\x89\x89\x89a\"\x8FV[\x83\x15a\x14sW\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[_Q` a<._9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x14\xB4WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x14\xD2W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81Ua\x14\xFBa!\x95V[a\x15\x05_\x86a\x18\xA4V[Pa\x15\x1D_Q` a;\xCE_9_Q\x90_R\x87a\x18\xA4V[Pb\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90Ua\x15>\x84\x84a#8V[\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\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\xA1PPPPPPV[a\x15\x96\x82a\x0B\xEEV[a\x15\x9F\x81a\x18\x9AV[a\x0C\xB3\x83\x83a\x1B\x06V[a\x15\xB1a\x17\xB6V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xDFW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x10\xE8\x81a\x1F\xBCV[_Q` a<\x0E_9_Q\x90_RT`\xFF\x16\x15a\x11\xCEW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x16!\x82a\x1B\x7FV[3_\x82\x90\x03a\x16CW`@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\x16\x91W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xB5\x91\x90a8\xF7V[\x90P\x82\x81\x10\x15a\x16\xE2W`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01a\x15\xD6V[`\x02Ta\x16\xFA\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a$\xCDV[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x17!\x90\x84\x90a8dV[\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\x17\\\x90\x84\x90a8dV[\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\x17\xA8\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[3a\x17\xE8\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\x11\xCEW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xD6V[_`@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\x18[WP\x82;\x15=\x17\x15[\x80a\x0C\xB3W`@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\x15\xD6V[a\x10\xE8\x813a%jV[__Q` a;\xEE_9_Q\x90_Ra\x18\xBD\x84\x84a\x11\xEFV[a\x19<W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x18\xF23\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\tQV[_\x91PPa\tQV[P\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\x19{Wa\x19{a7JV[\x14a\x10\xE8W`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x19\xB6\x82\x82a%\xA3V[\x15a\tiW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\x19\xE0\x84a\x12%V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x1A\x10W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C_a\x1A\x1C\x83a\x1A\xE2V[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\tiW`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1AV\x82a%\xC4V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01a;j`$\x919\x90P_\x84\x82`@Q` \x01a\x1A\x86\x92\x91\x90a9%V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a\x1A\xA1\x82a&+V[\x90Pa\x1A\xBE\x81\x85a\x1A\xB1\x88a'\x18V[a\x1A\xB9a'\x8FV[a(\\V[a\x1A\xDAW`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a\x12b\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[__Q` a;\xEE_9_Q\x90_Ra\x1B\x1F\x84\x84a\x11\xEFV[\x15a\x19<W_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\tQV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a\x1B\xB0Wa\x1B\xB0a7JV[\x03a\x1B\xCEW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a\x1B\xE2Wa\x1B\xE2a7JV[\x03a\tiW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\x08a)\x0BV[_Q` a<\x0E_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x0C\x8CV[a\x1Cb\x82a\x1B\x7FV[3_\x82\x90\x03a\x1C\x84W`@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\x1C\xC7W`@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\x1D\x10W`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xD6V[`\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\x1DF\x90\x84\x90a7\xDFV[\x92PP\x81\x90UP`@Q\x80`@\x01`@R\x80\x84\x81R` \x01`\x08TBa\x1Dl\x91\x90a8dV[\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\x1D\xBF\x90\x84\x90a7\xDFV[\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\x17\xA8\x91\x81R` \x01\x90V[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\x1E\x91WP\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\x1E\x85_Q` a;\xAE_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x11\xCEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xE8a\x17\xB6V[\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\x1F\x11WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1F\x0E\x91\x81\x01\x90a8\xF7V[`\x01[a\x1F9W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xD6V[_Q` a;\xAE_9_Q\x90_R\x81\x14a\x1FiW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xD6V[a\x0E\xF4\x83\x83a):V[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\x11\xCEW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a 4a\x15\xE8V[_Q` a<\x0E_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a\x1CAV[`\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 \xB9W`@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!\x01W`@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!<\x91\x16\x83\x83a\x18\x11V[\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!w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPPV[a!\x8Ca)\x8FV[a\x10\xE8\x81a)\xC5V[a\x11\xCEa)\x8FV[_Q` a<._9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a!\xCEWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a!\xE9WP0;\x15[\x90P\x81\x15\x80\x15a!\xF7WP\x80\x15[\x15a\"\x15W`@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\"?W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a\"\x88W\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[PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\"\xB6W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a\"\xDDW`@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#0W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[_[\x81\x81\x10\x15a\x0E\xF4W_\x83\x83\x83\x81\x81\x10a#UWa#Ua9AV[a#k\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa3\x85V[\x90P_\x84\x84\x84\x81\x81\x10a#\x80Wa#\x80a9AV[\x90P`@\x02\x01` \x01` \x81\x01\x90a#\x98\x91\x90a3\xB5V[\x90Pa'\x10\x81a\xFF\xFF\x16\x11\x15a#\xC1W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a#\xF2Wa#\xF2a7JV[\x03a$\x10W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x0B` R`@\x90 `\x01\x01T\x15\x80\x15a$QWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x0B` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a$|W`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\x15\xD6V[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\x0B\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a#:V[_`@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%&WP\x83;\x15=\x17\x15[\x80a\"\x88W`@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\x15\xD6V[a%t\x82\x82a\x11\xEFV[a\tiW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x15\xD6V[\x80Q\x82Q_\x91\x14\x80\x15a%\xBDWP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` a;\x8E_9_Q\x90_R\x91\x15\x90\x15\x16\x15a%\xEAWPPPV[\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\x0E\xF4W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a&H\x83a)\xCDV[\x90P_Q` a;\x8E_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a&oWa&oa9UV[\x84\x82\t\x90P\x82\x80a&\x82Wa&\x82a9UV[\x82\x82\x08\x90P__a&\x92\x83a+\xD5V[\x92P\x90P[\x80a&\xFBW\x84\x80a&\xAAWa&\xAAa9UV[`\x01\x87\x08\x95P\x84\x80a&\xBEWa&\xBEa9UV[\x86\x87\t\x92P\x84\x80a&\xD1Wa&\xD1a9UV[\x86\x84\t\x92P\x84\x80a&\xE4Wa&\xE4a9UV[\x84\x84\x08\x92Pa&\xF2\x83a+\xD5V[\x92P\x90Pa&\x97V[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'?WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a;\x8E_9_Q\x90_R\x84` \x01Qa'p\x91\x90a9iV[a'\x87\x90_Q` a;\x8E_9_Q\x90_Ra7\xDFV[\x90R\x92\x91PPV[a'\xB6`@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(\xFFW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` a<\x0E_9_Q\x90_RT`\xFF\x16a\x11\xCEW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a)C\x82a,\x9DV[`@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)\x87Wa\x0E\xF4\x82\x82a-\0V[a\tia-rV[_Q` a<._9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x11\xCEW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\xB1a)\x8FV[__a)\xD8\x83a-\x91V[\x80Q\x90\x91P`0\x81\x14a)\xEDWa)\xEDa9\x88V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x06Wa*\x06a2$V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a*0W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a*\x9FW\x83`\x01a*J\x83\x86a7\xDFV[a*T\x91\x90a7\xDFV[\x81Q\x81\x10a*dWa*da9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a*\x81Wa*\x81a9AV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a*5V[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+/W\x83\x81a*\xDB\x85\x88a7\xDFV[a*\xE5\x91\x90a8dV[\x81Q\x81\x10a*\xF5Wa*\xF5a9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a+\x15Wa+\x15a9AV[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a*\xC7V[P_a+:\x82a0\xDCV[\x90Pa\x01\0_Q` a;\x8E_9_Q\x90_R_a+X\x86\x89a7\xDFV[\x90P_[\x81\x81\x10\x15a+\xC5W_\x88`\x01a+r\x84\x86a7\xDFV[a+|\x91\x90a7\xDFV[\x81Q\x81\x10a+\x8CWa+\x8Ca9AV[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a+\xA4Wa+\xA4a9UV[\x85\x87\t\x95P\x83\x80a+\xB7Wa+\xB7a9UV[\x81\x87\x08\x95PP`\x01\x01a+\\V[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;\x8E_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,cW`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a,|Wa,y\x83\x82a7\xDFV[\x92P[\x80\x80a,\x8AWa,\x8Aa9UV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a,\xD2W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xD6V[_Q` a;\xAE_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-\x1C\x91\x90a9\x9CV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a-TW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a-YV[``\x91P[P\x91P\x91Pa-i\x85\x83\x83a1<V[\x95\x94PPPPPV[4\x15a\x11\xCEW`@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-\xD1\x92\x91\x90a9%V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a-\xF8\x92\x91\x90a9\xA7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a.\x1A\x91\x90a9\xD1V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a.D\x90\x83\x90\x83\x90` \x01a9\xE9V[`@\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\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xB3Wa.\xB3a2$V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a.\xDDW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a.\xF4\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a/^W\x81\x81\x81Q\x81\x10a/#Wa/#a9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a/@Wa/@a9AV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a/\x08V[P_\x84`@Q` \x01a/s\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a0\x05W_\x83\x82\x81Q\x81\x10a/\xACWa/\xACa9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a/\xC9Wa/\xC9a9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a/\xEA\x92\x91\x90a:\rV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a/\x91V[P\x86\x88\x87`@Q` \x01a0\x1B\x93\x92\x91\x90a:1V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a0I\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a0j\x8A`\xFF\x8D\x16a7\xDFV[\x81\x10\x15a0\xCBW\x82\x81\x81Q\x81\x10a0\x83Wa0\x83a9AV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a0\x9D\x83\x8Da8dV[\x81Q\x81\x10a0\xADWa0\xADa9AV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a0]V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a\x19EW\x83\x81\x81Q\x81\x10a0\xFBWa0\xFBa9AV[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a1\x13\x91\x90a:dV[a1\x1E\x90`\x02a;^V[a1(\x91\x90a:dV[a12\x90\x83a8dV[\x91P`\x01\x01a0\xE0V[``\x82a1QWa1L\x82a1\x91V[a%\xBDV[\x81Q\x15\x80\x15a1hWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x19EW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xD6V[\x80Q\x15a1\xA1W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a1\xCAW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a%\xBDW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a1\xF7W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a2\rW__\xFD[a2\x16\x83a1\xE1V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2ZWa2Za2$V[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a2pW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x92Wa2\x92a2$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\x15a2\xD0W__\xFD[a2\xD8a28V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a1\xF7W__\xFD[____a\x01 \x85\x87\x03\x12\x15a3\x14W__\xFD[a3\x1E\x86\x86a2`V[\x93Pa3-\x86`\x80\x87\x01a2\xC0V[\x92Pa3<\x86`\xC0\x87\x01a2\xC0V[\x91Pa3Ka\x01\0\x86\x01a2\xEFV[\x90P\x92\x95\x91\x94P\x92PV[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x10\xE8W__\xFD[_` \x82\x84\x03\x12\x15a3zW__\xFD[\x815a%\xBD\x81a3VV[_` \x82\x84\x03\x12\x15a3\x95W__\xFD[a%\xBD\x82a1\xE1V[_` \x82\x84\x03\x12\x15a3\xAEW__\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a3\xC5W__\xFD[a%\xBD\x82a2\xEFV[__`@\x83\x85\x03\x12\x15a3\xDFW__\xFD[\x825\x91Pa3\xEF` \x84\x01a1\xE1V[\x90P\x92P\x92\x90PV[_\x82`\x1F\x83\x01\x12a4\x07W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4 Wa4 a2$V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a4NWa4Na2$V[`@R\x81\x81R\x83\x82\x01` \x01\x85\x10\x15a4eW__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_____a\x01@\x86\x88\x03\x12\x15a4\x96W__\xFD[a4\xA0\x87\x87a2`V[\x94Pa4\xAF\x87`\x80\x88\x01a2\xC0V[\x93Pa4\xBE\x87`\xC0\x88\x01a2\xC0V[\x92Pa\x01\0\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xD9W__\xFD[a4\xE5\x88\x82\x89\x01a3\xF8V[\x92PPa4\xF5a\x01 \x87\x01a2\xEFV[\x90P\x92\x95P\x92\x95\x90\x93PV[__`@\x83\x85\x03\x12\x15a5\x12W__\xFD[a5\x1B\x83a1\xE1V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a55W__\xFD[a5A\x85\x82\x86\x01a3\xF8V[\x91PP\x92P\x92\x90PV[___a\x01\0\x84\x86\x03\x12\x15a5^W__\xFD[a5h\x85\x85a2`V[\x92Pa5w\x85`\x80\x86\x01a2\xC0V[\x91Pa5\x86\x85`\xC0\x86\x01a2\xC0V[\x90P\x92P\x92P\x92V[_`\x80\x82\x84\x03\x12\x15a5\x9FW__\xFD[a%\xBD\x83\x83a2`V[__`@\x83\x85\x03\x12\x15a5\xBAW__\xFD[a5\xC3\x83a1\xE1V[\x91Pa3\xEF` \x84\x01a1\xE1V[____a\x01 \x85\x87\x03\x12\x15a5\xE5W__\xFD[a5\xEF\x86\x86a2`V[\x93Pa5\xFE\x86`\x80\x87\x01a2\xC0V[\x92Pa6\r\x86`\xC0\x87\x01a2\xC0V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6(W__\xFD[a64\x87\x82\x88\x01a3\xF8V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a%\xBD` \x83\x01\x84a6@V[____`\x80\x85\x87\x03\x12\x15a6\x93W__\xFD[a6\x9C\x85a1\xE1V[\x93Pa6\xAA` \x86\x01a1\xE1V[\x92P`@\x85\x015\x91Pa3K``\x86\x01a1\xE1V[____``\x85\x87\x03\x12\x15a6\xD2W__\xFD[a6\xDB\x85a1\xE1V[\x93Pa6\xE9` \x86\x01a1\xE1V[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7\x03W__\xFD[\x85\x01`\x1F\x81\x01\x87\x13a7\x13W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a7(W__\xFD[\x87` \x82`\x06\x1B\x84\x01\x01\x11\x15a7<W__\xFD[\x94\x97\x93\x96P` \x01\x94PPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a7\x81WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a7\x9EW__\xFD[\x81Qa%\xBD\x81a3VV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a\x19EWa\x19Ea7\xA9V[\x81\x81\x03\x81\x81\x11\x15a\tQWa\tQa7\xA9V[\x85Q\x81R` \x80\x87\x01Q\x90\x82\x01R`@\x80\x87\x01Q\x90\x82\x01R``\x80\x87\x01Q\x90\x82\x01R\x84Q`\x80\x82\x01R` \x85\x01Q`\xA0\x82\x01Ra\xFF\xFF\x84\x16`\xC0\x82\x01R\x82Q`\xE0\x82\x01R` \x83\x01Qa\x01\0\x82\x01Ra\x01@a\x01 \x82\x01R_a8Ya\x01@\x83\x01\x84a6@V[\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\tQWa\tQa7\xA9V[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\tQWa\tQa7\xA9V[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_a8\xEDa\x01 \x83\x01\x84a6@V[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a9\x07W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a99a93\x83\x86a9\x0EV[\x84a9\x0EV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a9\x83WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a%\xBD\x82\x84a9\x0EV[_a9\xB2\x82\x85a9\x0EV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_a9\xDC\x82\x84a9\x0EV[_\x81R`\x01\x01\x93\x92PPPV[_a9\xF4\x82\x85a9\x0EV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_a:\x18\x82\x85a9\x0EV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_a:<\x82\x86a9\x0EV[`\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\tQWa\tQa7\xA9V[`\x01\x81[`\x01\x84\x11\x15a:\xB6W\x80\x85\x04\x81\x11\x15a:\x9AWa:\x9Aa7\xA9V[`\x01\x84\x16\x15a:\xA8W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02a:\x7FV[\x93P\x93\x91PPV[_\x82a:\xCCWP`\x01a\tQV[\x81a:\xD8WP_a\tQV[\x81`\x01\x81\x14a:\xEEW`\x02\x81\x14a:\xF8Wa;\x14V[`\x01\x91PPa\tQV[`\xFF\x84\x11\x15a;\tWa;\ta7\xA9V[PP`\x01\x82\x1Ba\tQV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15a;7WP\x81\x81\na\tQV[a;C_\x19\x84\x84a:{V[\x80_\x19\x04\x82\x11\x15a;VWa;Va7\xA9V[\x02\x93\x92PPPV[_a%\xBD\x83\x83a:\xBEV\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+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
3443    );
3444    #[derive(serde::Serialize, serde::Deserialize)]
3445    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3446    /**```solidity
3447struct InitialCommission { address validator; uint16 commission; }
3448```*/
3449    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3450    #[derive(Clone)]
3451    pub struct InitialCommission {
3452        #[allow(missing_docs)]
3453        pub validator: alloy::sol_types::private::Address,
3454        #[allow(missing_docs)]
3455        pub commission: u16,
3456    }
3457    #[allow(
3458        non_camel_case_types,
3459        non_snake_case,
3460        clippy::pub_underscore_fields,
3461        clippy::style
3462    )]
3463    const _: () = {
3464        use alloy::sol_types as alloy_sol_types;
3465        #[doc(hidden)]
3466        #[allow(dead_code)]
3467        type UnderlyingSolTuple<'a> = (
3468            alloy::sol_types::sol_data::Address,
3469            alloy::sol_types::sol_data::Uint<16>,
3470        );
3471        #[doc(hidden)]
3472        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u16);
3473        #[cfg(test)]
3474        #[allow(dead_code, unreachable_patterns)]
3475        fn _type_assertion(
3476            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3477        ) {
3478            match _t {
3479                alloy_sol_types::private::AssertTypeEq::<
3480                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3481                >(_) => {}
3482            }
3483        }
3484        #[automatically_derived]
3485        #[doc(hidden)]
3486        impl ::core::convert::From<InitialCommission> for UnderlyingRustTuple<'_> {
3487            fn from(value: InitialCommission) -> Self {
3488                (value.validator, value.commission)
3489            }
3490        }
3491        #[automatically_derived]
3492        #[doc(hidden)]
3493        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InitialCommission {
3494            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3495                Self {
3496                    validator: tuple.0,
3497                    commission: tuple.1,
3498                }
3499            }
3500        }
3501        #[automatically_derived]
3502        impl alloy_sol_types::SolValue for InitialCommission {
3503            type SolType = Self;
3504        }
3505        #[automatically_derived]
3506        impl alloy_sol_types::private::SolTypeValue<Self> for InitialCommission {
3507            #[inline]
3508            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3509                (
3510                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3511                        &self.validator,
3512                    ),
3513                    <alloy::sol_types::sol_data::Uint<
3514                        16,
3515                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
3516                )
3517            }
3518            #[inline]
3519            fn stv_abi_encoded_size(&self) -> usize {
3520                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3521                    return size;
3522                }
3523                let tuple = <UnderlyingRustTuple<
3524                    '_,
3525                > as ::core::convert::From<Self>>::from(self.clone());
3526                <UnderlyingSolTuple<
3527                    '_,
3528                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3529            }
3530            #[inline]
3531            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3532                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3533            }
3534            #[inline]
3535            fn stv_abi_encode_packed_to(
3536                &self,
3537                out: &mut alloy_sol_types::private::Vec<u8>,
3538            ) {
3539                let tuple = <UnderlyingRustTuple<
3540                    '_,
3541                > as ::core::convert::From<Self>>::from(self.clone());
3542                <UnderlyingSolTuple<
3543                    '_,
3544                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3545            }
3546            #[inline]
3547            fn stv_abi_packed_encoded_size(&self) -> usize {
3548                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3549                    return size;
3550                }
3551                let tuple = <UnderlyingRustTuple<
3552                    '_,
3553                > as ::core::convert::From<Self>>::from(self.clone());
3554                <UnderlyingSolTuple<
3555                    '_,
3556                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3557            }
3558        }
3559        #[automatically_derived]
3560        impl alloy_sol_types::SolType for InitialCommission {
3561            type RustType = Self;
3562            type Token<'a> = <UnderlyingSolTuple<
3563                'a,
3564            > as alloy_sol_types::SolType>::Token<'a>;
3565            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3566            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3567                '_,
3568            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3569            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3570                '_,
3571            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3572            #[inline]
3573            fn valid_token(token: &Self::Token<'_>) -> bool {
3574                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3575            }
3576            #[inline]
3577            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3578                let tuple = <UnderlyingSolTuple<
3579                    '_,
3580                > as alloy_sol_types::SolType>::detokenize(token);
3581                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3582            }
3583        }
3584        #[automatically_derived]
3585        impl alloy_sol_types::SolStruct for InitialCommission {
3586            const NAME: &'static str = "InitialCommission";
3587            #[inline]
3588            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3589                alloy_sol_types::private::Cow::Borrowed(
3590                    "InitialCommission(address validator,uint16 commission)",
3591                )
3592            }
3593            #[inline]
3594            fn eip712_components() -> alloy_sol_types::private::Vec<
3595                alloy_sol_types::private::Cow<'static, str>,
3596            > {
3597                alloy_sol_types::private::Vec::new()
3598            }
3599            #[inline]
3600            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3601                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3602            }
3603            #[inline]
3604            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3605                [
3606                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
3607                            &self.validator,
3608                        )
3609                        .0,
3610                    <alloy::sol_types::sol_data::Uint<
3611                        16,
3612                    > as alloy_sol_types::SolType>::eip712_data_word(&self.commission)
3613                        .0,
3614                ]
3615                    .concat()
3616            }
3617        }
3618        #[automatically_derived]
3619        impl alloy_sol_types::EventTopic for InitialCommission {
3620            #[inline]
3621            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3622                0usize
3623                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
3624                        &rust.validator,
3625                    )
3626                    + <alloy::sol_types::sol_data::Uint<
3627                        16,
3628                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3629                        &rust.commission,
3630                    )
3631            }
3632            #[inline]
3633            fn encode_topic_preimage(
3634                rust: &Self::RustType,
3635                out: &mut alloy_sol_types::private::Vec<u8>,
3636            ) {
3637                out.reserve(
3638                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3639                );
3640                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
3641                    &rust.validator,
3642                    out,
3643                );
3644                <alloy::sol_types::sol_data::Uint<
3645                    16,
3646                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3647                    &rust.commission,
3648                    out,
3649                );
3650            }
3651            #[inline]
3652            fn encode_topic(
3653                rust: &Self::RustType,
3654            ) -> alloy_sol_types::abi::token::WordToken {
3655                let mut out = alloy_sol_types::private::Vec::new();
3656                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3657                    rust,
3658                    &mut out,
3659                );
3660                alloy_sol_types::abi::token::WordToken(
3661                    alloy_sol_types::private::keccak256(out),
3662                )
3663            }
3664        }
3665    };
3666    #[derive(serde::Serialize, serde::Deserialize)]
3667    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3668    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
3669```solidity
3670error AccessControlBadConfirmation();
3671```*/
3672    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3673    #[derive(Clone)]
3674    pub struct AccessControlBadConfirmation;
3675    #[allow(
3676        non_camel_case_types,
3677        non_snake_case,
3678        clippy::pub_underscore_fields,
3679        clippy::style
3680    )]
3681    const _: () = {
3682        use alloy::sol_types as alloy_sol_types;
3683        #[doc(hidden)]
3684        #[allow(dead_code)]
3685        type UnderlyingSolTuple<'a> = ();
3686        #[doc(hidden)]
3687        type UnderlyingRustTuple<'a> = ();
3688        #[cfg(test)]
3689        #[allow(dead_code, unreachable_patterns)]
3690        fn _type_assertion(
3691            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3692        ) {
3693            match _t {
3694                alloy_sol_types::private::AssertTypeEq::<
3695                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3696                >(_) => {}
3697            }
3698        }
3699        #[automatically_derived]
3700        #[doc(hidden)]
3701        impl ::core::convert::From<AccessControlBadConfirmation>
3702        for UnderlyingRustTuple<'_> {
3703            fn from(value: AccessControlBadConfirmation) -> Self {
3704                ()
3705            }
3706        }
3707        #[automatically_derived]
3708        #[doc(hidden)]
3709        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3710        for AccessControlBadConfirmation {
3711            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3712                Self
3713            }
3714        }
3715        #[automatically_derived]
3716        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
3717            type Parameters<'a> = UnderlyingSolTuple<'a>;
3718            type Token<'a> = <Self::Parameters<
3719                'a,
3720            > as alloy_sol_types::SolType>::Token<'a>;
3721            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
3722            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
3723            #[inline]
3724            fn new<'a>(
3725                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3726            ) -> Self {
3727                tuple.into()
3728            }
3729            #[inline]
3730            fn tokenize(&self) -> Self::Token<'_> {
3731                ()
3732            }
3733            #[inline]
3734            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3735                <Self::Parameters<
3736                    '_,
3737                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3738                    .map(Self::new)
3739            }
3740        }
3741    };
3742    #[derive(serde::Serialize, serde::Deserialize)]
3743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3744    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
3745```solidity
3746error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
3747```*/
3748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3749    #[derive(Clone)]
3750    pub struct AccessControlUnauthorizedAccount {
3751        #[allow(missing_docs)]
3752        pub account: alloy::sol_types::private::Address,
3753        #[allow(missing_docs)]
3754        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
3755    }
3756    #[allow(
3757        non_camel_case_types,
3758        non_snake_case,
3759        clippy::pub_underscore_fields,
3760        clippy::style
3761    )]
3762    const _: () = {
3763        use alloy::sol_types as alloy_sol_types;
3764        #[doc(hidden)]
3765        #[allow(dead_code)]
3766        type UnderlyingSolTuple<'a> = (
3767            alloy::sol_types::sol_data::Address,
3768            alloy::sol_types::sol_data::FixedBytes<32>,
3769        );
3770        #[doc(hidden)]
3771        type UnderlyingRustTuple<'a> = (
3772            alloy::sol_types::private::Address,
3773            alloy::sol_types::private::FixedBytes<32>,
3774        );
3775        #[cfg(test)]
3776        #[allow(dead_code, unreachable_patterns)]
3777        fn _type_assertion(
3778            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3779        ) {
3780            match _t {
3781                alloy_sol_types::private::AssertTypeEq::<
3782                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3783                >(_) => {}
3784            }
3785        }
3786        #[automatically_derived]
3787        #[doc(hidden)]
3788        impl ::core::convert::From<AccessControlUnauthorizedAccount>
3789        for UnderlyingRustTuple<'_> {
3790            fn from(value: AccessControlUnauthorizedAccount) -> Self {
3791                (value.account, value.neededRole)
3792            }
3793        }
3794        #[automatically_derived]
3795        #[doc(hidden)]
3796        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3797        for AccessControlUnauthorizedAccount {
3798            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3799                Self {
3800                    account: tuple.0,
3801                    neededRole: tuple.1,
3802                }
3803            }
3804        }
3805        #[automatically_derived]
3806        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
3807            type Parameters<'a> = UnderlyingSolTuple<'a>;
3808            type Token<'a> = <Self::Parameters<
3809                'a,
3810            > as alloy_sol_types::SolType>::Token<'a>;
3811            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
3812            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
3813            #[inline]
3814            fn new<'a>(
3815                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3816            ) -> Self {
3817                tuple.into()
3818            }
3819            #[inline]
3820            fn tokenize(&self) -> Self::Token<'_> {
3821                (
3822                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3823                        &self.account,
3824                    ),
3825                    <alloy::sol_types::sol_data::FixedBytes<
3826                        32,
3827                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
3828                )
3829            }
3830            #[inline]
3831            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3832                <Self::Parameters<
3833                    '_,
3834                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3835                    .map(Self::new)
3836            }
3837        }
3838    };
3839    #[derive(serde::Serialize, serde::Deserialize)]
3840    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3841    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
3842```solidity
3843error AddressEmptyCode(address target);
3844```*/
3845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3846    #[derive(Clone)]
3847    pub struct AddressEmptyCode {
3848        #[allow(missing_docs)]
3849        pub target: alloy::sol_types::private::Address,
3850    }
3851    #[allow(
3852        non_camel_case_types,
3853        non_snake_case,
3854        clippy::pub_underscore_fields,
3855        clippy::style
3856    )]
3857    const _: () = {
3858        use alloy::sol_types as alloy_sol_types;
3859        #[doc(hidden)]
3860        #[allow(dead_code)]
3861        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3862        #[doc(hidden)]
3863        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3864        #[cfg(test)]
3865        #[allow(dead_code, unreachable_patterns)]
3866        fn _type_assertion(
3867            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3868        ) {
3869            match _t {
3870                alloy_sol_types::private::AssertTypeEq::<
3871                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3872                >(_) => {}
3873            }
3874        }
3875        #[automatically_derived]
3876        #[doc(hidden)]
3877        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
3878            fn from(value: AddressEmptyCode) -> Self {
3879                (value.target,)
3880            }
3881        }
3882        #[automatically_derived]
3883        #[doc(hidden)]
3884        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
3885            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3886                Self { target: tuple.0 }
3887            }
3888        }
3889        #[automatically_derived]
3890        impl alloy_sol_types::SolError for AddressEmptyCode {
3891            type Parameters<'a> = UnderlyingSolTuple<'a>;
3892            type Token<'a> = <Self::Parameters<
3893                'a,
3894            > as alloy_sol_types::SolType>::Token<'a>;
3895            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
3896            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
3897            #[inline]
3898            fn new<'a>(
3899                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3900            ) -> Self {
3901                tuple.into()
3902            }
3903            #[inline]
3904            fn tokenize(&self) -> Self::Token<'_> {
3905                (
3906                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3907                        &self.target,
3908                    ),
3909                )
3910            }
3911            #[inline]
3912            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3913                <Self::Parameters<
3914                    '_,
3915                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3916                    .map(Self::new)
3917            }
3918        }
3919    };
3920    #[derive(serde::Serialize, serde::Deserialize)]
3921    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3922    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
3923```solidity
3924error BLSSigVerificationFailed();
3925```*/
3926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3927    #[derive(Clone)]
3928    pub struct BLSSigVerificationFailed;
3929    #[allow(
3930        non_camel_case_types,
3931        non_snake_case,
3932        clippy::pub_underscore_fields,
3933        clippy::style
3934    )]
3935    const _: () = {
3936        use alloy::sol_types as alloy_sol_types;
3937        #[doc(hidden)]
3938        #[allow(dead_code)]
3939        type UnderlyingSolTuple<'a> = ();
3940        #[doc(hidden)]
3941        type UnderlyingRustTuple<'a> = ();
3942        #[cfg(test)]
3943        #[allow(dead_code, unreachable_patterns)]
3944        fn _type_assertion(
3945            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3946        ) {
3947            match _t {
3948                alloy_sol_types::private::AssertTypeEq::<
3949                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3950                >(_) => {}
3951            }
3952        }
3953        #[automatically_derived]
3954        #[doc(hidden)]
3955        impl ::core::convert::From<BLSSigVerificationFailed>
3956        for UnderlyingRustTuple<'_> {
3957            fn from(value: BLSSigVerificationFailed) -> Self {
3958                ()
3959            }
3960        }
3961        #[automatically_derived]
3962        #[doc(hidden)]
3963        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3964        for BLSSigVerificationFailed {
3965            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3966                Self
3967            }
3968        }
3969        #[automatically_derived]
3970        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
3971            type Parameters<'a> = UnderlyingSolTuple<'a>;
3972            type Token<'a> = <Self::Parameters<
3973                'a,
3974            > as alloy_sol_types::SolType>::Token<'a>;
3975            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
3976            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
3977            #[inline]
3978            fn new<'a>(
3979                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3980            ) -> Self {
3981                tuple.into()
3982            }
3983            #[inline]
3984            fn tokenize(&self) -> Self::Token<'_> {
3985                ()
3986            }
3987            #[inline]
3988            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3989                <Self::Parameters<
3990                    '_,
3991                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3992                    .map(Self::new)
3993            }
3994        }
3995    };
3996    #[derive(serde::Serialize, serde::Deserialize)]
3997    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3998    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
3999```solidity
4000error BN254PairingProdFailed();
4001```*/
4002    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4003    #[derive(Clone)]
4004    pub struct BN254PairingProdFailed;
4005    #[allow(
4006        non_camel_case_types,
4007        non_snake_case,
4008        clippy::pub_underscore_fields,
4009        clippy::style
4010    )]
4011    const _: () = {
4012        use alloy::sol_types as alloy_sol_types;
4013        #[doc(hidden)]
4014        #[allow(dead_code)]
4015        type UnderlyingSolTuple<'a> = ();
4016        #[doc(hidden)]
4017        type UnderlyingRustTuple<'a> = ();
4018        #[cfg(test)]
4019        #[allow(dead_code, unreachable_patterns)]
4020        fn _type_assertion(
4021            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4022        ) {
4023            match _t {
4024                alloy_sol_types::private::AssertTypeEq::<
4025                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4026                >(_) => {}
4027            }
4028        }
4029        #[automatically_derived]
4030        #[doc(hidden)]
4031        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
4032            fn from(value: BN254PairingProdFailed) -> Self {
4033                ()
4034            }
4035        }
4036        #[automatically_derived]
4037        #[doc(hidden)]
4038        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
4039            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4040                Self
4041            }
4042        }
4043        #[automatically_derived]
4044        impl alloy_sol_types::SolError for BN254PairingProdFailed {
4045            type Parameters<'a> = UnderlyingSolTuple<'a>;
4046            type Token<'a> = <Self::Parameters<
4047                'a,
4048            > as alloy_sol_types::SolType>::Token<'a>;
4049            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
4050            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
4051            #[inline]
4052            fn new<'a>(
4053                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4054            ) -> Self {
4055                tuple.into()
4056            }
4057            #[inline]
4058            fn tokenize(&self) -> Self::Token<'_> {
4059                ()
4060            }
4061            #[inline]
4062            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4063                <Self::Parameters<
4064                    '_,
4065                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4066                    .map(Self::new)
4067            }
4068        }
4069    };
4070    #[derive(serde::Serialize, serde::Deserialize)]
4071    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4072    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
4073```solidity
4074error BlsKeyAlreadyUsed();
4075```*/
4076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4077    #[derive(Clone)]
4078    pub struct BlsKeyAlreadyUsed;
4079    #[allow(
4080        non_camel_case_types,
4081        non_snake_case,
4082        clippy::pub_underscore_fields,
4083        clippy::style
4084    )]
4085    const _: () = {
4086        use alloy::sol_types as alloy_sol_types;
4087        #[doc(hidden)]
4088        #[allow(dead_code)]
4089        type UnderlyingSolTuple<'a> = ();
4090        #[doc(hidden)]
4091        type UnderlyingRustTuple<'a> = ();
4092        #[cfg(test)]
4093        #[allow(dead_code, unreachable_patterns)]
4094        fn _type_assertion(
4095            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4096        ) {
4097            match _t {
4098                alloy_sol_types::private::AssertTypeEq::<
4099                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4100                >(_) => {}
4101            }
4102        }
4103        #[automatically_derived]
4104        #[doc(hidden)]
4105        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
4106            fn from(value: BlsKeyAlreadyUsed) -> Self {
4107                ()
4108            }
4109        }
4110        #[automatically_derived]
4111        #[doc(hidden)]
4112        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
4113            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4114                Self
4115            }
4116        }
4117        #[automatically_derived]
4118        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
4119            type Parameters<'a> = UnderlyingSolTuple<'a>;
4120            type Token<'a> = <Self::Parameters<
4121                'a,
4122            > as alloy_sol_types::SolType>::Token<'a>;
4123            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
4124            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
4125            #[inline]
4126            fn new<'a>(
4127                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4128            ) -> Self {
4129                tuple.into()
4130            }
4131            #[inline]
4132            fn tokenize(&self) -> Self::Token<'_> {
4133                ()
4134            }
4135            #[inline]
4136            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4137                <Self::Parameters<
4138                    '_,
4139                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4140                    .map(Self::new)
4141            }
4142        }
4143    };
4144    #[derive(serde::Serialize, serde::Deserialize)]
4145    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4146    /**Custom error with signature `CommissionAlreadyInitialized(address)` and selector `0x50814e10`.
4147```solidity
4148error CommissionAlreadyInitialized(address validator);
4149```*/
4150    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4151    #[derive(Clone)]
4152    pub struct CommissionAlreadyInitialized {
4153        #[allow(missing_docs)]
4154        pub validator: alloy::sol_types::private::Address,
4155    }
4156    #[allow(
4157        non_camel_case_types,
4158        non_snake_case,
4159        clippy::pub_underscore_fields,
4160        clippy::style
4161    )]
4162    const _: () = {
4163        use alloy::sol_types as alloy_sol_types;
4164        #[doc(hidden)]
4165        #[allow(dead_code)]
4166        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4167        #[doc(hidden)]
4168        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4169        #[cfg(test)]
4170        #[allow(dead_code, unreachable_patterns)]
4171        fn _type_assertion(
4172            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4173        ) {
4174            match _t {
4175                alloy_sol_types::private::AssertTypeEq::<
4176                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4177                >(_) => {}
4178            }
4179        }
4180        #[automatically_derived]
4181        #[doc(hidden)]
4182        impl ::core::convert::From<CommissionAlreadyInitialized>
4183        for UnderlyingRustTuple<'_> {
4184            fn from(value: CommissionAlreadyInitialized) -> Self {
4185                (value.validator,)
4186            }
4187        }
4188        #[automatically_derived]
4189        #[doc(hidden)]
4190        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4191        for CommissionAlreadyInitialized {
4192            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4193                Self { validator: tuple.0 }
4194            }
4195        }
4196        #[automatically_derived]
4197        impl alloy_sol_types::SolError for CommissionAlreadyInitialized {
4198            type Parameters<'a> = UnderlyingSolTuple<'a>;
4199            type Token<'a> = <Self::Parameters<
4200                'a,
4201            > as alloy_sol_types::SolType>::Token<'a>;
4202            const SIGNATURE: &'static str = "CommissionAlreadyInitialized(address)";
4203            const SELECTOR: [u8; 4] = [80u8, 129u8, 78u8, 16u8];
4204            #[inline]
4205            fn new<'a>(
4206                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4207            ) -> Self {
4208                tuple.into()
4209            }
4210            #[inline]
4211            fn tokenize(&self) -> Self::Token<'_> {
4212                (
4213                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4214                        &self.validator,
4215                    ),
4216                )
4217            }
4218            #[inline]
4219            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4220                <Self::Parameters<
4221                    '_,
4222                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4223                    .map(Self::new)
4224            }
4225        }
4226    };
4227    #[derive(serde::Serialize, serde::Deserialize)]
4228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4229    /**Custom error with signature `CommissionIncreaseExceedsMax()` and selector `0x25ad48ca`.
4230```solidity
4231error CommissionIncreaseExceedsMax();
4232```*/
4233    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4234    #[derive(Clone)]
4235    pub struct CommissionIncreaseExceedsMax;
4236    #[allow(
4237        non_camel_case_types,
4238        non_snake_case,
4239        clippy::pub_underscore_fields,
4240        clippy::style
4241    )]
4242    const _: () = {
4243        use alloy::sol_types as alloy_sol_types;
4244        #[doc(hidden)]
4245        #[allow(dead_code)]
4246        type UnderlyingSolTuple<'a> = ();
4247        #[doc(hidden)]
4248        type UnderlyingRustTuple<'a> = ();
4249        #[cfg(test)]
4250        #[allow(dead_code, unreachable_patterns)]
4251        fn _type_assertion(
4252            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4253        ) {
4254            match _t {
4255                alloy_sol_types::private::AssertTypeEq::<
4256                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4257                >(_) => {}
4258            }
4259        }
4260        #[automatically_derived]
4261        #[doc(hidden)]
4262        impl ::core::convert::From<CommissionIncreaseExceedsMax>
4263        for UnderlyingRustTuple<'_> {
4264            fn from(value: CommissionIncreaseExceedsMax) -> Self {
4265                ()
4266            }
4267        }
4268        #[automatically_derived]
4269        #[doc(hidden)]
4270        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4271        for CommissionIncreaseExceedsMax {
4272            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4273                Self
4274            }
4275        }
4276        #[automatically_derived]
4277        impl alloy_sol_types::SolError for CommissionIncreaseExceedsMax {
4278            type Parameters<'a> = UnderlyingSolTuple<'a>;
4279            type Token<'a> = <Self::Parameters<
4280                'a,
4281            > as alloy_sol_types::SolType>::Token<'a>;
4282            const SIGNATURE: &'static str = "CommissionIncreaseExceedsMax()";
4283            const SELECTOR: [u8; 4] = [37u8, 173u8, 72u8, 202u8];
4284            #[inline]
4285            fn new<'a>(
4286                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4287            ) -> Self {
4288                tuple.into()
4289            }
4290            #[inline]
4291            fn tokenize(&self) -> Self::Token<'_> {
4292                ()
4293            }
4294            #[inline]
4295            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4296                <Self::Parameters<
4297                    '_,
4298                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4299                    .map(Self::new)
4300            }
4301        }
4302    };
4303    #[derive(serde::Serialize, serde::Deserialize)]
4304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4305    /**Custom error with signature `CommissionUnchanged()` and selector `0xc20bac94`.
4306```solidity
4307error CommissionUnchanged();
4308```*/
4309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4310    #[derive(Clone)]
4311    pub struct CommissionUnchanged;
4312    #[allow(
4313        non_camel_case_types,
4314        non_snake_case,
4315        clippy::pub_underscore_fields,
4316        clippy::style
4317    )]
4318    const _: () = {
4319        use alloy::sol_types as alloy_sol_types;
4320        #[doc(hidden)]
4321        #[allow(dead_code)]
4322        type UnderlyingSolTuple<'a> = ();
4323        #[doc(hidden)]
4324        type UnderlyingRustTuple<'a> = ();
4325        #[cfg(test)]
4326        #[allow(dead_code, unreachable_patterns)]
4327        fn _type_assertion(
4328            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4329        ) {
4330            match _t {
4331                alloy_sol_types::private::AssertTypeEq::<
4332                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4333                >(_) => {}
4334            }
4335        }
4336        #[automatically_derived]
4337        #[doc(hidden)]
4338        impl ::core::convert::From<CommissionUnchanged> for UnderlyingRustTuple<'_> {
4339            fn from(value: CommissionUnchanged) -> Self {
4340                ()
4341            }
4342        }
4343        #[automatically_derived]
4344        #[doc(hidden)]
4345        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUnchanged {
4346            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4347                Self
4348            }
4349        }
4350        #[automatically_derived]
4351        impl alloy_sol_types::SolError for CommissionUnchanged {
4352            type Parameters<'a> = UnderlyingSolTuple<'a>;
4353            type Token<'a> = <Self::Parameters<
4354                'a,
4355            > as alloy_sol_types::SolType>::Token<'a>;
4356            const SIGNATURE: &'static str = "CommissionUnchanged()";
4357            const SELECTOR: [u8; 4] = [194u8, 11u8, 172u8, 148u8];
4358            #[inline]
4359            fn new<'a>(
4360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4361            ) -> Self {
4362                tuple.into()
4363            }
4364            #[inline]
4365            fn tokenize(&self) -> Self::Token<'_> {
4366                ()
4367            }
4368            #[inline]
4369            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4370                <Self::Parameters<
4371                    '_,
4372                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4373                    .map(Self::new)
4374            }
4375        }
4376    };
4377    #[derive(serde::Serialize, serde::Deserialize)]
4378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4379    /**Custom error with signature `CommissionUpdateTooSoon()` and selector `0x16eb94cb`.
4380```solidity
4381error CommissionUpdateTooSoon();
4382```*/
4383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4384    #[derive(Clone)]
4385    pub struct CommissionUpdateTooSoon;
4386    #[allow(
4387        non_camel_case_types,
4388        non_snake_case,
4389        clippy::pub_underscore_fields,
4390        clippy::style
4391    )]
4392    const _: () = {
4393        use alloy::sol_types as alloy_sol_types;
4394        #[doc(hidden)]
4395        #[allow(dead_code)]
4396        type UnderlyingSolTuple<'a> = ();
4397        #[doc(hidden)]
4398        type UnderlyingRustTuple<'a> = ();
4399        #[cfg(test)]
4400        #[allow(dead_code, unreachable_patterns)]
4401        fn _type_assertion(
4402            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4403        ) {
4404            match _t {
4405                alloy_sol_types::private::AssertTypeEq::<
4406                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4407                >(_) => {}
4408            }
4409        }
4410        #[automatically_derived]
4411        #[doc(hidden)]
4412        impl ::core::convert::From<CommissionUpdateTooSoon> for UnderlyingRustTuple<'_> {
4413            fn from(value: CommissionUpdateTooSoon) -> Self {
4414                ()
4415            }
4416        }
4417        #[automatically_derived]
4418        #[doc(hidden)]
4419        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUpdateTooSoon {
4420            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4421                Self
4422            }
4423        }
4424        #[automatically_derived]
4425        impl alloy_sol_types::SolError for CommissionUpdateTooSoon {
4426            type Parameters<'a> = UnderlyingSolTuple<'a>;
4427            type Token<'a> = <Self::Parameters<
4428                'a,
4429            > as alloy_sol_types::SolType>::Token<'a>;
4430            const SIGNATURE: &'static str = "CommissionUpdateTooSoon()";
4431            const SELECTOR: [u8; 4] = [22u8, 235u8, 148u8, 203u8];
4432            #[inline]
4433            fn new<'a>(
4434                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4435            ) -> Self {
4436                tuple.into()
4437            }
4438            #[inline]
4439            fn tokenize(&self) -> Self::Token<'_> {
4440                ()
4441            }
4442            #[inline]
4443            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4444                <Self::Parameters<
4445                    '_,
4446                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4447                    .map(Self::new)
4448            }
4449        }
4450    };
4451    #[derive(serde::Serialize, serde::Deserialize)]
4452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4453    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
4454```solidity
4455error DeprecatedFunction();
4456```*/
4457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4458    #[derive(Clone)]
4459    pub struct DeprecatedFunction;
4460    #[allow(
4461        non_camel_case_types,
4462        non_snake_case,
4463        clippy::pub_underscore_fields,
4464        clippy::style
4465    )]
4466    const _: () = {
4467        use alloy::sol_types as alloy_sol_types;
4468        #[doc(hidden)]
4469        #[allow(dead_code)]
4470        type UnderlyingSolTuple<'a> = ();
4471        #[doc(hidden)]
4472        type UnderlyingRustTuple<'a> = ();
4473        #[cfg(test)]
4474        #[allow(dead_code, unreachable_patterns)]
4475        fn _type_assertion(
4476            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4477        ) {
4478            match _t {
4479                alloy_sol_types::private::AssertTypeEq::<
4480                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4481                >(_) => {}
4482            }
4483        }
4484        #[automatically_derived]
4485        #[doc(hidden)]
4486        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
4487            fn from(value: DeprecatedFunction) -> Self {
4488                ()
4489            }
4490        }
4491        #[automatically_derived]
4492        #[doc(hidden)]
4493        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
4494            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4495                Self
4496            }
4497        }
4498        #[automatically_derived]
4499        impl alloy_sol_types::SolError for DeprecatedFunction {
4500            type Parameters<'a> = UnderlyingSolTuple<'a>;
4501            type Token<'a> = <Self::Parameters<
4502                'a,
4503            > as alloy_sol_types::SolType>::Token<'a>;
4504            const SIGNATURE: &'static str = "DeprecatedFunction()";
4505            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
4506            #[inline]
4507            fn new<'a>(
4508                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4509            ) -> Self {
4510                tuple.into()
4511            }
4512            #[inline]
4513            fn tokenize(&self) -> Self::Token<'_> {
4514                ()
4515            }
4516            #[inline]
4517            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4518                <Self::Parameters<
4519                    '_,
4520                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4521                    .map(Self::new)
4522            }
4523        }
4524    };
4525    #[derive(serde::Serialize, serde::Deserialize)]
4526    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4527    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4528```solidity
4529error ERC1967InvalidImplementation(address implementation);
4530```*/
4531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4532    #[derive(Clone)]
4533    pub struct ERC1967InvalidImplementation {
4534        #[allow(missing_docs)]
4535        pub implementation: alloy::sol_types::private::Address,
4536    }
4537    #[allow(
4538        non_camel_case_types,
4539        non_snake_case,
4540        clippy::pub_underscore_fields,
4541        clippy::style
4542    )]
4543    const _: () = {
4544        use alloy::sol_types as alloy_sol_types;
4545        #[doc(hidden)]
4546        #[allow(dead_code)]
4547        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4548        #[doc(hidden)]
4549        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4550        #[cfg(test)]
4551        #[allow(dead_code, unreachable_patterns)]
4552        fn _type_assertion(
4553            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4554        ) {
4555            match _t {
4556                alloy_sol_types::private::AssertTypeEq::<
4557                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4558                >(_) => {}
4559            }
4560        }
4561        #[automatically_derived]
4562        #[doc(hidden)]
4563        impl ::core::convert::From<ERC1967InvalidImplementation>
4564        for UnderlyingRustTuple<'_> {
4565            fn from(value: ERC1967InvalidImplementation) -> Self {
4566                (value.implementation,)
4567            }
4568        }
4569        #[automatically_derived]
4570        #[doc(hidden)]
4571        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4572        for ERC1967InvalidImplementation {
4573            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4574                Self { implementation: tuple.0 }
4575            }
4576        }
4577        #[automatically_derived]
4578        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4579            type Parameters<'a> = UnderlyingSolTuple<'a>;
4580            type Token<'a> = <Self::Parameters<
4581                'a,
4582            > as alloy_sol_types::SolType>::Token<'a>;
4583            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4584            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4585            #[inline]
4586            fn new<'a>(
4587                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4588            ) -> Self {
4589                tuple.into()
4590            }
4591            #[inline]
4592            fn tokenize(&self) -> Self::Token<'_> {
4593                (
4594                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4595                        &self.implementation,
4596                    ),
4597                )
4598            }
4599            #[inline]
4600            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4601                <Self::Parameters<
4602                    '_,
4603                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4604                    .map(Self::new)
4605            }
4606        }
4607    };
4608    #[derive(serde::Serialize, serde::Deserialize)]
4609    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4610    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4611```solidity
4612error ERC1967NonPayable();
4613```*/
4614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4615    #[derive(Clone)]
4616    pub struct ERC1967NonPayable;
4617    #[allow(
4618        non_camel_case_types,
4619        non_snake_case,
4620        clippy::pub_underscore_fields,
4621        clippy::style
4622    )]
4623    const _: () = {
4624        use alloy::sol_types as alloy_sol_types;
4625        #[doc(hidden)]
4626        #[allow(dead_code)]
4627        type UnderlyingSolTuple<'a> = ();
4628        #[doc(hidden)]
4629        type UnderlyingRustTuple<'a> = ();
4630        #[cfg(test)]
4631        #[allow(dead_code, unreachable_patterns)]
4632        fn _type_assertion(
4633            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4634        ) {
4635            match _t {
4636                alloy_sol_types::private::AssertTypeEq::<
4637                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4638                >(_) => {}
4639            }
4640        }
4641        #[automatically_derived]
4642        #[doc(hidden)]
4643        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4644            fn from(value: ERC1967NonPayable) -> Self {
4645                ()
4646            }
4647        }
4648        #[automatically_derived]
4649        #[doc(hidden)]
4650        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4651            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4652                Self
4653            }
4654        }
4655        #[automatically_derived]
4656        impl alloy_sol_types::SolError for ERC1967NonPayable {
4657            type Parameters<'a> = UnderlyingSolTuple<'a>;
4658            type Token<'a> = <Self::Parameters<
4659                'a,
4660            > as alloy_sol_types::SolType>::Token<'a>;
4661            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4662            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4663            #[inline]
4664            fn new<'a>(
4665                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4666            ) -> Self {
4667                tuple.into()
4668            }
4669            #[inline]
4670            fn tokenize(&self) -> Self::Token<'_> {
4671                ()
4672            }
4673            #[inline]
4674            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4675                <Self::Parameters<
4676                    '_,
4677                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4678                    .map(Self::new)
4679            }
4680        }
4681    };
4682    #[derive(serde::Serialize, serde::Deserialize)]
4683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4684    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
4685```solidity
4686error EnforcedPause();
4687```*/
4688    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4689    #[derive(Clone)]
4690    pub struct EnforcedPause;
4691    #[allow(
4692        non_camel_case_types,
4693        non_snake_case,
4694        clippy::pub_underscore_fields,
4695        clippy::style
4696    )]
4697    const _: () = {
4698        use alloy::sol_types as alloy_sol_types;
4699        #[doc(hidden)]
4700        #[allow(dead_code)]
4701        type UnderlyingSolTuple<'a> = ();
4702        #[doc(hidden)]
4703        type UnderlyingRustTuple<'a> = ();
4704        #[cfg(test)]
4705        #[allow(dead_code, unreachable_patterns)]
4706        fn _type_assertion(
4707            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4708        ) {
4709            match _t {
4710                alloy_sol_types::private::AssertTypeEq::<
4711                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4712                >(_) => {}
4713            }
4714        }
4715        #[automatically_derived]
4716        #[doc(hidden)]
4717        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
4718            fn from(value: EnforcedPause) -> Self {
4719                ()
4720            }
4721        }
4722        #[automatically_derived]
4723        #[doc(hidden)]
4724        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
4725            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4726                Self
4727            }
4728        }
4729        #[automatically_derived]
4730        impl alloy_sol_types::SolError for EnforcedPause {
4731            type Parameters<'a> = UnderlyingSolTuple<'a>;
4732            type Token<'a> = <Self::Parameters<
4733                'a,
4734            > as alloy_sol_types::SolType>::Token<'a>;
4735            const SIGNATURE: &'static str = "EnforcedPause()";
4736            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
4737            #[inline]
4738            fn new<'a>(
4739                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4740            ) -> Self {
4741                tuple.into()
4742            }
4743            #[inline]
4744            fn tokenize(&self) -> Self::Token<'_> {
4745                ()
4746            }
4747            #[inline]
4748            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4749                <Self::Parameters<
4750                    '_,
4751                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4752                    .map(Self::new)
4753            }
4754        }
4755    };
4756    #[derive(serde::Serialize, serde::Deserialize)]
4757    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4758    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
4759```solidity
4760error ExitEscrowPeriodInvalid();
4761```*/
4762    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4763    #[derive(Clone)]
4764    pub struct ExitEscrowPeriodInvalid;
4765    #[allow(
4766        non_camel_case_types,
4767        non_snake_case,
4768        clippy::pub_underscore_fields,
4769        clippy::style
4770    )]
4771    const _: () = {
4772        use alloy::sol_types as alloy_sol_types;
4773        #[doc(hidden)]
4774        #[allow(dead_code)]
4775        type UnderlyingSolTuple<'a> = ();
4776        #[doc(hidden)]
4777        type UnderlyingRustTuple<'a> = ();
4778        #[cfg(test)]
4779        #[allow(dead_code, unreachable_patterns)]
4780        fn _type_assertion(
4781            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4782        ) {
4783            match _t {
4784                alloy_sol_types::private::AssertTypeEq::<
4785                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4786                >(_) => {}
4787            }
4788        }
4789        #[automatically_derived]
4790        #[doc(hidden)]
4791        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
4792            fn from(value: ExitEscrowPeriodInvalid) -> Self {
4793                ()
4794            }
4795        }
4796        #[automatically_derived]
4797        #[doc(hidden)]
4798        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
4799            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4800                Self
4801            }
4802        }
4803        #[automatically_derived]
4804        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
4805            type Parameters<'a> = UnderlyingSolTuple<'a>;
4806            type Token<'a> = <Self::Parameters<
4807                'a,
4808            > as alloy_sol_types::SolType>::Token<'a>;
4809            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
4810            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
4811            #[inline]
4812            fn new<'a>(
4813                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4814            ) -> Self {
4815                tuple.into()
4816            }
4817            #[inline]
4818            fn tokenize(&self) -> Self::Token<'_> {
4819                ()
4820            }
4821            #[inline]
4822            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4823                <Self::Parameters<
4824                    '_,
4825                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4826                    .map(Self::new)
4827            }
4828        }
4829    };
4830    #[derive(serde::Serialize, serde::Deserialize)]
4831    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4832    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
4833```solidity
4834error ExpectedPause();
4835```*/
4836    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4837    #[derive(Clone)]
4838    pub struct ExpectedPause;
4839    #[allow(
4840        non_camel_case_types,
4841        non_snake_case,
4842        clippy::pub_underscore_fields,
4843        clippy::style
4844    )]
4845    const _: () = {
4846        use alloy::sol_types as alloy_sol_types;
4847        #[doc(hidden)]
4848        #[allow(dead_code)]
4849        type UnderlyingSolTuple<'a> = ();
4850        #[doc(hidden)]
4851        type UnderlyingRustTuple<'a> = ();
4852        #[cfg(test)]
4853        #[allow(dead_code, unreachable_patterns)]
4854        fn _type_assertion(
4855            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4856        ) {
4857            match _t {
4858                alloy_sol_types::private::AssertTypeEq::<
4859                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4860                >(_) => {}
4861            }
4862        }
4863        #[automatically_derived]
4864        #[doc(hidden)]
4865        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
4866            fn from(value: ExpectedPause) -> Self {
4867                ()
4868            }
4869        }
4870        #[automatically_derived]
4871        #[doc(hidden)]
4872        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
4873            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4874                Self
4875            }
4876        }
4877        #[automatically_derived]
4878        impl alloy_sol_types::SolError for ExpectedPause {
4879            type Parameters<'a> = UnderlyingSolTuple<'a>;
4880            type Token<'a> = <Self::Parameters<
4881                'a,
4882            > as alloy_sol_types::SolType>::Token<'a>;
4883            const SIGNATURE: &'static str = "ExpectedPause()";
4884            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
4885            #[inline]
4886            fn new<'a>(
4887                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4888            ) -> Self {
4889                tuple.into()
4890            }
4891            #[inline]
4892            fn tokenize(&self) -> Self::Token<'_> {
4893                ()
4894            }
4895            #[inline]
4896            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4897                <Self::Parameters<
4898                    '_,
4899                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4900                    .map(Self::new)
4901            }
4902        }
4903    };
4904    #[derive(serde::Serialize, serde::Deserialize)]
4905    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4906    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4907```solidity
4908error FailedInnerCall();
4909```*/
4910    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4911    #[derive(Clone)]
4912    pub struct FailedInnerCall;
4913    #[allow(
4914        non_camel_case_types,
4915        non_snake_case,
4916        clippy::pub_underscore_fields,
4917        clippy::style
4918    )]
4919    const _: () = {
4920        use alloy::sol_types as alloy_sol_types;
4921        #[doc(hidden)]
4922        #[allow(dead_code)]
4923        type UnderlyingSolTuple<'a> = ();
4924        #[doc(hidden)]
4925        type UnderlyingRustTuple<'a> = ();
4926        #[cfg(test)]
4927        #[allow(dead_code, unreachable_patterns)]
4928        fn _type_assertion(
4929            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4930        ) {
4931            match _t {
4932                alloy_sol_types::private::AssertTypeEq::<
4933                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4934                >(_) => {}
4935            }
4936        }
4937        #[automatically_derived]
4938        #[doc(hidden)]
4939        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4940            fn from(value: FailedInnerCall) -> Self {
4941                ()
4942            }
4943        }
4944        #[automatically_derived]
4945        #[doc(hidden)]
4946        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4947            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4948                Self
4949            }
4950        }
4951        #[automatically_derived]
4952        impl alloy_sol_types::SolError for FailedInnerCall {
4953            type Parameters<'a> = UnderlyingSolTuple<'a>;
4954            type Token<'a> = <Self::Parameters<
4955                'a,
4956            > as alloy_sol_types::SolType>::Token<'a>;
4957            const SIGNATURE: &'static str = "FailedInnerCall()";
4958            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4959            #[inline]
4960            fn new<'a>(
4961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4962            ) -> Self {
4963                tuple.into()
4964            }
4965            #[inline]
4966            fn tokenize(&self) -> Self::Token<'_> {
4967                ()
4968            }
4969            #[inline]
4970            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4971                <Self::Parameters<
4972                    '_,
4973                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4974                    .map(Self::new)
4975            }
4976        }
4977    };
4978    #[derive(serde::Serialize, serde::Deserialize)]
4979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4980    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
4981```solidity
4982error InsufficientAllowance(uint256, uint256);
4983```*/
4984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4985    #[derive(Clone)]
4986    pub struct InsufficientAllowance {
4987        #[allow(missing_docs)]
4988        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4989        #[allow(missing_docs)]
4990        pub _1: alloy::sol_types::private::primitives::aliases::U256,
4991    }
4992    #[allow(
4993        non_camel_case_types,
4994        non_snake_case,
4995        clippy::pub_underscore_fields,
4996        clippy::style
4997    )]
4998    const _: () = {
4999        use alloy::sol_types as alloy_sol_types;
5000        #[doc(hidden)]
5001        #[allow(dead_code)]
5002        type UnderlyingSolTuple<'a> = (
5003            alloy::sol_types::sol_data::Uint<256>,
5004            alloy::sol_types::sol_data::Uint<256>,
5005        );
5006        #[doc(hidden)]
5007        type UnderlyingRustTuple<'a> = (
5008            alloy::sol_types::private::primitives::aliases::U256,
5009            alloy::sol_types::private::primitives::aliases::U256,
5010        );
5011        #[cfg(test)]
5012        #[allow(dead_code, unreachable_patterns)]
5013        fn _type_assertion(
5014            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5015        ) {
5016            match _t {
5017                alloy_sol_types::private::AssertTypeEq::<
5018                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5019                >(_) => {}
5020            }
5021        }
5022        #[automatically_derived]
5023        #[doc(hidden)]
5024        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
5025            fn from(value: InsufficientAllowance) -> Self {
5026                (value._0, value._1)
5027            }
5028        }
5029        #[automatically_derived]
5030        #[doc(hidden)]
5031        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
5032            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5033                Self { _0: tuple.0, _1: tuple.1 }
5034            }
5035        }
5036        #[automatically_derived]
5037        impl alloy_sol_types::SolError for InsufficientAllowance {
5038            type Parameters<'a> = UnderlyingSolTuple<'a>;
5039            type Token<'a> = <Self::Parameters<
5040                'a,
5041            > as alloy_sol_types::SolType>::Token<'a>;
5042            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
5043            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
5044            #[inline]
5045            fn new<'a>(
5046                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5047            ) -> Self {
5048                tuple.into()
5049            }
5050            #[inline]
5051            fn tokenize(&self) -> Self::Token<'_> {
5052                (
5053                    <alloy::sol_types::sol_data::Uint<
5054                        256,
5055                    > as alloy_sol_types::SolType>::tokenize(&self._0),
5056                    <alloy::sol_types::sol_data::Uint<
5057                        256,
5058                    > as alloy_sol_types::SolType>::tokenize(&self._1),
5059                )
5060            }
5061            #[inline]
5062            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5063                <Self::Parameters<
5064                    '_,
5065                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5066                    .map(Self::new)
5067            }
5068        }
5069    };
5070    #[derive(serde::Serialize, serde::Deserialize)]
5071    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5072    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
5073```solidity
5074error InsufficientBalance(uint256);
5075```*/
5076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5077    #[derive(Clone)]
5078    pub struct InsufficientBalance(
5079        pub alloy::sol_types::private::primitives::aliases::U256,
5080    );
5081    #[allow(
5082        non_camel_case_types,
5083        non_snake_case,
5084        clippy::pub_underscore_fields,
5085        clippy::style
5086    )]
5087    const _: () = {
5088        use alloy::sol_types as alloy_sol_types;
5089        #[doc(hidden)]
5090        #[allow(dead_code)]
5091        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5092        #[doc(hidden)]
5093        type UnderlyingRustTuple<'a> = (
5094            alloy::sol_types::private::primitives::aliases::U256,
5095        );
5096        #[cfg(test)]
5097        #[allow(dead_code, unreachable_patterns)]
5098        fn _type_assertion(
5099            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5100        ) {
5101            match _t {
5102                alloy_sol_types::private::AssertTypeEq::<
5103                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5104                >(_) => {}
5105            }
5106        }
5107        #[automatically_derived]
5108        #[doc(hidden)]
5109        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
5110            fn from(value: InsufficientBalance) -> Self {
5111                (value.0,)
5112            }
5113        }
5114        #[automatically_derived]
5115        #[doc(hidden)]
5116        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
5117            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5118                Self(tuple.0)
5119            }
5120        }
5121        #[automatically_derived]
5122        impl alloy_sol_types::SolError for InsufficientBalance {
5123            type Parameters<'a> = UnderlyingSolTuple<'a>;
5124            type Token<'a> = <Self::Parameters<
5125                'a,
5126            > as alloy_sol_types::SolType>::Token<'a>;
5127            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
5128            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
5129            #[inline]
5130            fn new<'a>(
5131                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5132            ) -> Self {
5133                tuple.into()
5134            }
5135            #[inline]
5136            fn tokenize(&self) -> Self::Token<'_> {
5137                (
5138                    <alloy::sol_types::sol_data::Uint<
5139                        256,
5140                    > as alloy_sol_types::SolType>::tokenize(&self.0),
5141                )
5142            }
5143            #[inline]
5144            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5145                <Self::Parameters<
5146                    '_,
5147                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5148                    .map(Self::new)
5149            }
5150        }
5151    };
5152    #[derive(serde::Serialize, serde::Deserialize)]
5153    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5154    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
5155```solidity
5156error InvalidCommission();
5157```*/
5158    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5159    #[derive(Clone)]
5160    pub struct InvalidCommission;
5161    #[allow(
5162        non_camel_case_types,
5163        non_snake_case,
5164        clippy::pub_underscore_fields,
5165        clippy::style
5166    )]
5167    const _: () = {
5168        use alloy::sol_types as alloy_sol_types;
5169        #[doc(hidden)]
5170        #[allow(dead_code)]
5171        type UnderlyingSolTuple<'a> = ();
5172        #[doc(hidden)]
5173        type UnderlyingRustTuple<'a> = ();
5174        #[cfg(test)]
5175        #[allow(dead_code, unreachable_patterns)]
5176        fn _type_assertion(
5177            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5178        ) {
5179            match _t {
5180                alloy_sol_types::private::AssertTypeEq::<
5181                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5182                >(_) => {}
5183            }
5184        }
5185        #[automatically_derived]
5186        #[doc(hidden)]
5187        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
5188            fn from(value: InvalidCommission) -> Self {
5189                ()
5190            }
5191        }
5192        #[automatically_derived]
5193        #[doc(hidden)]
5194        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
5195            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5196                Self
5197            }
5198        }
5199        #[automatically_derived]
5200        impl alloy_sol_types::SolError for InvalidCommission {
5201            type Parameters<'a> = UnderlyingSolTuple<'a>;
5202            type Token<'a> = <Self::Parameters<
5203                'a,
5204            > as alloy_sol_types::SolType>::Token<'a>;
5205            const SIGNATURE: &'static str = "InvalidCommission()";
5206            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
5207            #[inline]
5208            fn new<'a>(
5209                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5210            ) -> Self {
5211                tuple.into()
5212            }
5213            #[inline]
5214            fn tokenize(&self) -> Self::Token<'_> {
5215                ()
5216            }
5217            #[inline]
5218            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5219                <Self::Parameters<
5220                    '_,
5221                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5222                    .map(Self::new)
5223            }
5224        }
5225    };
5226    #[derive(serde::Serialize, serde::Deserialize)]
5227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5228    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
5229```solidity
5230error InvalidG1();
5231```*/
5232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5233    #[derive(Clone)]
5234    pub struct InvalidG1;
5235    #[allow(
5236        non_camel_case_types,
5237        non_snake_case,
5238        clippy::pub_underscore_fields,
5239        clippy::style
5240    )]
5241    const _: () = {
5242        use alloy::sol_types as alloy_sol_types;
5243        #[doc(hidden)]
5244        #[allow(dead_code)]
5245        type UnderlyingSolTuple<'a> = ();
5246        #[doc(hidden)]
5247        type UnderlyingRustTuple<'a> = ();
5248        #[cfg(test)]
5249        #[allow(dead_code, unreachable_patterns)]
5250        fn _type_assertion(
5251            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5252        ) {
5253            match _t {
5254                alloy_sol_types::private::AssertTypeEq::<
5255                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5256                >(_) => {}
5257            }
5258        }
5259        #[automatically_derived]
5260        #[doc(hidden)]
5261        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
5262            fn from(value: InvalidG1) -> Self {
5263                ()
5264            }
5265        }
5266        #[automatically_derived]
5267        #[doc(hidden)]
5268        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
5269            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5270                Self
5271            }
5272        }
5273        #[automatically_derived]
5274        impl alloy_sol_types::SolError for InvalidG1 {
5275            type Parameters<'a> = UnderlyingSolTuple<'a>;
5276            type Token<'a> = <Self::Parameters<
5277                'a,
5278            > as alloy_sol_types::SolType>::Token<'a>;
5279            const SIGNATURE: &'static str = "InvalidG1()";
5280            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
5281            #[inline]
5282            fn new<'a>(
5283                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5284            ) -> Self {
5285                tuple.into()
5286            }
5287            #[inline]
5288            fn tokenize(&self) -> Self::Token<'_> {
5289                ()
5290            }
5291            #[inline]
5292            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5293                <Self::Parameters<
5294                    '_,
5295                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5296                    .map(Self::new)
5297            }
5298        }
5299    };
5300    #[derive(serde::Serialize, serde::Deserialize)]
5301    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5302    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5303```solidity
5304error InvalidInitialization();
5305```*/
5306    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5307    #[derive(Clone)]
5308    pub struct InvalidInitialization;
5309    #[allow(
5310        non_camel_case_types,
5311        non_snake_case,
5312        clippy::pub_underscore_fields,
5313        clippy::style
5314    )]
5315    const _: () = {
5316        use alloy::sol_types as alloy_sol_types;
5317        #[doc(hidden)]
5318        #[allow(dead_code)]
5319        type UnderlyingSolTuple<'a> = ();
5320        #[doc(hidden)]
5321        type UnderlyingRustTuple<'a> = ();
5322        #[cfg(test)]
5323        #[allow(dead_code, unreachable_patterns)]
5324        fn _type_assertion(
5325            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5326        ) {
5327            match _t {
5328                alloy_sol_types::private::AssertTypeEq::<
5329                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5330                >(_) => {}
5331            }
5332        }
5333        #[automatically_derived]
5334        #[doc(hidden)]
5335        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5336            fn from(value: InvalidInitialization) -> Self {
5337                ()
5338            }
5339        }
5340        #[automatically_derived]
5341        #[doc(hidden)]
5342        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5343            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5344                Self
5345            }
5346        }
5347        #[automatically_derived]
5348        impl alloy_sol_types::SolError for InvalidInitialization {
5349            type Parameters<'a> = UnderlyingSolTuple<'a>;
5350            type Token<'a> = <Self::Parameters<
5351                'a,
5352            > as alloy_sol_types::SolType>::Token<'a>;
5353            const SIGNATURE: &'static str = "InvalidInitialization()";
5354            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5355            #[inline]
5356            fn new<'a>(
5357                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5358            ) -> Self {
5359                tuple.into()
5360            }
5361            #[inline]
5362            fn tokenize(&self) -> Self::Token<'_> {
5363                ()
5364            }
5365            #[inline]
5366            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5367                <Self::Parameters<
5368                    '_,
5369                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5370                    .map(Self::new)
5371            }
5372        }
5373    };
5374    #[derive(serde::Serialize, serde::Deserialize)]
5375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5376    /**Custom error with signature `InvalidRateLimitParameters()` and selector `0x674e8ef3`.
5377```solidity
5378error InvalidRateLimitParameters();
5379```*/
5380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5381    #[derive(Clone)]
5382    pub struct InvalidRateLimitParameters;
5383    #[allow(
5384        non_camel_case_types,
5385        non_snake_case,
5386        clippy::pub_underscore_fields,
5387        clippy::style
5388    )]
5389    const _: () = {
5390        use alloy::sol_types as alloy_sol_types;
5391        #[doc(hidden)]
5392        #[allow(dead_code)]
5393        type UnderlyingSolTuple<'a> = ();
5394        #[doc(hidden)]
5395        type UnderlyingRustTuple<'a> = ();
5396        #[cfg(test)]
5397        #[allow(dead_code, unreachable_patterns)]
5398        fn _type_assertion(
5399            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5400        ) {
5401            match _t {
5402                alloy_sol_types::private::AssertTypeEq::<
5403                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5404                >(_) => {}
5405            }
5406        }
5407        #[automatically_derived]
5408        #[doc(hidden)]
5409        impl ::core::convert::From<InvalidRateLimitParameters>
5410        for UnderlyingRustTuple<'_> {
5411            fn from(value: InvalidRateLimitParameters) -> Self {
5412                ()
5413            }
5414        }
5415        #[automatically_derived]
5416        #[doc(hidden)]
5417        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5418        for InvalidRateLimitParameters {
5419            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5420                Self
5421            }
5422        }
5423        #[automatically_derived]
5424        impl alloy_sol_types::SolError for InvalidRateLimitParameters {
5425            type Parameters<'a> = UnderlyingSolTuple<'a>;
5426            type Token<'a> = <Self::Parameters<
5427                'a,
5428            > as alloy_sol_types::SolType>::Token<'a>;
5429            const SIGNATURE: &'static str = "InvalidRateLimitParameters()";
5430            const SELECTOR: [u8; 4] = [103u8, 78u8, 142u8, 243u8];
5431            #[inline]
5432            fn new<'a>(
5433                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5434            ) -> Self {
5435                tuple.into()
5436            }
5437            #[inline]
5438            fn tokenize(&self) -> Self::Token<'_> {
5439                ()
5440            }
5441            #[inline]
5442            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5443                <Self::Parameters<
5444                    '_,
5445                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5446                    .map(Self::new)
5447            }
5448        }
5449    };
5450    #[derive(serde::Serialize, serde::Deserialize)]
5451    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5452    /**Custom error with signature `InvalidSchnorrSig()` and selector `0x42470687`.
5453```solidity
5454error InvalidSchnorrSig();
5455```*/
5456    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5457    #[derive(Clone)]
5458    pub struct InvalidSchnorrSig;
5459    #[allow(
5460        non_camel_case_types,
5461        non_snake_case,
5462        clippy::pub_underscore_fields,
5463        clippy::style
5464    )]
5465    const _: () = {
5466        use alloy::sol_types as alloy_sol_types;
5467        #[doc(hidden)]
5468        #[allow(dead_code)]
5469        type UnderlyingSolTuple<'a> = ();
5470        #[doc(hidden)]
5471        type UnderlyingRustTuple<'a> = ();
5472        #[cfg(test)]
5473        #[allow(dead_code, unreachable_patterns)]
5474        fn _type_assertion(
5475            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5476        ) {
5477            match _t {
5478                alloy_sol_types::private::AssertTypeEq::<
5479                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5480                >(_) => {}
5481            }
5482        }
5483        #[automatically_derived]
5484        #[doc(hidden)]
5485        impl ::core::convert::From<InvalidSchnorrSig> for UnderlyingRustTuple<'_> {
5486            fn from(value: InvalidSchnorrSig) -> Self {
5487                ()
5488            }
5489        }
5490        #[automatically_derived]
5491        #[doc(hidden)]
5492        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrSig {
5493            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5494                Self
5495            }
5496        }
5497        #[automatically_derived]
5498        impl alloy_sol_types::SolError for InvalidSchnorrSig {
5499            type Parameters<'a> = UnderlyingSolTuple<'a>;
5500            type Token<'a> = <Self::Parameters<
5501                'a,
5502            > as alloy_sol_types::SolType>::Token<'a>;
5503            const SIGNATURE: &'static str = "InvalidSchnorrSig()";
5504            const SELECTOR: [u8; 4] = [66u8, 71u8, 6u8, 135u8];
5505            #[inline]
5506            fn new<'a>(
5507                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5508            ) -> Self {
5509                tuple.into()
5510            }
5511            #[inline]
5512            fn tokenize(&self) -> Self::Token<'_> {
5513                ()
5514            }
5515            #[inline]
5516            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5517                <Self::Parameters<
5518                    '_,
5519                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5520                    .map(Self::new)
5521            }
5522        }
5523    };
5524    #[derive(serde::Serialize, serde::Deserialize)]
5525    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5526    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
5527```solidity
5528error InvalidSchnorrVK();
5529```*/
5530    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5531    #[derive(Clone)]
5532    pub struct InvalidSchnorrVK;
5533    #[allow(
5534        non_camel_case_types,
5535        non_snake_case,
5536        clippy::pub_underscore_fields,
5537        clippy::style
5538    )]
5539    const _: () = {
5540        use alloy::sol_types as alloy_sol_types;
5541        #[doc(hidden)]
5542        #[allow(dead_code)]
5543        type UnderlyingSolTuple<'a> = ();
5544        #[doc(hidden)]
5545        type UnderlyingRustTuple<'a> = ();
5546        #[cfg(test)]
5547        #[allow(dead_code, unreachable_patterns)]
5548        fn _type_assertion(
5549            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5550        ) {
5551            match _t {
5552                alloy_sol_types::private::AssertTypeEq::<
5553                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5554                >(_) => {}
5555            }
5556        }
5557        #[automatically_derived]
5558        #[doc(hidden)]
5559        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
5560            fn from(value: InvalidSchnorrVK) -> Self {
5561                ()
5562            }
5563        }
5564        #[automatically_derived]
5565        #[doc(hidden)]
5566        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
5567            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5568                Self
5569            }
5570        }
5571        #[automatically_derived]
5572        impl alloy_sol_types::SolError for InvalidSchnorrVK {
5573            type Parameters<'a> = UnderlyingSolTuple<'a>;
5574            type Token<'a> = <Self::Parameters<
5575                'a,
5576            > as alloy_sol_types::SolType>::Token<'a>;
5577            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
5578            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
5579            #[inline]
5580            fn new<'a>(
5581                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5582            ) -> Self {
5583                tuple.into()
5584            }
5585            #[inline]
5586            fn tokenize(&self) -> Self::Token<'_> {
5587                ()
5588            }
5589            #[inline]
5590            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5591                <Self::Parameters<
5592                    '_,
5593                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5594                    .map(Self::new)
5595            }
5596        }
5597    };
5598    #[derive(serde::Serialize, serde::Deserialize)]
5599    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5600    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5601```solidity
5602error NotInitializing();
5603```*/
5604    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5605    #[derive(Clone)]
5606    pub struct NotInitializing;
5607    #[allow(
5608        non_camel_case_types,
5609        non_snake_case,
5610        clippy::pub_underscore_fields,
5611        clippy::style
5612    )]
5613    const _: () = {
5614        use alloy::sol_types as alloy_sol_types;
5615        #[doc(hidden)]
5616        #[allow(dead_code)]
5617        type UnderlyingSolTuple<'a> = ();
5618        #[doc(hidden)]
5619        type UnderlyingRustTuple<'a> = ();
5620        #[cfg(test)]
5621        #[allow(dead_code, unreachable_patterns)]
5622        fn _type_assertion(
5623            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5624        ) {
5625            match _t {
5626                alloy_sol_types::private::AssertTypeEq::<
5627                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5628                >(_) => {}
5629            }
5630        }
5631        #[automatically_derived]
5632        #[doc(hidden)]
5633        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5634            fn from(value: NotInitializing) -> Self {
5635                ()
5636            }
5637        }
5638        #[automatically_derived]
5639        #[doc(hidden)]
5640        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5641            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5642                Self
5643            }
5644        }
5645        #[automatically_derived]
5646        impl alloy_sol_types::SolError for NotInitializing {
5647            type Parameters<'a> = UnderlyingSolTuple<'a>;
5648            type Token<'a> = <Self::Parameters<
5649                'a,
5650            > as alloy_sol_types::SolType>::Token<'a>;
5651            const SIGNATURE: &'static str = "NotInitializing()";
5652            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5653            #[inline]
5654            fn new<'a>(
5655                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5656            ) -> Self {
5657                tuple.into()
5658            }
5659            #[inline]
5660            fn tokenize(&self) -> Self::Token<'_> {
5661                ()
5662            }
5663            #[inline]
5664            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5665                <Self::Parameters<
5666                    '_,
5667                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5668                    .map(Self::new)
5669            }
5670        }
5671    };
5672    #[derive(serde::Serialize, serde::Deserialize)]
5673    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5674    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
5675```solidity
5676error NothingToWithdraw();
5677```*/
5678    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5679    #[derive(Clone)]
5680    pub struct NothingToWithdraw;
5681    #[allow(
5682        non_camel_case_types,
5683        non_snake_case,
5684        clippy::pub_underscore_fields,
5685        clippy::style
5686    )]
5687    const _: () = {
5688        use alloy::sol_types as alloy_sol_types;
5689        #[doc(hidden)]
5690        #[allow(dead_code)]
5691        type UnderlyingSolTuple<'a> = ();
5692        #[doc(hidden)]
5693        type UnderlyingRustTuple<'a> = ();
5694        #[cfg(test)]
5695        #[allow(dead_code, unreachable_patterns)]
5696        fn _type_assertion(
5697            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5698        ) {
5699            match _t {
5700                alloy_sol_types::private::AssertTypeEq::<
5701                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5702                >(_) => {}
5703            }
5704        }
5705        #[automatically_derived]
5706        #[doc(hidden)]
5707        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
5708            fn from(value: NothingToWithdraw) -> Self {
5709                ()
5710            }
5711        }
5712        #[automatically_derived]
5713        #[doc(hidden)]
5714        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
5715            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5716                Self
5717            }
5718        }
5719        #[automatically_derived]
5720        impl alloy_sol_types::SolError for NothingToWithdraw {
5721            type Parameters<'a> = UnderlyingSolTuple<'a>;
5722            type Token<'a> = <Self::Parameters<
5723                'a,
5724            > as alloy_sol_types::SolType>::Token<'a>;
5725            const SIGNATURE: &'static str = "NothingToWithdraw()";
5726            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
5727            #[inline]
5728            fn new<'a>(
5729                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5730            ) -> Self {
5731                tuple.into()
5732            }
5733            #[inline]
5734            fn tokenize(&self) -> Self::Token<'_> {
5735                ()
5736            }
5737            #[inline]
5738            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5739                <Self::Parameters<
5740                    '_,
5741                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5742                    .map(Self::new)
5743            }
5744        }
5745    };
5746    #[derive(serde::Serialize, serde::Deserialize)]
5747    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5748    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5749```solidity
5750error OwnableInvalidOwner(address owner);
5751```*/
5752    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5753    #[derive(Clone)]
5754    pub struct OwnableInvalidOwner {
5755        #[allow(missing_docs)]
5756        pub owner: alloy::sol_types::private::Address,
5757    }
5758    #[allow(
5759        non_camel_case_types,
5760        non_snake_case,
5761        clippy::pub_underscore_fields,
5762        clippy::style
5763    )]
5764    const _: () = {
5765        use alloy::sol_types as alloy_sol_types;
5766        #[doc(hidden)]
5767        #[allow(dead_code)]
5768        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5769        #[doc(hidden)]
5770        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5771        #[cfg(test)]
5772        #[allow(dead_code, unreachable_patterns)]
5773        fn _type_assertion(
5774            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5775        ) {
5776            match _t {
5777                alloy_sol_types::private::AssertTypeEq::<
5778                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5779                >(_) => {}
5780            }
5781        }
5782        #[automatically_derived]
5783        #[doc(hidden)]
5784        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5785            fn from(value: OwnableInvalidOwner) -> Self {
5786                (value.owner,)
5787            }
5788        }
5789        #[automatically_derived]
5790        #[doc(hidden)]
5791        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5792            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5793                Self { owner: tuple.0 }
5794            }
5795        }
5796        #[automatically_derived]
5797        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5798            type Parameters<'a> = UnderlyingSolTuple<'a>;
5799            type Token<'a> = <Self::Parameters<
5800                'a,
5801            > as alloy_sol_types::SolType>::Token<'a>;
5802            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5803            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5804            #[inline]
5805            fn new<'a>(
5806                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5807            ) -> Self {
5808                tuple.into()
5809            }
5810            #[inline]
5811            fn tokenize(&self) -> Self::Token<'_> {
5812                (
5813                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5814                        &self.owner,
5815                    ),
5816                )
5817            }
5818            #[inline]
5819            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5820                <Self::Parameters<
5821                    '_,
5822                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5823                    .map(Self::new)
5824            }
5825        }
5826    };
5827    #[derive(serde::Serialize, serde::Deserialize)]
5828    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5829    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5830```solidity
5831error OwnableUnauthorizedAccount(address account);
5832```*/
5833    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5834    #[derive(Clone)]
5835    pub struct OwnableUnauthorizedAccount {
5836        #[allow(missing_docs)]
5837        pub account: alloy::sol_types::private::Address,
5838    }
5839    #[allow(
5840        non_camel_case_types,
5841        non_snake_case,
5842        clippy::pub_underscore_fields,
5843        clippy::style
5844    )]
5845    const _: () = {
5846        use alloy::sol_types as alloy_sol_types;
5847        #[doc(hidden)]
5848        #[allow(dead_code)]
5849        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5850        #[doc(hidden)]
5851        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5852        #[cfg(test)]
5853        #[allow(dead_code, unreachable_patterns)]
5854        fn _type_assertion(
5855            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5856        ) {
5857            match _t {
5858                alloy_sol_types::private::AssertTypeEq::<
5859                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5860                >(_) => {}
5861            }
5862        }
5863        #[automatically_derived]
5864        #[doc(hidden)]
5865        impl ::core::convert::From<OwnableUnauthorizedAccount>
5866        for UnderlyingRustTuple<'_> {
5867            fn from(value: OwnableUnauthorizedAccount) -> Self {
5868                (value.account,)
5869            }
5870        }
5871        #[automatically_derived]
5872        #[doc(hidden)]
5873        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5874        for OwnableUnauthorizedAccount {
5875            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5876                Self { account: tuple.0 }
5877            }
5878        }
5879        #[automatically_derived]
5880        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5881            type Parameters<'a> = UnderlyingSolTuple<'a>;
5882            type Token<'a> = <Self::Parameters<
5883                'a,
5884            > as alloy_sol_types::SolType>::Token<'a>;
5885            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5886            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5887            #[inline]
5888            fn new<'a>(
5889                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5890            ) -> Self {
5891                tuple.into()
5892            }
5893            #[inline]
5894            fn tokenize(&self) -> Self::Token<'_> {
5895                (
5896                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5897                        &self.account,
5898                    ),
5899                )
5900            }
5901            #[inline]
5902            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5903                <Self::Parameters<
5904                    '_,
5905                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5906                    .map(Self::new)
5907            }
5908        }
5909    };
5910    #[derive(serde::Serialize, serde::Deserialize)]
5911    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5912    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
5913```solidity
5914error PowPrecompileFailed();
5915```*/
5916    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5917    #[derive(Clone)]
5918    pub struct PowPrecompileFailed;
5919    #[allow(
5920        non_camel_case_types,
5921        non_snake_case,
5922        clippy::pub_underscore_fields,
5923        clippy::style
5924    )]
5925    const _: () = {
5926        use alloy::sol_types as alloy_sol_types;
5927        #[doc(hidden)]
5928        #[allow(dead_code)]
5929        type UnderlyingSolTuple<'a> = ();
5930        #[doc(hidden)]
5931        type UnderlyingRustTuple<'a> = ();
5932        #[cfg(test)]
5933        #[allow(dead_code, unreachable_patterns)]
5934        fn _type_assertion(
5935            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5936        ) {
5937            match _t {
5938                alloy_sol_types::private::AssertTypeEq::<
5939                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5940                >(_) => {}
5941            }
5942        }
5943        #[automatically_derived]
5944        #[doc(hidden)]
5945        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
5946            fn from(value: PowPrecompileFailed) -> Self {
5947                ()
5948            }
5949        }
5950        #[automatically_derived]
5951        #[doc(hidden)]
5952        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
5953            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5954                Self
5955            }
5956        }
5957        #[automatically_derived]
5958        impl alloy_sol_types::SolError for PowPrecompileFailed {
5959            type Parameters<'a> = UnderlyingSolTuple<'a>;
5960            type Token<'a> = <Self::Parameters<
5961                'a,
5962            > as alloy_sol_types::SolType>::Token<'a>;
5963            const SIGNATURE: &'static str = "PowPrecompileFailed()";
5964            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
5965            #[inline]
5966            fn new<'a>(
5967                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5968            ) -> Self {
5969                tuple.into()
5970            }
5971            #[inline]
5972            fn tokenize(&self) -> Self::Token<'_> {
5973                ()
5974            }
5975            #[inline]
5976            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5977                <Self::Parameters<
5978                    '_,
5979                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5980                    .map(Self::new)
5981            }
5982        }
5983    };
5984    #[derive(serde::Serialize, serde::Deserialize)]
5985    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5986    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
5987```solidity
5988error PrematureWithdrawal();
5989```*/
5990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5991    #[derive(Clone)]
5992    pub struct PrematureWithdrawal;
5993    #[allow(
5994        non_camel_case_types,
5995        non_snake_case,
5996        clippy::pub_underscore_fields,
5997        clippy::style
5998    )]
5999    const _: () = {
6000        use alloy::sol_types as alloy_sol_types;
6001        #[doc(hidden)]
6002        #[allow(dead_code)]
6003        type UnderlyingSolTuple<'a> = ();
6004        #[doc(hidden)]
6005        type UnderlyingRustTuple<'a> = ();
6006        #[cfg(test)]
6007        #[allow(dead_code, unreachable_patterns)]
6008        fn _type_assertion(
6009            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6010        ) {
6011            match _t {
6012                alloy_sol_types::private::AssertTypeEq::<
6013                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6014                >(_) => {}
6015            }
6016        }
6017        #[automatically_derived]
6018        #[doc(hidden)]
6019        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
6020            fn from(value: PrematureWithdrawal) -> Self {
6021                ()
6022            }
6023        }
6024        #[automatically_derived]
6025        #[doc(hidden)]
6026        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
6027            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6028                Self
6029            }
6030        }
6031        #[automatically_derived]
6032        impl alloy_sol_types::SolError for PrematureWithdrawal {
6033            type Parameters<'a> = UnderlyingSolTuple<'a>;
6034            type Token<'a> = <Self::Parameters<
6035                'a,
6036            > as alloy_sol_types::SolType>::Token<'a>;
6037            const SIGNATURE: &'static str = "PrematureWithdrawal()";
6038            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
6039            #[inline]
6040            fn new<'a>(
6041                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6042            ) -> Self {
6043                tuple.into()
6044            }
6045            #[inline]
6046            fn tokenize(&self) -> Self::Token<'_> {
6047                ()
6048            }
6049            #[inline]
6050            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6051                <Self::Parameters<
6052                    '_,
6053                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6054                    .map(Self::new)
6055            }
6056        }
6057    };
6058    #[derive(serde::Serialize, serde::Deserialize)]
6059    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6060    /**Custom error with signature `SchnorrKeyAlreadyUsed()` and selector `0xae493b03`.
6061```solidity
6062error SchnorrKeyAlreadyUsed();
6063```*/
6064    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6065    #[derive(Clone)]
6066    pub struct SchnorrKeyAlreadyUsed;
6067    #[allow(
6068        non_camel_case_types,
6069        non_snake_case,
6070        clippy::pub_underscore_fields,
6071        clippy::style
6072    )]
6073    const _: () = {
6074        use alloy::sol_types as alloy_sol_types;
6075        #[doc(hidden)]
6076        #[allow(dead_code)]
6077        type UnderlyingSolTuple<'a> = ();
6078        #[doc(hidden)]
6079        type UnderlyingRustTuple<'a> = ();
6080        #[cfg(test)]
6081        #[allow(dead_code, unreachable_patterns)]
6082        fn _type_assertion(
6083            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6084        ) {
6085            match _t {
6086                alloy_sol_types::private::AssertTypeEq::<
6087                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6088                >(_) => {}
6089            }
6090        }
6091        #[automatically_derived]
6092        #[doc(hidden)]
6093        impl ::core::convert::From<SchnorrKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
6094            fn from(value: SchnorrKeyAlreadyUsed) -> Self {
6095                ()
6096            }
6097        }
6098        #[automatically_derived]
6099        #[doc(hidden)]
6100        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SchnorrKeyAlreadyUsed {
6101            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6102                Self
6103            }
6104        }
6105        #[automatically_derived]
6106        impl alloy_sol_types::SolError for SchnorrKeyAlreadyUsed {
6107            type Parameters<'a> = UnderlyingSolTuple<'a>;
6108            type Token<'a> = <Self::Parameters<
6109                'a,
6110            > as alloy_sol_types::SolType>::Token<'a>;
6111            const SIGNATURE: &'static str = "SchnorrKeyAlreadyUsed()";
6112            const SELECTOR: [u8; 4] = [174u8, 73u8, 59u8, 3u8];
6113            #[inline]
6114            fn new<'a>(
6115                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6116            ) -> Self {
6117                tuple.into()
6118            }
6119            #[inline]
6120            fn tokenize(&self) -> Self::Token<'_> {
6121                ()
6122            }
6123            #[inline]
6124            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6125                <Self::Parameters<
6126                    '_,
6127                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6128                    .map(Self::new)
6129            }
6130        }
6131    };
6132    #[derive(serde::Serialize, serde::Deserialize)]
6133    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6134    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6135```solidity
6136error UUPSUnauthorizedCallContext();
6137```*/
6138    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6139    #[derive(Clone)]
6140    pub struct UUPSUnauthorizedCallContext;
6141    #[allow(
6142        non_camel_case_types,
6143        non_snake_case,
6144        clippy::pub_underscore_fields,
6145        clippy::style
6146    )]
6147    const _: () = {
6148        use alloy::sol_types as alloy_sol_types;
6149        #[doc(hidden)]
6150        #[allow(dead_code)]
6151        type UnderlyingSolTuple<'a> = ();
6152        #[doc(hidden)]
6153        type UnderlyingRustTuple<'a> = ();
6154        #[cfg(test)]
6155        #[allow(dead_code, unreachable_patterns)]
6156        fn _type_assertion(
6157            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6158        ) {
6159            match _t {
6160                alloy_sol_types::private::AssertTypeEq::<
6161                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6162                >(_) => {}
6163            }
6164        }
6165        #[automatically_derived]
6166        #[doc(hidden)]
6167        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6168        for UnderlyingRustTuple<'_> {
6169            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6170                ()
6171            }
6172        }
6173        #[automatically_derived]
6174        #[doc(hidden)]
6175        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6176        for UUPSUnauthorizedCallContext {
6177            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6178                Self
6179            }
6180        }
6181        #[automatically_derived]
6182        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6183            type Parameters<'a> = UnderlyingSolTuple<'a>;
6184            type Token<'a> = <Self::Parameters<
6185                'a,
6186            > as alloy_sol_types::SolType>::Token<'a>;
6187            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6188            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6189            #[inline]
6190            fn new<'a>(
6191                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6192            ) -> Self {
6193                tuple.into()
6194            }
6195            #[inline]
6196            fn tokenize(&self) -> Self::Token<'_> {
6197                ()
6198            }
6199            #[inline]
6200            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6201                <Self::Parameters<
6202                    '_,
6203                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6204                    .map(Self::new)
6205            }
6206        }
6207    };
6208    #[derive(serde::Serialize, serde::Deserialize)]
6209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6210    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6211```solidity
6212error UUPSUnsupportedProxiableUUID(bytes32 slot);
6213```*/
6214    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6215    #[derive(Clone)]
6216    pub struct UUPSUnsupportedProxiableUUID {
6217        #[allow(missing_docs)]
6218        pub slot: alloy::sol_types::private::FixedBytes<32>,
6219    }
6220    #[allow(
6221        non_camel_case_types,
6222        non_snake_case,
6223        clippy::pub_underscore_fields,
6224        clippy::style
6225    )]
6226    const _: () = {
6227        use alloy::sol_types as alloy_sol_types;
6228        #[doc(hidden)]
6229        #[allow(dead_code)]
6230        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6231        #[doc(hidden)]
6232        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6233        #[cfg(test)]
6234        #[allow(dead_code, unreachable_patterns)]
6235        fn _type_assertion(
6236            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6237        ) {
6238            match _t {
6239                alloy_sol_types::private::AssertTypeEq::<
6240                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6241                >(_) => {}
6242            }
6243        }
6244        #[automatically_derived]
6245        #[doc(hidden)]
6246        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6247        for UnderlyingRustTuple<'_> {
6248            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6249                (value.slot,)
6250            }
6251        }
6252        #[automatically_derived]
6253        #[doc(hidden)]
6254        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6255        for UUPSUnsupportedProxiableUUID {
6256            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6257                Self { slot: tuple.0 }
6258            }
6259        }
6260        #[automatically_derived]
6261        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6262            type Parameters<'a> = UnderlyingSolTuple<'a>;
6263            type Token<'a> = <Self::Parameters<
6264                'a,
6265            > as alloy_sol_types::SolType>::Token<'a>;
6266            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6267            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6268            #[inline]
6269            fn new<'a>(
6270                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6271            ) -> Self {
6272                tuple.into()
6273            }
6274            #[inline]
6275            fn tokenize(&self) -> Self::Token<'_> {
6276                (
6277                    <alloy::sol_types::sol_data::FixedBytes<
6278                        32,
6279                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6280                )
6281            }
6282            #[inline]
6283            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6284                <Self::Parameters<
6285                    '_,
6286                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6287                    .map(Self::new)
6288            }
6289        }
6290    };
6291    #[derive(serde::Serialize, serde::Deserialize)]
6292    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6293    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
6294```solidity
6295error UndelegationAlreadyExists();
6296```*/
6297    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6298    #[derive(Clone)]
6299    pub struct UndelegationAlreadyExists;
6300    #[allow(
6301        non_camel_case_types,
6302        non_snake_case,
6303        clippy::pub_underscore_fields,
6304        clippy::style
6305    )]
6306    const _: () = {
6307        use alloy::sol_types as alloy_sol_types;
6308        #[doc(hidden)]
6309        #[allow(dead_code)]
6310        type UnderlyingSolTuple<'a> = ();
6311        #[doc(hidden)]
6312        type UnderlyingRustTuple<'a> = ();
6313        #[cfg(test)]
6314        #[allow(dead_code, unreachable_patterns)]
6315        fn _type_assertion(
6316            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6317        ) {
6318            match _t {
6319                alloy_sol_types::private::AssertTypeEq::<
6320                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6321                >(_) => {}
6322            }
6323        }
6324        #[automatically_derived]
6325        #[doc(hidden)]
6326        impl ::core::convert::From<UndelegationAlreadyExists>
6327        for UnderlyingRustTuple<'_> {
6328            fn from(value: UndelegationAlreadyExists) -> Self {
6329                ()
6330            }
6331        }
6332        #[automatically_derived]
6333        #[doc(hidden)]
6334        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6335        for UndelegationAlreadyExists {
6336            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6337                Self
6338            }
6339        }
6340        #[automatically_derived]
6341        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
6342            type Parameters<'a> = UnderlyingSolTuple<'a>;
6343            type Token<'a> = <Self::Parameters<
6344                'a,
6345            > as alloy_sol_types::SolType>::Token<'a>;
6346            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
6347            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
6348            #[inline]
6349            fn new<'a>(
6350                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6351            ) -> Self {
6352                tuple.into()
6353            }
6354            #[inline]
6355            fn tokenize(&self) -> Self::Token<'_> {
6356                ()
6357            }
6358            #[inline]
6359            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6360                <Self::Parameters<
6361                    '_,
6362                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6363                    .map(Self::new)
6364            }
6365        }
6366    };
6367    #[derive(serde::Serialize, serde::Deserialize)]
6368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6369    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
6370```solidity
6371error ValidatorAlreadyExited();
6372```*/
6373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6374    #[derive(Clone)]
6375    pub struct ValidatorAlreadyExited;
6376    #[allow(
6377        non_camel_case_types,
6378        non_snake_case,
6379        clippy::pub_underscore_fields,
6380        clippy::style
6381    )]
6382    const _: () = {
6383        use alloy::sol_types as alloy_sol_types;
6384        #[doc(hidden)]
6385        #[allow(dead_code)]
6386        type UnderlyingSolTuple<'a> = ();
6387        #[doc(hidden)]
6388        type UnderlyingRustTuple<'a> = ();
6389        #[cfg(test)]
6390        #[allow(dead_code, unreachable_patterns)]
6391        fn _type_assertion(
6392            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6393        ) {
6394            match _t {
6395                alloy_sol_types::private::AssertTypeEq::<
6396                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6397                >(_) => {}
6398            }
6399        }
6400        #[automatically_derived]
6401        #[doc(hidden)]
6402        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
6403            fn from(value: ValidatorAlreadyExited) -> Self {
6404                ()
6405            }
6406        }
6407        #[automatically_derived]
6408        #[doc(hidden)]
6409        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
6410            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6411                Self
6412            }
6413        }
6414        #[automatically_derived]
6415        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
6416            type Parameters<'a> = UnderlyingSolTuple<'a>;
6417            type Token<'a> = <Self::Parameters<
6418                'a,
6419            > as alloy_sol_types::SolType>::Token<'a>;
6420            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
6421            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
6422            #[inline]
6423            fn new<'a>(
6424                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6425            ) -> Self {
6426                tuple.into()
6427            }
6428            #[inline]
6429            fn tokenize(&self) -> Self::Token<'_> {
6430                ()
6431            }
6432            #[inline]
6433            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6434                <Self::Parameters<
6435                    '_,
6436                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6437                    .map(Self::new)
6438            }
6439        }
6440    };
6441    #[derive(serde::Serialize, serde::Deserialize)]
6442    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6443    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
6444```solidity
6445error ValidatorAlreadyRegistered();
6446```*/
6447    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6448    #[derive(Clone)]
6449    pub struct ValidatorAlreadyRegistered;
6450    #[allow(
6451        non_camel_case_types,
6452        non_snake_case,
6453        clippy::pub_underscore_fields,
6454        clippy::style
6455    )]
6456    const _: () = {
6457        use alloy::sol_types as alloy_sol_types;
6458        #[doc(hidden)]
6459        #[allow(dead_code)]
6460        type UnderlyingSolTuple<'a> = ();
6461        #[doc(hidden)]
6462        type UnderlyingRustTuple<'a> = ();
6463        #[cfg(test)]
6464        #[allow(dead_code, unreachable_patterns)]
6465        fn _type_assertion(
6466            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6467        ) {
6468            match _t {
6469                alloy_sol_types::private::AssertTypeEq::<
6470                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6471                >(_) => {}
6472            }
6473        }
6474        #[automatically_derived]
6475        #[doc(hidden)]
6476        impl ::core::convert::From<ValidatorAlreadyRegistered>
6477        for UnderlyingRustTuple<'_> {
6478            fn from(value: ValidatorAlreadyRegistered) -> Self {
6479                ()
6480            }
6481        }
6482        #[automatically_derived]
6483        #[doc(hidden)]
6484        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6485        for ValidatorAlreadyRegistered {
6486            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6487                Self
6488            }
6489        }
6490        #[automatically_derived]
6491        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
6492            type Parameters<'a> = UnderlyingSolTuple<'a>;
6493            type Token<'a> = <Self::Parameters<
6494                'a,
6495            > as alloy_sol_types::SolType>::Token<'a>;
6496            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
6497            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
6498            #[inline]
6499            fn new<'a>(
6500                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6501            ) -> Self {
6502                tuple.into()
6503            }
6504            #[inline]
6505            fn tokenize(&self) -> Self::Token<'_> {
6506                ()
6507            }
6508            #[inline]
6509            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6510                <Self::Parameters<
6511                    '_,
6512                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6513                    .map(Self::new)
6514            }
6515        }
6516    };
6517    #[derive(serde::Serialize, serde::Deserialize)]
6518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6519    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
6520```solidity
6521error ValidatorInactive();
6522```*/
6523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6524    #[derive(Clone)]
6525    pub struct ValidatorInactive;
6526    #[allow(
6527        non_camel_case_types,
6528        non_snake_case,
6529        clippy::pub_underscore_fields,
6530        clippy::style
6531    )]
6532    const _: () = {
6533        use alloy::sol_types as alloy_sol_types;
6534        #[doc(hidden)]
6535        #[allow(dead_code)]
6536        type UnderlyingSolTuple<'a> = ();
6537        #[doc(hidden)]
6538        type UnderlyingRustTuple<'a> = ();
6539        #[cfg(test)]
6540        #[allow(dead_code, unreachable_patterns)]
6541        fn _type_assertion(
6542            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6543        ) {
6544            match _t {
6545                alloy_sol_types::private::AssertTypeEq::<
6546                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6547                >(_) => {}
6548            }
6549        }
6550        #[automatically_derived]
6551        #[doc(hidden)]
6552        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
6553            fn from(value: ValidatorInactive) -> Self {
6554                ()
6555            }
6556        }
6557        #[automatically_derived]
6558        #[doc(hidden)]
6559        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
6560            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6561                Self
6562            }
6563        }
6564        #[automatically_derived]
6565        impl alloy_sol_types::SolError for ValidatorInactive {
6566            type Parameters<'a> = UnderlyingSolTuple<'a>;
6567            type Token<'a> = <Self::Parameters<
6568                'a,
6569            > as alloy_sol_types::SolType>::Token<'a>;
6570            const SIGNATURE: &'static str = "ValidatorInactive()";
6571            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
6572            #[inline]
6573            fn new<'a>(
6574                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6575            ) -> Self {
6576                tuple.into()
6577            }
6578            #[inline]
6579            fn tokenize(&self) -> Self::Token<'_> {
6580                ()
6581            }
6582            #[inline]
6583            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6584                <Self::Parameters<
6585                    '_,
6586                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6587                    .map(Self::new)
6588            }
6589        }
6590    };
6591    #[derive(serde::Serialize, serde::Deserialize)]
6592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6593    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
6594```solidity
6595error ValidatorNotExited();
6596```*/
6597    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6598    #[derive(Clone)]
6599    pub struct ValidatorNotExited;
6600    #[allow(
6601        non_camel_case_types,
6602        non_snake_case,
6603        clippy::pub_underscore_fields,
6604        clippy::style
6605    )]
6606    const _: () = {
6607        use alloy::sol_types as alloy_sol_types;
6608        #[doc(hidden)]
6609        #[allow(dead_code)]
6610        type UnderlyingSolTuple<'a> = ();
6611        #[doc(hidden)]
6612        type UnderlyingRustTuple<'a> = ();
6613        #[cfg(test)]
6614        #[allow(dead_code, unreachable_patterns)]
6615        fn _type_assertion(
6616            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6617        ) {
6618            match _t {
6619                alloy_sol_types::private::AssertTypeEq::<
6620                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6621                >(_) => {}
6622            }
6623        }
6624        #[automatically_derived]
6625        #[doc(hidden)]
6626        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
6627            fn from(value: ValidatorNotExited) -> Self {
6628                ()
6629            }
6630        }
6631        #[automatically_derived]
6632        #[doc(hidden)]
6633        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
6634            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6635                Self
6636            }
6637        }
6638        #[automatically_derived]
6639        impl alloy_sol_types::SolError for ValidatorNotExited {
6640            type Parameters<'a> = UnderlyingSolTuple<'a>;
6641            type Token<'a> = <Self::Parameters<
6642                'a,
6643            > as alloy_sol_types::SolType>::Token<'a>;
6644            const SIGNATURE: &'static str = "ValidatorNotExited()";
6645            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
6646            #[inline]
6647            fn new<'a>(
6648                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6649            ) -> Self {
6650                tuple.into()
6651            }
6652            #[inline]
6653            fn tokenize(&self) -> Self::Token<'_> {
6654                ()
6655            }
6656            #[inline]
6657            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6658                <Self::Parameters<
6659                    '_,
6660                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6661                    .map(Self::new)
6662            }
6663        }
6664    };
6665    #[derive(serde::Serialize, serde::Deserialize)]
6666    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6667    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
6668```solidity
6669error ZeroAddress();
6670```*/
6671    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6672    #[derive(Clone)]
6673    pub struct ZeroAddress;
6674    #[allow(
6675        non_camel_case_types,
6676        non_snake_case,
6677        clippy::pub_underscore_fields,
6678        clippy::style
6679    )]
6680    const _: () = {
6681        use alloy::sol_types as alloy_sol_types;
6682        #[doc(hidden)]
6683        #[allow(dead_code)]
6684        type UnderlyingSolTuple<'a> = ();
6685        #[doc(hidden)]
6686        type UnderlyingRustTuple<'a> = ();
6687        #[cfg(test)]
6688        #[allow(dead_code, unreachable_patterns)]
6689        fn _type_assertion(
6690            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6691        ) {
6692            match _t {
6693                alloy_sol_types::private::AssertTypeEq::<
6694                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6695                >(_) => {}
6696            }
6697        }
6698        #[automatically_derived]
6699        #[doc(hidden)]
6700        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
6701            fn from(value: ZeroAddress) -> Self {
6702                ()
6703            }
6704        }
6705        #[automatically_derived]
6706        #[doc(hidden)]
6707        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
6708            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6709                Self
6710            }
6711        }
6712        #[automatically_derived]
6713        impl alloy_sol_types::SolError for ZeroAddress {
6714            type Parameters<'a> = UnderlyingSolTuple<'a>;
6715            type Token<'a> = <Self::Parameters<
6716                'a,
6717            > as alloy_sol_types::SolType>::Token<'a>;
6718            const SIGNATURE: &'static str = "ZeroAddress()";
6719            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
6720            #[inline]
6721            fn new<'a>(
6722                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6723            ) -> Self {
6724                tuple.into()
6725            }
6726            #[inline]
6727            fn tokenize(&self) -> Self::Token<'_> {
6728                ()
6729            }
6730            #[inline]
6731            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6732                <Self::Parameters<
6733                    '_,
6734                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6735                    .map(Self::new)
6736            }
6737        }
6738    };
6739    #[derive(serde::Serialize, serde::Deserialize)]
6740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6741    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
6742```solidity
6743error ZeroAmount();
6744```*/
6745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6746    #[derive(Clone)]
6747    pub struct ZeroAmount;
6748    #[allow(
6749        non_camel_case_types,
6750        non_snake_case,
6751        clippy::pub_underscore_fields,
6752        clippy::style
6753    )]
6754    const _: () = {
6755        use alloy::sol_types as alloy_sol_types;
6756        #[doc(hidden)]
6757        #[allow(dead_code)]
6758        type UnderlyingSolTuple<'a> = ();
6759        #[doc(hidden)]
6760        type UnderlyingRustTuple<'a> = ();
6761        #[cfg(test)]
6762        #[allow(dead_code, unreachable_patterns)]
6763        fn _type_assertion(
6764            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6765        ) {
6766            match _t {
6767                alloy_sol_types::private::AssertTypeEq::<
6768                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6769                >(_) => {}
6770            }
6771        }
6772        #[automatically_derived]
6773        #[doc(hidden)]
6774        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
6775            fn from(value: ZeroAmount) -> Self {
6776                ()
6777            }
6778        }
6779        #[automatically_derived]
6780        #[doc(hidden)]
6781        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
6782            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6783                Self
6784            }
6785        }
6786        #[automatically_derived]
6787        impl alloy_sol_types::SolError for ZeroAmount {
6788            type Parameters<'a> = UnderlyingSolTuple<'a>;
6789            type Token<'a> = <Self::Parameters<
6790                'a,
6791            > as alloy_sol_types::SolType>::Token<'a>;
6792            const SIGNATURE: &'static str = "ZeroAmount()";
6793            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
6794            #[inline]
6795            fn new<'a>(
6796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6797            ) -> Self {
6798                tuple.into()
6799            }
6800            #[inline]
6801            fn tokenize(&self) -> Self::Token<'_> {
6802                ()
6803            }
6804            #[inline]
6805            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6806                <Self::Parameters<
6807                    '_,
6808                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6809                    .map(Self::new)
6810            }
6811        }
6812    };
6813    #[derive(serde::Serialize, serde::Deserialize)]
6814    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6815    /**Event with signature `CommissionUpdated(address,uint256,uint16,uint16)` and selector `0xbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd64`.
6816```solidity
6817event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
6818```*/
6819    #[allow(
6820        non_camel_case_types,
6821        non_snake_case,
6822        clippy::pub_underscore_fields,
6823        clippy::style
6824    )]
6825    #[derive(Clone)]
6826    pub struct CommissionUpdated {
6827        #[allow(missing_docs)]
6828        pub validator: alloy::sol_types::private::Address,
6829        #[allow(missing_docs)]
6830        pub timestamp: alloy::sol_types::private::primitives::aliases::U256,
6831        #[allow(missing_docs)]
6832        pub oldCommission: u16,
6833        #[allow(missing_docs)]
6834        pub newCommission: u16,
6835    }
6836    #[allow(
6837        non_camel_case_types,
6838        non_snake_case,
6839        clippy::pub_underscore_fields,
6840        clippy::style
6841    )]
6842    const _: () = {
6843        use alloy::sol_types as alloy_sol_types;
6844        #[automatically_derived]
6845        impl alloy_sol_types::SolEvent for CommissionUpdated {
6846            type DataTuple<'a> = (
6847                alloy::sol_types::sol_data::Uint<256>,
6848                alloy::sol_types::sol_data::Uint<16>,
6849                alloy::sol_types::sol_data::Uint<16>,
6850            );
6851            type DataToken<'a> = <Self::DataTuple<
6852                'a,
6853            > as alloy_sol_types::SolType>::Token<'a>;
6854            type TopicList = (
6855                alloy_sol_types::sol_data::FixedBytes<32>,
6856                alloy::sol_types::sol_data::Address,
6857            );
6858            const SIGNATURE: &'static str = "CommissionUpdated(address,uint256,uint16,uint16)";
6859            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6860                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
6861                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
6862                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
6863            ]);
6864            const ANONYMOUS: bool = false;
6865            #[allow(unused_variables)]
6866            #[inline]
6867            fn new(
6868                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6869                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6870            ) -> Self {
6871                Self {
6872                    validator: topics.1,
6873                    timestamp: data.0,
6874                    oldCommission: data.1,
6875                    newCommission: data.2,
6876                }
6877            }
6878            #[inline]
6879            fn check_signature(
6880                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6881            ) -> alloy_sol_types::Result<()> {
6882                if topics.0 != Self::SIGNATURE_HASH {
6883                    return Err(
6884                        alloy_sol_types::Error::invalid_event_signature_hash(
6885                            Self::SIGNATURE,
6886                            topics.0,
6887                            Self::SIGNATURE_HASH,
6888                        ),
6889                    );
6890                }
6891                Ok(())
6892            }
6893            #[inline]
6894            fn tokenize_body(&self) -> Self::DataToken<'_> {
6895                (
6896                    <alloy::sol_types::sol_data::Uint<
6897                        256,
6898                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
6899                    <alloy::sol_types::sol_data::Uint<
6900                        16,
6901                    > as alloy_sol_types::SolType>::tokenize(&self.oldCommission),
6902                    <alloy::sol_types::sol_data::Uint<
6903                        16,
6904                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
6905                )
6906            }
6907            #[inline]
6908            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6909                (Self::SIGNATURE_HASH.into(), self.validator.clone())
6910            }
6911            #[inline]
6912            fn encode_topics_raw(
6913                &self,
6914                out: &mut [alloy_sol_types::abi::token::WordToken],
6915            ) -> alloy_sol_types::Result<()> {
6916                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6917                    return Err(alloy_sol_types::Error::Overrun);
6918                }
6919                out[0usize] = alloy_sol_types::abi::token::WordToken(
6920                    Self::SIGNATURE_HASH,
6921                );
6922                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6923                    &self.validator,
6924                );
6925                Ok(())
6926            }
6927        }
6928        #[automatically_derived]
6929        impl alloy_sol_types::private::IntoLogData for CommissionUpdated {
6930            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6931                From::from(self)
6932            }
6933            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6934                From::from(&self)
6935            }
6936        }
6937        #[automatically_derived]
6938        impl From<&CommissionUpdated> for alloy_sol_types::private::LogData {
6939            #[inline]
6940            fn from(this: &CommissionUpdated) -> alloy_sol_types::private::LogData {
6941                alloy_sol_types::SolEvent::encode_log_data(this)
6942            }
6943        }
6944    };
6945    #[derive(serde::Serialize, serde::Deserialize)]
6946    #[derive()]
6947    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
6948```solidity
6949event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
6950```*/
6951    #[allow(
6952        non_camel_case_types,
6953        non_snake_case,
6954        clippy::pub_underscore_fields,
6955        clippy::style
6956    )]
6957    #[derive(Clone)]
6958    pub struct ConsensusKeysUpdated {
6959        #[allow(missing_docs)]
6960        pub account: alloy::sol_types::private::Address,
6961        #[allow(missing_docs)]
6962        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
6963        #[allow(missing_docs)]
6964        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
6965    }
6966    #[allow(
6967        non_camel_case_types,
6968        non_snake_case,
6969        clippy::pub_underscore_fields,
6970        clippy::style
6971    )]
6972    const _: () = {
6973        use alloy::sol_types as alloy_sol_types;
6974        #[automatically_derived]
6975        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
6976            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
6977            type DataToken<'a> = <Self::DataTuple<
6978                'a,
6979            > as alloy_sol_types::SolType>::Token<'a>;
6980            type TopicList = (
6981                alloy_sol_types::sol_data::FixedBytes<32>,
6982                alloy::sol_types::sol_data::Address,
6983            );
6984            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
6985            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6986                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
6987                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
6988                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
6989            ]);
6990            const ANONYMOUS: bool = false;
6991            #[allow(unused_variables)]
6992            #[inline]
6993            fn new(
6994                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6995                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6996            ) -> Self {
6997                Self {
6998                    account: topics.1,
6999                    blsVK: data.0,
7000                    schnorrVK: data.1,
7001                }
7002            }
7003            #[inline]
7004            fn check_signature(
7005                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7006            ) -> alloy_sol_types::Result<()> {
7007                if topics.0 != Self::SIGNATURE_HASH {
7008                    return Err(
7009                        alloy_sol_types::Error::invalid_event_signature_hash(
7010                            Self::SIGNATURE,
7011                            topics.0,
7012                            Self::SIGNATURE_HASH,
7013                        ),
7014                    );
7015                }
7016                Ok(())
7017            }
7018            #[inline]
7019            fn tokenize_body(&self) -> Self::DataToken<'_> {
7020                (
7021                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
7022                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
7023                        &self.schnorrVK,
7024                    ),
7025                )
7026            }
7027            #[inline]
7028            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7029                (Self::SIGNATURE_HASH.into(), self.account.clone())
7030            }
7031            #[inline]
7032            fn encode_topics_raw(
7033                &self,
7034                out: &mut [alloy_sol_types::abi::token::WordToken],
7035            ) -> alloy_sol_types::Result<()> {
7036                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7037                    return Err(alloy_sol_types::Error::Overrun);
7038                }
7039                out[0usize] = alloy_sol_types::abi::token::WordToken(
7040                    Self::SIGNATURE_HASH,
7041                );
7042                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7043                    &self.account,
7044                );
7045                Ok(())
7046            }
7047        }
7048        #[automatically_derived]
7049        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
7050            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7051                From::from(self)
7052            }
7053            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7054                From::from(&self)
7055            }
7056        }
7057        #[automatically_derived]
7058        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
7059            #[inline]
7060            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
7061                alloy_sol_types::SolEvent::encode_log_data(this)
7062            }
7063        }
7064    };
7065    #[derive(serde::Serialize, serde::Deserialize)]
7066    #[derive()]
7067    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
7068```solidity
7069event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
7070```*/
7071    #[allow(
7072        non_camel_case_types,
7073        non_snake_case,
7074        clippy::pub_underscore_fields,
7075        clippy::style
7076    )]
7077    #[derive(Clone)]
7078    pub struct ConsensusKeysUpdatedV2 {
7079        #[allow(missing_docs)]
7080        pub account: alloy::sol_types::private::Address,
7081        #[allow(missing_docs)]
7082        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7083        #[allow(missing_docs)]
7084        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
7085        #[allow(missing_docs)]
7086        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
7087        #[allow(missing_docs)]
7088        pub schnorrSig: alloy::sol_types::private::Bytes,
7089    }
7090    #[allow(
7091        non_camel_case_types,
7092        non_snake_case,
7093        clippy::pub_underscore_fields,
7094        clippy::style
7095    )]
7096    const _: () = {
7097        use alloy::sol_types as alloy_sol_types;
7098        #[automatically_derived]
7099        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
7100            type DataTuple<'a> = (
7101                BN254::G2Point,
7102                EdOnBN254::EdOnBN254Point,
7103                BN254::G1Point,
7104                alloy::sol_types::sol_data::Bytes,
7105            );
7106            type DataToken<'a> = <Self::DataTuple<
7107                'a,
7108            > as alloy_sol_types::SolType>::Token<'a>;
7109            type TopicList = (
7110                alloy_sol_types::sol_data::FixedBytes<32>,
7111                alloy::sol_types::sol_data::Address,
7112            );
7113            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
7114            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7115                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
7116                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
7117                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
7118            ]);
7119            const ANONYMOUS: bool = false;
7120            #[allow(unused_variables)]
7121            #[inline]
7122            fn new(
7123                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7124                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7125            ) -> Self {
7126                Self {
7127                    account: topics.1,
7128                    blsVK: data.0,
7129                    schnorrVK: data.1,
7130                    blsSig: data.2,
7131                    schnorrSig: data.3,
7132                }
7133            }
7134            #[inline]
7135            fn check_signature(
7136                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7137            ) -> alloy_sol_types::Result<()> {
7138                if topics.0 != Self::SIGNATURE_HASH {
7139                    return Err(
7140                        alloy_sol_types::Error::invalid_event_signature_hash(
7141                            Self::SIGNATURE,
7142                            topics.0,
7143                            Self::SIGNATURE_HASH,
7144                        ),
7145                    );
7146                }
7147                Ok(())
7148            }
7149            #[inline]
7150            fn tokenize_body(&self) -> Self::DataToken<'_> {
7151                (
7152                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
7153                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
7154                        &self.schnorrVK,
7155                    ),
7156                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
7157                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7158                        &self.schnorrSig,
7159                    ),
7160                )
7161            }
7162            #[inline]
7163            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7164                (Self::SIGNATURE_HASH.into(), self.account.clone())
7165            }
7166            #[inline]
7167            fn encode_topics_raw(
7168                &self,
7169                out: &mut [alloy_sol_types::abi::token::WordToken],
7170            ) -> alloy_sol_types::Result<()> {
7171                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7172                    return Err(alloy_sol_types::Error::Overrun);
7173                }
7174                out[0usize] = alloy_sol_types::abi::token::WordToken(
7175                    Self::SIGNATURE_HASH,
7176                );
7177                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7178                    &self.account,
7179                );
7180                Ok(())
7181            }
7182        }
7183        #[automatically_derived]
7184        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
7185            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7186                From::from(self)
7187            }
7188            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7189                From::from(&self)
7190            }
7191        }
7192        #[automatically_derived]
7193        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
7194            #[inline]
7195            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
7196                alloy_sol_types::SolEvent::encode_log_data(this)
7197            }
7198        }
7199    };
7200    #[derive(serde::Serialize, serde::Deserialize)]
7201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7202    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
7203```solidity
7204event Delegated(address indexed delegator, address indexed validator, uint256 amount);
7205```*/
7206    #[allow(
7207        non_camel_case_types,
7208        non_snake_case,
7209        clippy::pub_underscore_fields,
7210        clippy::style
7211    )]
7212    #[derive(Clone)]
7213    pub struct Delegated {
7214        #[allow(missing_docs)]
7215        pub delegator: alloy::sol_types::private::Address,
7216        #[allow(missing_docs)]
7217        pub validator: alloy::sol_types::private::Address,
7218        #[allow(missing_docs)]
7219        pub amount: alloy::sol_types::private::primitives::aliases::U256,
7220    }
7221    #[allow(
7222        non_camel_case_types,
7223        non_snake_case,
7224        clippy::pub_underscore_fields,
7225        clippy::style
7226    )]
7227    const _: () = {
7228        use alloy::sol_types as alloy_sol_types;
7229        #[automatically_derived]
7230        impl alloy_sol_types::SolEvent for Delegated {
7231            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7232            type DataToken<'a> = <Self::DataTuple<
7233                'a,
7234            > as alloy_sol_types::SolType>::Token<'a>;
7235            type TopicList = (
7236                alloy_sol_types::sol_data::FixedBytes<32>,
7237                alloy::sol_types::sol_data::Address,
7238                alloy::sol_types::sol_data::Address,
7239            );
7240            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
7241            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7242                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
7243                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
7244                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
7245            ]);
7246            const ANONYMOUS: bool = false;
7247            #[allow(unused_variables)]
7248            #[inline]
7249            fn new(
7250                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7251                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7252            ) -> Self {
7253                Self {
7254                    delegator: topics.1,
7255                    validator: topics.2,
7256                    amount: data.0,
7257                }
7258            }
7259            #[inline]
7260            fn check_signature(
7261                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7262            ) -> alloy_sol_types::Result<()> {
7263                if topics.0 != Self::SIGNATURE_HASH {
7264                    return Err(
7265                        alloy_sol_types::Error::invalid_event_signature_hash(
7266                            Self::SIGNATURE,
7267                            topics.0,
7268                            Self::SIGNATURE_HASH,
7269                        ),
7270                    );
7271                }
7272                Ok(())
7273            }
7274            #[inline]
7275            fn tokenize_body(&self) -> Self::DataToken<'_> {
7276                (
7277                    <alloy::sol_types::sol_data::Uint<
7278                        256,
7279                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
7280                )
7281            }
7282            #[inline]
7283            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7284                (
7285                    Self::SIGNATURE_HASH.into(),
7286                    self.delegator.clone(),
7287                    self.validator.clone(),
7288                )
7289            }
7290            #[inline]
7291            fn encode_topics_raw(
7292                &self,
7293                out: &mut [alloy_sol_types::abi::token::WordToken],
7294            ) -> alloy_sol_types::Result<()> {
7295                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7296                    return Err(alloy_sol_types::Error::Overrun);
7297                }
7298                out[0usize] = alloy_sol_types::abi::token::WordToken(
7299                    Self::SIGNATURE_HASH,
7300                );
7301                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7302                    &self.delegator,
7303                );
7304                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7305                    &self.validator,
7306                );
7307                Ok(())
7308            }
7309        }
7310        #[automatically_derived]
7311        impl alloy_sol_types::private::IntoLogData for Delegated {
7312            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7313                From::from(self)
7314            }
7315            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7316                From::from(&self)
7317            }
7318        }
7319        #[automatically_derived]
7320        impl From<&Delegated> for alloy_sol_types::private::LogData {
7321            #[inline]
7322            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
7323                alloy_sol_types::SolEvent::encode_log_data(this)
7324            }
7325        }
7326    };
7327    #[derive(serde::Serialize, serde::Deserialize)]
7328    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7329    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
7330```solidity
7331event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
7332```*/
7333    #[allow(
7334        non_camel_case_types,
7335        non_snake_case,
7336        clippy::pub_underscore_fields,
7337        clippy::style
7338    )]
7339    #[derive(Clone)]
7340    pub struct ExitEscrowPeriodUpdated {
7341        #[allow(missing_docs)]
7342        pub newExitEscrowPeriod: u64,
7343    }
7344    #[allow(
7345        non_camel_case_types,
7346        non_snake_case,
7347        clippy::pub_underscore_fields,
7348        clippy::style
7349    )]
7350    const _: () = {
7351        use alloy::sol_types as alloy_sol_types;
7352        #[automatically_derived]
7353        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
7354            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7355            type DataToken<'a> = <Self::DataTuple<
7356                'a,
7357            > as alloy_sol_types::SolType>::Token<'a>;
7358            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7359            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
7360            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7361                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
7362                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
7363                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
7364            ]);
7365            const ANONYMOUS: bool = false;
7366            #[allow(unused_variables)]
7367            #[inline]
7368            fn new(
7369                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7370                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7371            ) -> Self {
7372                Self {
7373                    newExitEscrowPeriod: data.0,
7374                }
7375            }
7376            #[inline]
7377            fn check_signature(
7378                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7379            ) -> alloy_sol_types::Result<()> {
7380                if topics.0 != Self::SIGNATURE_HASH {
7381                    return Err(
7382                        alloy_sol_types::Error::invalid_event_signature_hash(
7383                            Self::SIGNATURE,
7384                            topics.0,
7385                            Self::SIGNATURE_HASH,
7386                        ),
7387                    );
7388                }
7389                Ok(())
7390            }
7391            #[inline]
7392            fn tokenize_body(&self) -> Self::DataToken<'_> {
7393                (
7394                    <alloy::sol_types::sol_data::Uint<
7395                        64,
7396                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
7397                )
7398            }
7399            #[inline]
7400            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7401                (Self::SIGNATURE_HASH.into(),)
7402            }
7403            #[inline]
7404            fn encode_topics_raw(
7405                &self,
7406                out: &mut [alloy_sol_types::abi::token::WordToken],
7407            ) -> alloy_sol_types::Result<()> {
7408                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7409                    return Err(alloy_sol_types::Error::Overrun);
7410                }
7411                out[0usize] = alloy_sol_types::abi::token::WordToken(
7412                    Self::SIGNATURE_HASH,
7413                );
7414                Ok(())
7415            }
7416        }
7417        #[automatically_derived]
7418        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
7419            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7420                From::from(self)
7421            }
7422            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7423                From::from(&self)
7424            }
7425        }
7426        #[automatically_derived]
7427        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
7428            #[inline]
7429            fn from(
7430                this: &ExitEscrowPeriodUpdated,
7431            ) -> alloy_sol_types::private::LogData {
7432                alloy_sol_types::SolEvent::encode_log_data(this)
7433            }
7434        }
7435    };
7436    #[derive(serde::Serialize, serde::Deserialize)]
7437    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7438    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7439```solidity
7440event Initialized(uint64 version);
7441```*/
7442    #[allow(
7443        non_camel_case_types,
7444        non_snake_case,
7445        clippy::pub_underscore_fields,
7446        clippy::style
7447    )]
7448    #[derive(Clone)]
7449    pub struct Initialized {
7450        #[allow(missing_docs)]
7451        pub version: u64,
7452    }
7453    #[allow(
7454        non_camel_case_types,
7455        non_snake_case,
7456        clippy::pub_underscore_fields,
7457        clippy::style
7458    )]
7459    const _: () = {
7460        use alloy::sol_types as alloy_sol_types;
7461        #[automatically_derived]
7462        impl alloy_sol_types::SolEvent for Initialized {
7463            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7464            type DataToken<'a> = <Self::DataTuple<
7465                'a,
7466            > as alloy_sol_types::SolType>::Token<'a>;
7467            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7468            const SIGNATURE: &'static str = "Initialized(uint64)";
7469            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7470                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7471                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7472                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7473            ]);
7474            const ANONYMOUS: bool = false;
7475            #[allow(unused_variables)]
7476            #[inline]
7477            fn new(
7478                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7479                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7480            ) -> Self {
7481                Self { version: data.0 }
7482            }
7483            #[inline]
7484            fn check_signature(
7485                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7486            ) -> alloy_sol_types::Result<()> {
7487                if topics.0 != Self::SIGNATURE_HASH {
7488                    return Err(
7489                        alloy_sol_types::Error::invalid_event_signature_hash(
7490                            Self::SIGNATURE,
7491                            topics.0,
7492                            Self::SIGNATURE_HASH,
7493                        ),
7494                    );
7495                }
7496                Ok(())
7497            }
7498            #[inline]
7499            fn tokenize_body(&self) -> Self::DataToken<'_> {
7500                (
7501                    <alloy::sol_types::sol_data::Uint<
7502                        64,
7503                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7504                )
7505            }
7506            #[inline]
7507            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7508                (Self::SIGNATURE_HASH.into(),)
7509            }
7510            #[inline]
7511            fn encode_topics_raw(
7512                &self,
7513                out: &mut [alloy_sol_types::abi::token::WordToken],
7514            ) -> alloy_sol_types::Result<()> {
7515                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7516                    return Err(alloy_sol_types::Error::Overrun);
7517                }
7518                out[0usize] = alloy_sol_types::abi::token::WordToken(
7519                    Self::SIGNATURE_HASH,
7520                );
7521                Ok(())
7522            }
7523        }
7524        #[automatically_derived]
7525        impl alloy_sol_types::private::IntoLogData for Initialized {
7526            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7527                From::from(self)
7528            }
7529            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7530                From::from(&self)
7531            }
7532        }
7533        #[automatically_derived]
7534        impl From<&Initialized> for alloy_sol_types::private::LogData {
7535            #[inline]
7536            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7537                alloy_sol_types::SolEvent::encode_log_data(this)
7538            }
7539        }
7540    };
7541    #[derive(serde::Serialize, serde::Deserialize)]
7542    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7543    /**Event with signature `MaxCommissionIncreaseUpdated(uint16)` and selector `0xbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd`.
7544```solidity
7545event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
7546```*/
7547    #[allow(
7548        non_camel_case_types,
7549        non_snake_case,
7550        clippy::pub_underscore_fields,
7551        clippy::style
7552    )]
7553    #[derive(Clone)]
7554    pub struct MaxCommissionIncreaseUpdated {
7555        #[allow(missing_docs)]
7556        pub newMaxIncrease: u16,
7557    }
7558    #[allow(
7559        non_camel_case_types,
7560        non_snake_case,
7561        clippy::pub_underscore_fields,
7562        clippy::style
7563    )]
7564    const _: () = {
7565        use alloy::sol_types as alloy_sol_types;
7566        #[automatically_derived]
7567        impl alloy_sol_types::SolEvent for MaxCommissionIncreaseUpdated {
7568            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
7569            type DataToken<'a> = <Self::DataTuple<
7570                'a,
7571            > as alloy_sol_types::SolType>::Token<'a>;
7572            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7573            const SIGNATURE: &'static str = "MaxCommissionIncreaseUpdated(uint16)";
7574            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7575                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
7576                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
7577                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
7578            ]);
7579            const ANONYMOUS: bool = false;
7580            #[allow(unused_variables)]
7581            #[inline]
7582            fn new(
7583                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7584                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7585            ) -> Self {
7586                Self { newMaxIncrease: data.0 }
7587            }
7588            #[inline]
7589            fn check_signature(
7590                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7591            ) -> alloy_sol_types::Result<()> {
7592                if topics.0 != Self::SIGNATURE_HASH {
7593                    return Err(
7594                        alloy_sol_types::Error::invalid_event_signature_hash(
7595                            Self::SIGNATURE,
7596                            topics.0,
7597                            Self::SIGNATURE_HASH,
7598                        ),
7599                    );
7600                }
7601                Ok(())
7602            }
7603            #[inline]
7604            fn tokenize_body(&self) -> Self::DataToken<'_> {
7605                (
7606                    <alloy::sol_types::sol_data::Uint<
7607                        16,
7608                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
7609                )
7610            }
7611            #[inline]
7612            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7613                (Self::SIGNATURE_HASH.into(),)
7614            }
7615            #[inline]
7616            fn encode_topics_raw(
7617                &self,
7618                out: &mut [alloy_sol_types::abi::token::WordToken],
7619            ) -> alloy_sol_types::Result<()> {
7620                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7621                    return Err(alloy_sol_types::Error::Overrun);
7622                }
7623                out[0usize] = alloy_sol_types::abi::token::WordToken(
7624                    Self::SIGNATURE_HASH,
7625                );
7626                Ok(())
7627            }
7628        }
7629        #[automatically_derived]
7630        impl alloy_sol_types::private::IntoLogData for MaxCommissionIncreaseUpdated {
7631            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7632                From::from(self)
7633            }
7634            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7635                From::from(&self)
7636            }
7637        }
7638        #[automatically_derived]
7639        impl From<&MaxCommissionIncreaseUpdated> for alloy_sol_types::private::LogData {
7640            #[inline]
7641            fn from(
7642                this: &MaxCommissionIncreaseUpdated,
7643            ) -> alloy_sol_types::private::LogData {
7644                alloy_sol_types::SolEvent::encode_log_data(this)
7645            }
7646        }
7647    };
7648    #[derive(serde::Serialize, serde::Deserialize)]
7649    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7650    /**Event with signature `MinCommissionUpdateIntervalUpdated(uint256)` and selector `0x51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef259`.
7651```solidity
7652event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
7653```*/
7654    #[allow(
7655        non_camel_case_types,
7656        non_snake_case,
7657        clippy::pub_underscore_fields,
7658        clippy::style
7659    )]
7660    #[derive(Clone)]
7661    pub struct MinCommissionUpdateIntervalUpdated {
7662        #[allow(missing_docs)]
7663        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
7664    }
7665    #[allow(
7666        non_camel_case_types,
7667        non_snake_case,
7668        clippy::pub_underscore_fields,
7669        clippy::style
7670    )]
7671    const _: () = {
7672        use alloy::sol_types as alloy_sol_types;
7673        #[automatically_derived]
7674        impl alloy_sol_types::SolEvent for MinCommissionUpdateIntervalUpdated {
7675            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7676            type DataToken<'a> = <Self::DataTuple<
7677                'a,
7678            > as alloy_sol_types::SolType>::Token<'a>;
7679            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7680            const SIGNATURE: &'static str = "MinCommissionUpdateIntervalUpdated(uint256)";
7681            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7682                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
7683                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
7684                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
7685            ]);
7686            const ANONYMOUS: bool = false;
7687            #[allow(unused_variables)]
7688            #[inline]
7689            fn new(
7690                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7691                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7692            ) -> Self {
7693                Self { newInterval: data.0 }
7694            }
7695            #[inline]
7696            fn check_signature(
7697                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7698            ) -> alloy_sol_types::Result<()> {
7699                if topics.0 != Self::SIGNATURE_HASH {
7700                    return Err(
7701                        alloy_sol_types::Error::invalid_event_signature_hash(
7702                            Self::SIGNATURE,
7703                            topics.0,
7704                            Self::SIGNATURE_HASH,
7705                        ),
7706                    );
7707                }
7708                Ok(())
7709            }
7710            #[inline]
7711            fn tokenize_body(&self) -> Self::DataToken<'_> {
7712                (
7713                    <alloy::sol_types::sol_data::Uint<
7714                        256,
7715                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
7716                )
7717            }
7718            #[inline]
7719            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7720                (Self::SIGNATURE_HASH.into(),)
7721            }
7722            #[inline]
7723            fn encode_topics_raw(
7724                &self,
7725                out: &mut [alloy_sol_types::abi::token::WordToken],
7726            ) -> alloy_sol_types::Result<()> {
7727                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7728                    return Err(alloy_sol_types::Error::Overrun);
7729                }
7730                out[0usize] = alloy_sol_types::abi::token::WordToken(
7731                    Self::SIGNATURE_HASH,
7732                );
7733                Ok(())
7734            }
7735        }
7736        #[automatically_derived]
7737        impl alloy_sol_types::private::IntoLogData
7738        for MinCommissionUpdateIntervalUpdated {
7739            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7740                From::from(self)
7741            }
7742            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7743                From::from(&self)
7744            }
7745        }
7746        #[automatically_derived]
7747        impl From<&MinCommissionUpdateIntervalUpdated>
7748        for alloy_sol_types::private::LogData {
7749            #[inline]
7750            fn from(
7751                this: &MinCommissionUpdateIntervalUpdated,
7752            ) -> alloy_sol_types::private::LogData {
7753                alloy_sol_types::SolEvent::encode_log_data(this)
7754            }
7755        }
7756    };
7757    #[derive(serde::Serialize, serde::Deserialize)]
7758    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7759    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7760```solidity
7761event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7762```*/
7763    #[allow(
7764        non_camel_case_types,
7765        non_snake_case,
7766        clippy::pub_underscore_fields,
7767        clippy::style
7768    )]
7769    #[derive(Clone)]
7770    pub struct OwnershipTransferred {
7771        #[allow(missing_docs)]
7772        pub previousOwner: alloy::sol_types::private::Address,
7773        #[allow(missing_docs)]
7774        pub newOwner: alloy::sol_types::private::Address,
7775    }
7776    #[allow(
7777        non_camel_case_types,
7778        non_snake_case,
7779        clippy::pub_underscore_fields,
7780        clippy::style
7781    )]
7782    const _: () = {
7783        use alloy::sol_types as alloy_sol_types;
7784        #[automatically_derived]
7785        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7786            type DataTuple<'a> = ();
7787            type DataToken<'a> = <Self::DataTuple<
7788                'a,
7789            > as alloy_sol_types::SolType>::Token<'a>;
7790            type TopicList = (
7791                alloy_sol_types::sol_data::FixedBytes<32>,
7792                alloy::sol_types::sol_data::Address,
7793                alloy::sol_types::sol_data::Address,
7794            );
7795            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7796            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7797                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7798                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7799                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7800            ]);
7801            const ANONYMOUS: bool = false;
7802            #[allow(unused_variables)]
7803            #[inline]
7804            fn new(
7805                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7806                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7807            ) -> Self {
7808                Self {
7809                    previousOwner: topics.1,
7810                    newOwner: topics.2,
7811                }
7812            }
7813            #[inline]
7814            fn check_signature(
7815                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7816            ) -> alloy_sol_types::Result<()> {
7817                if topics.0 != Self::SIGNATURE_HASH {
7818                    return Err(
7819                        alloy_sol_types::Error::invalid_event_signature_hash(
7820                            Self::SIGNATURE,
7821                            topics.0,
7822                            Self::SIGNATURE_HASH,
7823                        ),
7824                    );
7825                }
7826                Ok(())
7827            }
7828            #[inline]
7829            fn tokenize_body(&self) -> Self::DataToken<'_> {
7830                ()
7831            }
7832            #[inline]
7833            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7834                (
7835                    Self::SIGNATURE_HASH.into(),
7836                    self.previousOwner.clone(),
7837                    self.newOwner.clone(),
7838                )
7839            }
7840            #[inline]
7841            fn encode_topics_raw(
7842                &self,
7843                out: &mut [alloy_sol_types::abi::token::WordToken],
7844            ) -> alloy_sol_types::Result<()> {
7845                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7846                    return Err(alloy_sol_types::Error::Overrun);
7847                }
7848                out[0usize] = alloy_sol_types::abi::token::WordToken(
7849                    Self::SIGNATURE_HASH,
7850                );
7851                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7852                    &self.previousOwner,
7853                );
7854                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7855                    &self.newOwner,
7856                );
7857                Ok(())
7858            }
7859        }
7860        #[automatically_derived]
7861        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7862            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7863                From::from(self)
7864            }
7865            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7866                From::from(&self)
7867            }
7868        }
7869        #[automatically_derived]
7870        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7871            #[inline]
7872            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7873                alloy_sol_types::SolEvent::encode_log_data(this)
7874            }
7875        }
7876    };
7877    #[derive(serde::Serialize, serde::Deserialize)]
7878    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7879    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
7880```solidity
7881event Paused(address account);
7882```*/
7883    #[allow(
7884        non_camel_case_types,
7885        non_snake_case,
7886        clippy::pub_underscore_fields,
7887        clippy::style
7888    )]
7889    #[derive(Clone)]
7890    pub struct Paused {
7891        #[allow(missing_docs)]
7892        pub account: alloy::sol_types::private::Address,
7893    }
7894    #[allow(
7895        non_camel_case_types,
7896        non_snake_case,
7897        clippy::pub_underscore_fields,
7898        clippy::style
7899    )]
7900    const _: () = {
7901        use alloy::sol_types as alloy_sol_types;
7902        #[automatically_derived]
7903        impl alloy_sol_types::SolEvent for Paused {
7904            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7905            type DataToken<'a> = <Self::DataTuple<
7906                'a,
7907            > as alloy_sol_types::SolType>::Token<'a>;
7908            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7909            const SIGNATURE: &'static str = "Paused(address)";
7910            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7911                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
7912                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
7913                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
7914            ]);
7915            const ANONYMOUS: bool = false;
7916            #[allow(unused_variables)]
7917            #[inline]
7918            fn new(
7919                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7920                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7921            ) -> Self {
7922                Self { account: data.0 }
7923            }
7924            #[inline]
7925            fn check_signature(
7926                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7927            ) -> alloy_sol_types::Result<()> {
7928                if topics.0 != Self::SIGNATURE_HASH {
7929                    return Err(
7930                        alloy_sol_types::Error::invalid_event_signature_hash(
7931                            Self::SIGNATURE,
7932                            topics.0,
7933                            Self::SIGNATURE_HASH,
7934                        ),
7935                    );
7936                }
7937                Ok(())
7938            }
7939            #[inline]
7940            fn tokenize_body(&self) -> Self::DataToken<'_> {
7941                (
7942                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7943                        &self.account,
7944                    ),
7945                )
7946            }
7947            #[inline]
7948            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7949                (Self::SIGNATURE_HASH.into(),)
7950            }
7951            #[inline]
7952            fn encode_topics_raw(
7953                &self,
7954                out: &mut [alloy_sol_types::abi::token::WordToken],
7955            ) -> alloy_sol_types::Result<()> {
7956                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7957                    return Err(alloy_sol_types::Error::Overrun);
7958                }
7959                out[0usize] = alloy_sol_types::abi::token::WordToken(
7960                    Self::SIGNATURE_HASH,
7961                );
7962                Ok(())
7963            }
7964        }
7965        #[automatically_derived]
7966        impl alloy_sol_types::private::IntoLogData for Paused {
7967            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7968                From::from(self)
7969            }
7970            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7971                From::from(&self)
7972            }
7973        }
7974        #[automatically_derived]
7975        impl From<&Paused> for alloy_sol_types::private::LogData {
7976            #[inline]
7977            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
7978                alloy_sol_types::SolEvent::encode_log_data(this)
7979            }
7980        }
7981    };
7982    #[derive(serde::Serialize, serde::Deserialize)]
7983    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7984    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
7985```solidity
7986event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
7987```*/
7988    #[allow(
7989        non_camel_case_types,
7990        non_snake_case,
7991        clippy::pub_underscore_fields,
7992        clippy::style
7993    )]
7994    #[derive(Clone)]
7995    pub struct RoleAdminChanged {
7996        #[allow(missing_docs)]
7997        pub role: alloy::sol_types::private::FixedBytes<32>,
7998        #[allow(missing_docs)]
7999        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
8000        #[allow(missing_docs)]
8001        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
8002    }
8003    #[allow(
8004        non_camel_case_types,
8005        non_snake_case,
8006        clippy::pub_underscore_fields,
8007        clippy::style
8008    )]
8009    const _: () = {
8010        use alloy::sol_types as alloy_sol_types;
8011        #[automatically_derived]
8012        impl alloy_sol_types::SolEvent for RoleAdminChanged {
8013            type DataTuple<'a> = ();
8014            type DataToken<'a> = <Self::DataTuple<
8015                'a,
8016            > as alloy_sol_types::SolType>::Token<'a>;
8017            type TopicList = (
8018                alloy_sol_types::sol_data::FixedBytes<32>,
8019                alloy::sol_types::sol_data::FixedBytes<32>,
8020                alloy::sol_types::sol_data::FixedBytes<32>,
8021                alloy::sol_types::sol_data::FixedBytes<32>,
8022            );
8023            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
8024            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8025                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
8026                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
8027                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
8028            ]);
8029            const ANONYMOUS: bool = false;
8030            #[allow(unused_variables)]
8031            #[inline]
8032            fn new(
8033                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8034                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8035            ) -> Self {
8036                Self {
8037                    role: topics.1,
8038                    previousAdminRole: topics.2,
8039                    newAdminRole: topics.3,
8040                }
8041            }
8042            #[inline]
8043            fn check_signature(
8044                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8045            ) -> alloy_sol_types::Result<()> {
8046                if topics.0 != Self::SIGNATURE_HASH {
8047                    return Err(
8048                        alloy_sol_types::Error::invalid_event_signature_hash(
8049                            Self::SIGNATURE,
8050                            topics.0,
8051                            Self::SIGNATURE_HASH,
8052                        ),
8053                    );
8054                }
8055                Ok(())
8056            }
8057            #[inline]
8058            fn tokenize_body(&self) -> Self::DataToken<'_> {
8059                ()
8060            }
8061            #[inline]
8062            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8063                (
8064                    Self::SIGNATURE_HASH.into(),
8065                    self.role.clone(),
8066                    self.previousAdminRole.clone(),
8067                    self.newAdminRole.clone(),
8068                )
8069            }
8070            #[inline]
8071            fn encode_topics_raw(
8072                &self,
8073                out: &mut [alloy_sol_types::abi::token::WordToken],
8074            ) -> alloy_sol_types::Result<()> {
8075                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8076                    return Err(alloy_sol_types::Error::Overrun);
8077                }
8078                out[0usize] = alloy_sol_types::abi::token::WordToken(
8079                    Self::SIGNATURE_HASH,
8080                );
8081                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
8082                    32,
8083                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
8084                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
8085                    32,
8086                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
8087                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
8088                    32,
8089                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
8090                Ok(())
8091            }
8092        }
8093        #[automatically_derived]
8094        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
8095            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8096                From::from(self)
8097            }
8098            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8099                From::from(&self)
8100            }
8101        }
8102        #[automatically_derived]
8103        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
8104            #[inline]
8105            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
8106                alloy_sol_types::SolEvent::encode_log_data(this)
8107            }
8108        }
8109    };
8110    #[derive(serde::Serialize, serde::Deserialize)]
8111    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8112    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
8113```solidity
8114event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
8115```*/
8116    #[allow(
8117        non_camel_case_types,
8118        non_snake_case,
8119        clippy::pub_underscore_fields,
8120        clippy::style
8121    )]
8122    #[derive(Clone)]
8123    pub struct RoleGranted {
8124        #[allow(missing_docs)]
8125        pub role: alloy::sol_types::private::FixedBytes<32>,
8126        #[allow(missing_docs)]
8127        pub account: alloy::sol_types::private::Address,
8128        #[allow(missing_docs)]
8129        pub sender: alloy::sol_types::private::Address,
8130    }
8131    #[allow(
8132        non_camel_case_types,
8133        non_snake_case,
8134        clippy::pub_underscore_fields,
8135        clippy::style
8136    )]
8137    const _: () = {
8138        use alloy::sol_types as alloy_sol_types;
8139        #[automatically_derived]
8140        impl alloy_sol_types::SolEvent for RoleGranted {
8141            type DataTuple<'a> = ();
8142            type DataToken<'a> = <Self::DataTuple<
8143                'a,
8144            > as alloy_sol_types::SolType>::Token<'a>;
8145            type TopicList = (
8146                alloy_sol_types::sol_data::FixedBytes<32>,
8147                alloy::sol_types::sol_data::FixedBytes<32>,
8148                alloy::sol_types::sol_data::Address,
8149                alloy::sol_types::sol_data::Address,
8150            );
8151            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
8152            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8153                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
8154                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
8155                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
8156            ]);
8157            const ANONYMOUS: bool = false;
8158            #[allow(unused_variables)]
8159            #[inline]
8160            fn new(
8161                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8162                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8163            ) -> Self {
8164                Self {
8165                    role: topics.1,
8166                    account: topics.2,
8167                    sender: topics.3,
8168                }
8169            }
8170            #[inline]
8171            fn check_signature(
8172                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8173            ) -> alloy_sol_types::Result<()> {
8174                if topics.0 != Self::SIGNATURE_HASH {
8175                    return Err(
8176                        alloy_sol_types::Error::invalid_event_signature_hash(
8177                            Self::SIGNATURE,
8178                            topics.0,
8179                            Self::SIGNATURE_HASH,
8180                        ),
8181                    );
8182                }
8183                Ok(())
8184            }
8185            #[inline]
8186            fn tokenize_body(&self) -> Self::DataToken<'_> {
8187                ()
8188            }
8189            #[inline]
8190            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8191                (
8192                    Self::SIGNATURE_HASH.into(),
8193                    self.role.clone(),
8194                    self.account.clone(),
8195                    self.sender.clone(),
8196                )
8197            }
8198            #[inline]
8199            fn encode_topics_raw(
8200                &self,
8201                out: &mut [alloy_sol_types::abi::token::WordToken],
8202            ) -> alloy_sol_types::Result<()> {
8203                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8204                    return Err(alloy_sol_types::Error::Overrun);
8205                }
8206                out[0usize] = alloy_sol_types::abi::token::WordToken(
8207                    Self::SIGNATURE_HASH,
8208                );
8209                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
8210                    32,
8211                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
8212                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8213                    &self.account,
8214                );
8215                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8216                    &self.sender,
8217                );
8218                Ok(())
8219            }
8220        }
8221        #[automatically_derived]
8222        impl alloy_sol_types::private::IntoLogData for RoleGranted {
8223            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8224                From::from(self)
8225            }
8226            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8227                From::from(&self)
8228            }
8229        }
8230        #[automatically_derived]
8231        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
8232            #[inline]
8233            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
8234                alloy_sol_types::SolEvent::encode_log_data(this)
8235            }
8236        }
8237    };
8238    #[derive(serde::Serialize, serde::Deserialize)]
8239    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8240    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
8241```solidity
8242event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
8243```*/
8244    #[allow(
8245        non_camel_case_types,
8246        non_snake_case,
8247        clippy::pub_underscore_fields,
8248        clippy::style
8249    )]
8250    #[derive(Clone)]
8251    pub struct RoleRevoked {
8252        #[allow(missing_docs)]
8253        pub role: alloy::sol_types::private::FixedBytes<32>,
8254        #[allow(missing_docs)]
8255        pub account: alloy::sol_types::private::Address,
8256        #[allow(missing_docs)]
8257        pub sender: alloy::sol_types::private::Address,
8258    }
8259    #[allow(
8260        non_camel_case_types,
8261        non_snake_case,
8262        clippy::pub_underscore_fields,
8263        clippy::style
8264    )]
8265    const _: () = {
8266        use alloy::sol_types as alloy_sol_types;
8267        #[automatically_derived]
8268        impl alloy_sol_types::SolEvent for RoleRevoked {
8269            type DataTuple<'a> = ();
8270            type DataToken<'a> = <Self::DataTuple<
8271                'a,
8272            > as alloy_sol_types::SolType>::Token<'a>;
8273            type TopicList = (
8274                alloy_sol_types::sol_data::FixedBytes<32>,
8275                alloy::sol_types::sol_data::FixedBytes<32>,
8276                alloy::sol_types::sol_data::Address,
8277                alloy::sol_types::sol_data::Address,
8278            );
8279            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
8280            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8281                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
8282                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
8283                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
8284            ]);
8285            const ANONYMOUS: bool = false;
8286            #[allow(unused_variables)]
8287            #[inline]
8288            fn new(
8289                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8290                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8291            ) -> Self {
8292                Self {
8293                    role: topics.1,
8294                    account: topics.2,
8295                    sender: topics.3,
8296                }
8297            }
8298            #[inline]
8299            fn check_signature(
8300                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8301            ) -> alloy_sol_types::Result<()> {
8302                if topics.0 != Self::SIGNATURE_HASH {
8303                    return Err(
8304                        alloy_sol_types::Error::invalid_event_signature_hash(
8305                            Self::SIGNATURE,
8306                            topics.0,
8307                            Self::SIGNATURE_HASH,
8308                        ),
8309                    );
8310                }
8311                Ok(())
8312            }
8313            #[inline]
8314            fn tokenize_body(&self) -> Self::DataToken<'_> {
8315                ()
8316            }
8317            #[inline]
8318            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8319                (
8320                    Self::SIGNATURE_HASH.into(),
8321                    self.role.clone(),
8322                    self.account.clone(),
8323                    self.sender.clone(),
8324                )
8325            }
8326            #[inline]
8327            fn encode_topics_raw(
8328                &self,
8329                out: &mut [alloy_sol_types::abi::token::WordToken],
8330            ) -> alloy_sol_types::Result<()> {
8331                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8332                    return Err(alloy_sol_types::Error::Overrun);
8333                }
8334                out[0usize] = alloy_sol_types::abi::token::WordToken(
8335                    Self::SIGNATURE_HASH,
8336                );
8337                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
8338                    32,
8339                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
8340                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8341                    &self.account,
8342                );
8343                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8344                    &self.sender,
8345                );
8346                Ok(())
8347            }
8348        }
8349        #[automatically_derived]
8350        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
8351            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8352                From::from(self)
8353            }
8354            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8355                From::from(&self)
8356            }
8357        }
8358        #[automatically_derived]
8359        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
8360            #[inline]
8361            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
8362                alloy_sol_types::SolEvent::encode_log_data(this)
8363            }
8364        }
8365    };
8366    #[derive(serde::Serialize, serde::Deserialize)]
8367    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8368    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
8369```solidity
8370event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
8371```*/
8372    #[allow(
8373        non_camel_case_types,
8374        non_snake_case,
8375        clippy::pub_underscore_fields,
8376        clippy::style
8377    )]
8378    #[derive(Clone)]
8379    pub struct Undelegated {
8380        #[allow(missing_docs)]
8381        pub delegator: alloy::sol_types::private::Address,
8382        #[allow(missing_docs)]
8383        pub validator: alloy::sol_types::private::Address,
8384        #[allow(missing_docs)]
8385        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8386    }
8387    #[allow(
8388        non_camel_case_types,
8389        non_snake_case,
8390        clippy::pub_underscore_fields,
8391        clippy::style
8392    )]
8393    const _: () = {
8394        use alloy::sol_types as alloy_sol_types;
8395        #[automatically_derived]
8396        impl alloy_sol_types::SolEvent for Undelegated {
8397            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8398            type DataToken<'a> = <Self::DataTuple<
8399                'a,
8400            > as alloy_sol_types::SolType>::Token<'a>;
8401            type TopicList = (
8402                alloy_sol_types::sol_data::FixedBytes<32>,
8403                alloy::sol_types::sol_data::Address,
8404                alloy::sol_types::sol_data::Address,
8405            );
8406            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
8407            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8408                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
8409                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
8410                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
8411            ]);
8412            const ANONYMOUS: bool = false;
8413            #[allow(unused_variables)]
8414            #[inline]
8415            fn new(
8416                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8417                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8418            ) -> Self {
8419                Self {
8420                    delegator: topics.1,
8421                    validator: topics.2,
8422                    amount: data.0,
8423                }
8424            }
8425            #[inline]
8426            fn check_signature(
8427                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8428            ) -> alloy_sol_types::Result<()> {
8429                if topics.0 != Self::SIGNATURE_HASH {
8430                    return Err(
8431                        alloy_sol_types::Error::invalid_event_signature_hash(
8432                            Self::SIGNATURE,
8433                            topics.0,
8434                            Self::SIGNATURE_HASH,
8435                        ),
8436                    );
8437                }
8438                Ok(())
8439            }
8440            #[inline]
8441            fn tokenize_body(&self) -> Self::DataToken<'_> {
8442                (
8443                    <alloy::sol_types::sol_data::Uint<
8444                        256,
8445                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8446                )
8447            }
8448            #[inline]
8449            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8450                (
8451                    Self::SIGNATURE_HASH.into(),
8452                    self.delegator.clone(),
8453                    self.validator.clone(),
8454                )
8455            }
8456            #[inline]
8457            fn encode_topics_raw(
8458                &self,
8459                out: &mut [alloy_sol_types::abi::token::WordToken],
8460            ) -> alloy_sol_types::Result<()> {
8461                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8462                    return Err(alloy_sol_types::Error::Overrun);
8463                }
8464                out[0usize] = alloy_sol_types::abi::token::WordToken(
8465                    Self::SIGNATURE_HASH,
8466                );
8467                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8468                    &self.delegator,
8469                );
8470                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8471                    &self.validator,
8472                );
8473                Ok(())
8474            }
8475        }
8476        #[automatically_derived]
8477        impl alloy_sol_types::private::IntoLogData for Undelegated {
8478            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8479                From::from(self)
8480            }
8481            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8482                From::from(&self)
8483            }
8484        }
8485        #[automatically_derived]
8486        impl From<&Undelegated> for alloy_sol_types::private::LogData {
8487            #[inline]
8488            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
8489                alloy_sol_types::SolEvent::encode_log_data(this)
8490            }
8491        }
8492    };
8493    #[derive(serde::Serialize, serde::Deserialize)]
8494    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8495    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
8496```solidity
8497event Unpaused(address account);
8498```*/
8499    #[allow(
8500        non_camel_case_types,
8501        non_snake_case,
8502        clippy::pub_underscore_fields,
8503        clippy::style
8504    )]
8505    #[derive(Clone)]
8506    pub struct Unpaused {
8507        #[allow(missing_docs)]
8508        pub account: alloy::sol_types::private::Address,
8509    }
8510    #[allow(
8511        non_camel_case_types,
8512        non_snake_case,
8513        clippy::pub_underscore_fields,
8514        clippy::style
8515    )]
8516    const _: () = {
8517        use alloy::sol_types as alloy_sol_types;
8518        #[automatically_derived]
8519        impl alloy_sol_types::SolEvent for Unpaused {
8520            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
8521            type DataToken<'a> = <Self::DataTuple<
8522                'a,
8523            > as alloy_sol_types::SolType>::Token<'a>;
8524            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8525            const SIGNATURE: &'static str = "Unpaused(address)";
8526            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8527                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
8528                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
8529                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
8530            ]);
8531            const ANONYMOUS: bool = false;
8532            #[allow(unused_variables)]
8533            #[inline]
8534            fn new(
8535                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8536                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8537            ) -> Self {
8538                Self { account: data.0 }
8539            }
8540            #[inline]
8541            fn check_signature(
8542                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8543            ) -> alloy_sol_types::Result<()> {
8544                if topics.0 != Self::SIGNATURE_HASH {
8545                    return Err(
8546                        alloy_sol_types::Error::invalid_event_signature_hash(
8547                            Self::SIGNATURE,
8548                            topics.0,
8549                            Self::SIGNATURE_HASH,
8550                        ),
8551                    );
8552                }
8553                Ok(())
8554            }
8555            #[inline]
8556            fn tokenize_body(&self) -> Self::DataToken<'_> {
8557                (
8558                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8559                        &self.account,
8560                    ),
8561                )
8562            }
8563            #[inline]
8564            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8565                (Self::SIGNATURE_HASH.into(),)
8566            }
8567            #[inline]
8568            fn encode_topics_raw(
8569                &self,
8570                out: &mut [alloy_sol_types::abi::token::WordToken],
8571            ) -> alloy_sol_types::Result<()> {
8572                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8573                    return Err(alloy_sol_types::Error::Overrun);
8574                }
8575                out[0usize] = alloy_sol_types::abi::token::WordToken(
8576                    Self::SIGNATURE_HASH,
8577                );
8578                Ok(())
8579            }
8580        }
8581        #[automatically_derived]
8582        impl alloy_sol_types::private::IntoLogData for Unpaused {
8583            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8584                From::from(self)
8585            }
8586            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8587                From::from(&self)
8588            }
8589        }
8590        #[automatically_derived]
8591        impl From<&Unpaused> for alloy_sol_types::private::LogData {
8592            #[inline]
8593            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
8594                alloy_sol_types::SolEvent::encode_log_data(this)
8595            }
8596        }
8597    };
8598    #[derive(serde::Serialize, serde::Deserialize)]
8599    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8600    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
8601```solidity
8602event Upgraded(address indexed implementation);
8603```*/
8604    #[allow(
8605        non_camel_case_types,
8606        non_snake_case,
8607        clippy::pub_underscore_fields,
8608        clippy::style
8609    )]
8610    #[derive(Clone)]
8611    pub struct Upgraded {
8612        #[allow(missing_docs)]
8613        pub implementation: alloy::sol_types::private::Address,
8614    }
8615    #[allow(
8616        non_camel_case_types,
8617        non_snake_case,
8618        clippy::pub_underscore_fields,
8619        clippy::style
8620    )]
8621    const _: () = {
8622        use alloy::sol_types as alloy_sol_types;
8623        #[automatically_derived]
8624        impl alloy_sol_types::SolEvent for Upgraded {
8625            type DataTuple<'a> = ();
8626            type DataToken<'a> = <Self::DataTuple<
8627                'a,
8628            > as alloy_sol_types::SolType>::Token<'a>;
8629            type TopicList = (
8630                alloy_sol_types::sol_data::FixedBytes<32>,
8631                alloy::sol_types::sol_data::Address,
8632            );
8633            const SIGNATURE: &'static str = "Upgraded(address)";
8634            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8635                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
8636                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
8637                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
8638            ]);
8639            const ANONYMOUS: bool = false;
8640            #[allow(unused_variables)]
8641            #[inline]
8642            fn new(
8643                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8644                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8645            ) -> Self {
8646                Self { implementation: topics.1 }
8647            }
8648            #[inline]
8649            fn check_signature(
8650                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8651            ) -> alloy_sol_types::Result<()> {
8652                if topics.0 != Self::SIGNATURE_HASH {
8653                    return Err(
8654                        alloy_sol_types::Error::invalid_event_signature_hash(
8655                            Self::SIGNATURE,
8656                            topics.0,
8657                            Self::SIGNATURE_HASH,
8658                        ),
8659                    );
8660                }
8661                Ok(())
8662            }
8663            #[inline]
8664            fn tokenize_body(&self) -> Self::DataToken<'_> {
8665                ()
8666            }
8667            #[inline]
8668            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8669                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
8670            }
8671            #[inline]
8672            fn encode_topics_raw(
8673                &self,
8674                out: &mut [alloy_sol_types::abi::token::WordToken],
8675            ) -> alloy_sol_types::Result<()> {
8676                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8677                    return Err(alloy_sol_types::Error::Overrun);
8678                }
8679                out[0usize] = alloy_sol_types::abi::token::WordToken(
8680                    Self::SIGNATURE_HASH,
8681                );
8682                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8683                    &self.implementation,
8684                );
8685                Ok(())
8686            }
8687        }
8688        #[automatically_derived]
8689        impl alloy_sol_types::private::IntoLogData for Upgraded {
8690            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8691                From::from(self)
8692            }
8693            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8694                From::from(&self)
8695            }
8696        }
8697        #[automatically_derived]
8698        impl From<&Upgraded> for alloy_sol_types::private::LogData {
8699            #[inline]
8700            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
8701                alloy_sol_types::SolEvent::encode_log_data(this)
8702            }
8703        }
8704    };
8705    #[derive(serde::Serialize, serde::Deserialize)]
8706    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8707    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
8708```solidity
8709event ValidatorExit(address indexed validator);
8710```*/
8711    #[allow(
8712        non_camel_case_types,
8713        non_snake_case,
8714        clippy::pub_underscore_fields,
8715        clippy::style
8716    )]
8717    #[derive(Clone)]
8718    pub struct ValidatorExit {
8719        #[allow(missing_docs)]
8720        pub validator: alloy::sol_types::private::Address,
8721    }
8722    #[allow(
8723        non_camel_case_types,
8724        non_snake_case,
8725        clippy::pub_underscore_fields,
8726        clippy::style
8727    )]
8728    const _: () = {
8729        use alloy::sol_types as alloy_sol_types;
8730        #[automatically_derived]
8731        impl alloy_sol_types::SolEvent for ValidatorExit {
8732            type DataTuple<'a> = ();
8733            type DataToken<'a> = <Self::DataTuple<
8734                'a,
8735            > as alloy_sol_types::SolType>::Token<'a>;
8736            type TopicList = (
8737                alloy_sol_types::sol_data::FixedBytes<32>,
8738                alloy::sol_types::sol_data::Address,
8739            );
8740            const SIGNATURE: &'static str = "ValidatorExit(address)";
8741            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8742                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
8743                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
8744                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
8745            ]);
8746            const ANONYMOUS: bool = false;
8747            #[allow(unused_variables)]
8748            #[inline]
8749            fn new(
8750                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8751                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8752            ) -> Self {
8753                Self { validator: topics.1 }
8754            }
8755            #[inline]
8756            fn check_signature(
8757                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8758            ) -> alloy_sol_types::Result<()> {
8759                if topics.0 != Self::SIGNATURE_HASH {
8760                    return Err(
8761                        alloy_sol_types::Error::invalid_event_signature_hash(
8762                            Self::SIGNATURE,
8763                            topics.0,
8764                            Self::SIGNATURE_HASH,
8765                        ),
8766                    );
8767                }
8768                Ok(())
8769            }
8770            #[inline]
8771            fn tokenize_body(&self) -> Self::DataToken<'_> {
8772                ()
8773            }
8774            #[inline]
8775            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8776                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8777            }
8778            #[inline]
8779            fn encode_topics_raw(
8780                &self,
8781                out: &mut [alloy_sol_types::abi::token::WordToken],
8782            ) -> alloy_sol_types::Result<()> {
8783                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8784                    return Err(alloy_sol_types::Error::Overrun);
8785                }
8786                out[0usize] = alloy_sol_types::abi::token::WordToken(
8787                    Self::SIGNATURE_HASH,
8788                );
8789                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8790                    &self.validator,
8791                );
8792                Ok(())
8793            }
8794        }
8795        #[automatically_derived]
8796        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
8797            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8798                From::from(self)
8799            }
8800            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8801                From::from(&self)
8802            }
8803        }
8804        #[automatically_derived]
8805        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
8806            #[inline]
8807            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
8808                alloy_sol_types::SolEvent::encode_log_data(this)
8809            }
8810        }
8811    };
8812    #[derive(serde::Serialize, serde::Deserialize)]
8813    #[derive()]
8814    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
8815```solidity
8816event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
8817```*/
8818    #[allow(
8819        non_camel_case_types,
8820        non_snake_case,
8821        clippy::pub_underscore_fields,
8822        clippy::style
8823    )]
8824    #[derive(Clone)]
8825    pub struct ValidatorRegistered {
8826        #[allow(missing_docs)]
8827        pub account: alloy::sol_types::private::Address,
8828        #[allow(missing_docs)]
8829        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8830        #[allow(missing_docs)]
8831        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8832        #[allow(missing_docs)]
8833        pub commission: u16,
8834    }
8835    #[allow(
8836        non_camel_case_types,
8837        non_snake_case,
8838        clippy::pub_underscore_fields,
8839        clippy::style
8840    )]
8841    const _: () = {
8842        use alloy::sol_types as alloy_sol_types;
8843        #[automatically_derived]
8844        impl alloy_sol_types::SolEvent for ValidatorRegistered {
8845            type DataTuple<'a> = (
8846                BN254::G2Point,
8847                EdOnBN254::EdOnBN254Point,
8848                alloy::sol_types::sol_data::Uint<16>,
8849            );
8850            type DataToken<'a> = <Self::DataTuple<
8851                'a,
8852            > as alloy_sol_types::SolType>::Token<'a>;
8853            type TopicList = (
8854                alloy_sol_types::sol_data::FixedBytes<32>,
8855                alloy::sol_types::sol_data::Address,
8856            );
8857            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
8858            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8859                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
8860                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
8861                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
8862            ]);
8863            const ANONYMOUS: bool = false;
8864            #[allow(unused_variables)]
8865            #[inline]
8866            fn new(
8867                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8868                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8869            ) -> Self {
8870                Self {
8871                    account: topics.1,
8872                    blsVk: data.0,
8873                    schnorrVk: data.1,
8874                    commission: data.2,
8875                }
8876            }
8877            #[inline]
8878            fn check_signature(
8879                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8880            ) -> alloy_sol_types::Result<()> {
8881                if topics.0 != Self::SIGNATURE_HASH {
8882                    return Err(
8883                        alloy_sol_types::Error::invalid_event_signature_hash(
8884                            Self::SIGNATURE,
8885                            topics.0,
8886                            Self::SIGNATURE_HASH,
8887                        ),
8888                    );
8889                }
8890                Ok(())
8891            }
8892            #[inline]
8893            fn tokenize_body(&self) -> Self::DataToken<'_> {
8894                (
8895                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
8896                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8897                        &self.schnorrVk,
8898                    ),
8899                    <alloy::sol_types::sol_data::Uint<
8900                        16,
8901                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
8902                )
8903            }
8904            #[inline]
8905            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8906                (Self::SIGNATURE_HASH.into(), self.account.clone())
8907            }
8908            #[inline]
8909            fn encode_topics_raw(
8910                &self,
8911                out: &mut [alloy_sol_types::abi::token::WordToken],
8912            ) -> alloy_sol_types::Result<()> {
8913                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8914                    return Err(alloy_sol_types::Error::Overrun);
8915                }
8916                out[0usize] = alloy_sol_types::abi::token::WordToken(
8917                    Self::SIGNATURE_HASH,
8918                );
8919                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8920                    &self.account,
8921                );
8922                Ok(())
8923            }
8924        }
8925        #[automatically_derived]
8926        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
8927            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8928                From::from(self)
8929            }
8930            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8931                From::from(&self)
8932            }
8933        }
8934        #[automatically_derived]
8935        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
8936            #[inline]
8937            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
8938                alloy_sol_types::SolEvent::encode_log_data(this)
8939            }
8940        }
8941    };
8942    #[derive(serde::Serialize, serde::Deserialize)]
8943    #[derive()]
8944    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes)` and selector `0xf057d4ea81e98628653a8f90788541972078137334a92b42347eaccda80fc40a`.
8945```solidity
8946event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig);
8947```*/
8948    #[allow(
8949        non_camel_case_types,
8950        non_snake_case,
8951        clippy::pub_underscore_fields,
8952        clippy::style
8953    )]
8954    #[derive(Clone)]
8955    pub struct ValidatorRegisteredV2 {
8956        #[allow(missing_docs)]
8957        pub account: alloy::sol_types::private::Address,
8958        #[allow(missing_docs)]
8959        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8960        #[allow(missing_docs)]
8961        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8962        #[allow(missing_docs)]
8963        pub commission: u16,
8964        #[allow(missing_docs)]
8965        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8966        #[allow(missing_docs)]
8967        pub schnorrSig: alloy::sol_types::private::Bytes,
8968    }
8969    #[allow(
8970        non_camel_case_types,
8971        non_snake_case,
8972        clippy::pub_underscore_fields,
8973        clippy::style
8974    )]
8975    const _: () = {
8976        use alloy::sol_types as alloy_sol_types;
8977        #[automatically_derived]
8978        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
8979            type DataTuple<'a> = (
8980                BN254::G2Point,
8981                EdOnBN254::EdOnBN254Point,
8982                alloy::sol_types::sol_data::Uint<16>,
8983                BN254::G1Point,
8984                alloy::sol_types::sol_data::Bytes,
8985            );
8986            type DataToken<'a> = <Self::DataTuple<
8987                'a,
8988            > as alloy_sol_types::SolType>::Token<'a>;
8989            type TopicList = (
8990                alloy_sol_types::sol_data::FixedBytes<32>,
8991                alloy::sol_types::sol_data::Address,
8992            );
8993            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes)";
8994            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8995                240u8, 87u8, 212u8, 234u8, 129u8, 233u8, 134u8, 40u8, 101u8, 58u8, 143u8,
8996                144u8, 120u8, 133u8, 65u8, 151u8, 32u8, 120u8, 19u8, 115u8, 52u8, 169u8,
8997                43u8, 66u8, 52u8, 126u8, 172u8, 205u8, 168u8, 15u8, 196u8, 10u8,
8998            ]);
8999            const ANONYMOUS: bool = false;
9000            #[allow(unused_variables)]
9001            #[inline]
9002            fn new(
9003                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9004                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9005            ) -> Self {
9006                Self {
9007                    account: topics.1,
9008                    blsVK: data.0,
9009                    schnorrVK: data.1,
9010                    commission: data.2,
9011                    blsSig: data.3,
9012                    schnorrSig: data.4,
9013                }
9014            }
9015            #[inline]
9016            fn check_signature(
9017                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9018            ) -> alloy_sol_types::Result<()> {
9019                if topics.0 != Self::SIGNATURE_HASH {
9020                    return Err(
9021                        alloy_sol_types::Error::invalid_event_signature_hash(
9022                            Self::SIGNATURE,
9023                            topics.0,
9024                            Self::SIGNATURE_HASH,
9025                        ),
9026                    );
9027                }
9028                Ok(())
9029            }
9030            #[inline]
9031            fn tokenize_body(&self) -> Self::DataToken<'_> {
9032                (
9033                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
9034                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
9035                        &self.schnorrVK,
9036                    ),
9037                    <alloy::sol_types::sol_data::Uint<
9038                        16,
9039                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
9040                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
9041                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9042                        &self.schnorrSig,
9043                    ),
9044                )
9045            }
9046            #[inline]
9047            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9048                (Self::SIGNATURE_HASH.into(), self.account.clone())
9049            }
9050            #[inline]
9051            fn encode_topics_raw(
9052                &self,
9053                out: &mut [alloy_sol_types::abi::token::WordToken],
9054            ) -> alloy_sol_types::Result<()> {
9055                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9056                    return Err(alloy_sol_types::Error::Overrun);
9057                }
9058                out[0usize] = alloy_sol_types::abi::token::WordToken(
9059                    Self::SIGNATURE_HASH,
9060                );
9061                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9062                    &self.account,
9063                );
9064                Ok(())
9065            }
9066        }
9067        #[automatically_derived]
9068        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
9069            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9070                From::from(self)
9071            }
9072            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9073                From::from(&self)
9074            }
9075        }
9076        #[automatically_derived]
9077        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
9078            #[inline]
9079            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
9080                alloy_sol_types::SolEvent::encode_log_data(this)
9081            }
9082        }
9083    };
9084    #[derive(serde::Serialize, serde::Deserialize)]
9085    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9086    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
9087```solidity
9088event Withdrawal(address indexed account, uint256 amount);
9089```*/
9090    #[allow(
9091        non_camel_case_types,
9092        non_snake_case,
9093        clippy::pub_underscore_fields,
9094        clippy::style
9095    )]
9096    #[derive(Clone)]
9097    pub struct Withdrawal {
9098        #[allow(missing_docs)]
9099        pub account: alloy::sol_types::private::Address,
9100        #[allow(missing_docs)]
9101        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9102    }
9103    #[allow(
9104        non_camel_case_types,
9105        non_snake_case,
9106        clippy::pub_underscore_fields,
9107        clippy::style
9108    )]
9109    const _: () = {
9110        use alloy::sol_types as alloy_sol_types;
9111        #[automatically_derived]
9112        impl alloy_sol_types::SolEvent for Withdrawal {
9113            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9114            type DataToken<'a> = <Self::DataTuple<
9115                'a,
9116            > as alloy_sol_types::SolType>::Token<'a>;
9117            type TopicList = (
9118                alloy_sol_types::sol_data::FixedBytes<32>,
9119                alloy::sol_types::sol_data::Address,
9120            );
9121            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
9122            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9123                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
9124                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
9125                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
9126            ]);
9127            const ANONYMOUS: bool = false;
9128            #[allow(unused_variables)]
9129            #[inline]
9130            fn new(
9131                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9132                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9133            ) -> Self {
9134                Self {
9135                    account: topics.1,
9136                    amount: data.0,
9137                }
9138            }
9139            #[inline]
9140            fn check_signature(
9141                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9142            ) -> alloy_sol_types::Result<()> {
9143                if topics.0 != Self::SIGNATURE_HASH {
9144                    return Err(
9145                        alloy_sol_types::Error::invalid_event_signature_hash(
9146                            Self::SIGNATURE,
9147                            topics.0,
9148                            Self::SIGNATURE_HASH,
9149                        ),
9150                    );
9151                }
9152                Ok(())
9153            }
9154            #[inline]
9155            fn tokenize_body(&self) -> Self::DataToken<'_> {
9156                (
9157                    <alloy::sol_types::sol_data::Uint<
9158                        256,
9159                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9160                )
9161            }
9162            #[inline]
9163            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9164                (Self::SIGNATURE_HASH.into(), self.account.clone())
9165            }
9166            #[inline]
9167            fn encode_topics_raw(
9168                &self,
9169                out: &mut [alloy_sol_types::abi::token::WordToken],
9170            ) -> alloy_sol_types::Result<()> {
9171                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9172                    return Err(alloy_sol_types::Error::Overrun);
9173                }
9174                out[0usize] = alloy_sol_types::abi::token::WordToken(
9175                    Self::SIGNATURE_HASH,
9176                );
9177                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9178                    &self.account,
9179                );
9180                Ok(())
9181            }
9182        }
9183        #[automatically_derived]
9184        impl alloy_sol_types::private::IntoLogData for Withdrawal {
9185            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9186                From::from(self)
9187            }
9188            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9189                From::from(&self)
9190            }
9191        }
9192        #[automatically_derived]
9193        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
9194            #[inline]
9195            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
9196                alloy_sol_types::SolEvent::encode_log_data(this)
9197            }
9198        }
9199    };
9200    /**Constructor`.
9201```solidity
9202constructor();
9203```*/
9204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9205    #[derive(Clone)]
9206    pub struct constructorCall {}
9207    const _: () = {
9208        use alloy::sol_types as alloy_sol_types;
9209        {
9210            #[doc(hidden)]
9211            #[allow(dead_code)]
9212            type UnderlyingSolTuple<'a> = ();
9213            #[doc(hidden)]
9214            type UnderlyingRustTuple<'a> = ();
9215            #[cfg(test)]
9216            #[allow(dead_code, unreachable_patterns)]
9217            fn _type_assertion(
9218                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9219            ) {
9220                match _t {
9221                    alloy_sol_types::private::AssertTypeEq::<
9222                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9223                    >(_) => {}
9224                }
9225            }
9226            #[automatically_derived]
9227            #[doc(hidden)]
9228            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
9229                fn from(value: constructorCall) -> Self {
9230                    ()
9231                }
9232            }
9233            #[automatically_derived]
9234            #[doc(hidden)]
9235            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
9236                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9237                    Self {}
9238                }
9239            }
9240        }
9241        #[automatically_derived]
9242        impl alloy_sol_types::SolConstructor for constructorCall {
9243            type Parameters<'a> = ();
9244            type Token<'a> = <Self::Parameters<
9245                'a,
9246            > as alloy_sol_types::SolType>::Token<'a>;
9247            #[inline]
9248            fn new<'a>(
9249                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9250            ) -> Self {
9251                tuple.into()
9252            }
9253            #[inline]
9254            fn tokenize(&self) -> Self::Token<'_> {
9255                ()
9256            }
9257        }
9258    };
9259    #[derive(serde::Serialize, serde::Deserialize)]
9260    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9261    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
9262```solidity
9263function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
9264```*/
9265    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9266    #[derive(Clone)]
9267    pub struct DEFAULT_ADMIN_ROLECall;
9268    #[derive(serde::Serialize, serde::Deserialize)]
9269    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9270    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
9271    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9272    #[derive(Clone)]
9273    pub struct DEFAULT_ADMIN_ROLEReturn {
9274        #[allow(missing_docs)]
9275        pub _0: alloy::sol_types::private::FixedBytes<32>,
9276    }
9277    #[allow(
9278        non_camel_case_types,
9279        non_snake_case,
9280        clippy::pub_underscore_fields,
9281        clippy::style
9282    )]
9283    const _: () = {
9284        use alloy::sol_types as alloy_sol_types;
9285        {
9286            #[doc(hidden)]
9287            #[allow(dead_code)]
9288            type UnderlyingSolTuple<'a> = ();
9289            #[doc(hidden)]
9290            type UnderlyingRustTuple<'a> = ();
9291            #[cfg(test)]
9292            #[allow(dead_code, unreachable_patterns)]
9293            fn _type_assertion(
9294                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9295            ) {
9296                match _t {
9297                    alloy_sol_types::private::AssertTypeEq::<
9298                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9299                    >(_) => {}
9300                }
9301            }
9302            #[automatically_derived]
9303            #[doc(hidden)]
9304            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
9305            for UnderlyingRustTuple<'_> {
9306                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
9307                    ()
9308                }
9309            }
9310            #[automatically_derived]
9311            #[doc(hidden)]
9312            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9313            for DEFAULT_ADMIN_ROLECall {
9314                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9315                    Self
9316                }
9317            }
9318        }
9319        {
9320            #[doc(hidden)]
9321            #[allow(dead_code)]
9322            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9323            #[doc(hidden)]
9324            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9325            #[cfg(test)]
9326            #[allow(dead_code, unreachable_patterns)]
9327            fn _type_assertion(
9328                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9329            ) {
9330                match _t {
9331                    alloy_sol_types::private::AssertTypeEq::<
9332                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9333                    >(_) => {}
9334                }
9335            }
9336            #[automatically_derived]
9337            #[doc(hidden)]
9338            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
9339            for UnderlyingRustTuple<'_> {
9340                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
9341                    (value._0,)
9342                }
9343            }
9344            #[automatically_derived]
9345            #[doc(hidden)]
9346            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9347            for DEFAULT_ADMIN_ROLEReturn {
9348                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9349                    Self { _0: tuple.0 }
9350                }
9351            }
9352        }
9353        #[automatically_derived]
9354        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
9355            type Parameters<'a> = ();
9356            type Token<'a> = <Self::Parameters<
9357                'a,
9358            > as alloy_sol_types::SolType>::Token<'a>;
9359            type Return = alloy::sol_types::private::FixedBytes<32>;
9360            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9361            type ReturnToken<'a> = <Self::ReturnTuple<
9362                'a,
9363            > as alloy_sol_types::SolType>::Token<'a>;
9364            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
9365            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
9366            #[inline]
9367            fn new<'a>(
9368                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9369            ) -> Self {
9370                tuple.into()
9371            }
9372            #[inline]
9373            fn tokenize(&self) -> Self::Token<'_> {
9374                ()
9375            }
9376            #[inline]
9377            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9378                (
9379                    <alloy::sol_types::sol_data::FixedBytes<
9380                        32,
9381                    > as alloy_sol_types::SolType>::tokenize(ret),
9382                )
9383            }
9384            #[inline]
9385            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9386                <Self::ReturnTuple<
9387                    '_,
9388                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9389                    .map(|r| {
9390                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
9391                        r._0
9392                    })
9393            }
9394            #[inline]
9395            fn abi_decode_returns_validate(
9396                data: &[u8],
9397            ) -> alloy_sol_types::Result<Self::Return> {
9398                <Self::ReturnTuple<
9399                    '_,
9400                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9401                    .map(|r| {
9402                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
9403                        r._0
9404                    })
9405            }
9406        }
9407    };
9408    #[derive(serde::Serialize, serde::Deserialize)]
9409    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9410    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
9411```solidity
9412function PAUSER_ROLE() external view returns (bytes32);
9413```*/
9414    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9415    #[derive(Clone)]
9416    pub struct PAUSER_ROLECall;
9417    #[derive(serde::Serialize, serde::Deserialize)]
9418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9419    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
9420    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9421    #[derive(Clone)]
9422    pub struct PAUSER_ROLEReturn {
9423        #[allow(missing_docs)]
9424        pub _0: alloy::sol_types::private::FixedBytes<32>,
9425    }
9426    #[allow(
9427        non_camel_case_types,
9428        non_snake_case,
9429        clippy::pub_underscore_fields,
9430        clippy::style
9431    )]
9432    const _: () = {
9433        use alloy::sol_types as alloy_sol_types;
9434        {
9435            #[doc(hidden)]
9436            #[allow(dead_code)]
9437            type UnderlyingSolTuple<'a> = ();
9438            #[doc(hidden)]
9439            type UnderlyingRustTuple<'a> = ();
9440            #[cfg(test)]
9441            #[allow(dead_code, unreachable_patterns)]
9442            fn _type_assertion(
9443                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9444            ) {
9445                match _t {
9446                    alloy_sol_types::private::AssertTypeEq::<
9447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9448                    >(_) => {}
9449                }
9450            }
9451            #[automatically_derived]
9452            #[doc(hidden)]
9453            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
9454                fn from(value: PAUSER_ROLECall) -> Self {
9455                    ()
9456                }
9457            }
9458            #[automatically_derived]
9459            #[doc(hidden)]
9460            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
9461                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9462                    Self
9463                }
9464            }
9465        }
9466        {
9467            #[doc(hidden)]
9468            #[allow(dead_code)]
9469            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9470            #[doc(hidden)]
9471            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9472            #[cfg(test)]
9473            #[allow(dead_code, unreachable_patterns)]
9474            fn _type_assertion(
9475                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9476            ) {
9477                match _t {
9478                    alloy_sol_types::private::AssertTypeEq::<
9479                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9480                    >(_) => {}
9481                }
9482            }
9483            #[automatically_derived]
9484            #[doc(hidden)]
9485            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
9486                fn from(value: PAUSER_ROLEReturn) -> Self {
9487                    (value._0,)
9488                }
9489            }
9490            #[automatically_derived]
9491            #[doc(hidden)]
9492            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
9493                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9494                    Self { _0: tuple.0 }
9495                }
9496            }
9497        }
9498        #[automatically_derived]
9499        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
9500            type Parameters<'a> = ();
9501            type Token<'a> = <Self::Parameters<
9502                'a,
9503            > as alloy_sol_types::SolType>::Token<'a>;
9504            type Return = alloy::sol_types::private::FixedBytes<32>;
9505            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9506            type ReturnToken<'a> = <Self::ReturnTuple<
9507                'a,
9508            > as alloy_sol_types::SolType>::Token<'a>;
9509            const SIGNATURE: &'static str = "PAUSER_ROLE()";
9510            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
9511            #[inline]
9512            fn new<'a>(
9513                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9514            ) -> Self {
9515                tuple.into()
9516            }
9517            #[inline]
9518            fn tokenize(&self) -> Self::Token<'_> {
9519                ()
9520            }
9521            #[inline]
9522            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9523                (
9524                    <alloy::sol_types::sol_data::FixedBytes<
9525                        32,
9526                    > as alloy_sol_types::SolType>::tokenize(ret),
9527                )
9528            }
9529            #[inline]
9530            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9531                <Self::ReturnTuple<
9532                    '_,
9533                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9534                    .map(|r| {
9535                        let r: PAUSER_ROLEReturn = r.into();
9536                        r._0
9537                    })
9538            }
9539            #[inline]
9540            fn abi_decode_returns_validate(
9541                data: &[u8],
9542            ) -> alloy_sol_types::Result<Self::Return> {
9543                <Self::ReturnTuple<
9544                    '_,
9545                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9546                    .map(|r| {
9547                        let r: PAUSER_ROLEReturn = r.into();
9548                        r._0
9549                    })
9550            }
9551        }
9552    };
9553    #[derive(serde::Serialize, serde::Deserialize)]
9554    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9555    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
9556```solidity
9557function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
9558```*/
9559    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9560    #[derive(Clone)]
9561    pub struct UPGRADE_INTERFACE_VERSIONCall;
9562    #[derive(serde::Serialize, serde::Deserialize)]
9563    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9564    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
9565    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9566    #[derive(Clone)]
9567    pub struct UPGRADE_INTERFACE_VERSIONReturn {
9568        #[allow(missing_docs)]
9569        pub _0: alloy::sol_types::private::String,
9570    }
9571    #[allow(
9572        non_camel_case_types,
9573        non_snake_case,
9574        clippy::pub_underscore_fields,
9575        clippy::style
9576    )]
9577    const _: () = {
9578        use alloy::sol_types as alloy_sol_types;
9579        {
9580            #[doc(hidden)]
9581            #[allow(dead_code)]
9582            type UnderlyingSolTuple<'a> = ();
9583            #[doc(hidden)]
9584            type UnderlyingRustTuple<'a> = ();
9585            #[cfg(test)]
9586            #[allow(dead_code, unreachable_patterns)]
9587            fn _type_assertion(
9588                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9589            ) {
9590                match _t {
9591                    alloy_sol_types::private::AssertTypeEq::<
9592                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9593                    >(_) => {}
9594                }
9595            }
9596            #[automatically_derived]
9597            #[doc(hidden)]
9598            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
9599            for UnderlyingRustTuple<'_> {
9600                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
9601                    ()
9602                }
9603            }
9604            #[automatically_derived]
9605            #[doc(hidden)]
9606            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9607            for UPGRADE_INTERFACE_VERSIONCall {
9608                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9609                    Self
9610                }
9611            }
9612        }
9613        {
9614            #[doc(hidden)]
9615            #[allow(dead_code)]
9616            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
9617            #[doc(hidden)]
9618            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
9619            #[cfg(test)]
9620            #[allow(dead_code, unreachable_patterns)]
9621            fn _type_assertion(
9622                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9623            ) {
9624                match _t {
9625                    alloy_sol_types::private::AssertTypeEq::<
9626                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9627                    >(_) => {}
9628                }
9629            }
9630            #[automatically_derived]
9631            #[doc(hidden)]
9632            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
9633            for UnderlyingRustTuple<'_> {
9634                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
9635                    (value._0,)
9636                }
9637            }
9638            #[automatically_derived]
9639            #[doc(hidden)]
9640            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9641            for UPGRADE_INTERFACE_VERSIONReturn {
9642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9643                    Self { _0: tuple.0 }
9644                }
9645            }
9646        }
9647        #[automatically_derived]
9648        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
9649            type Parameters<'a> = ();
9650            type Token<'a> = <Self::Parameters<
9651                'a,
9652            > as alloy_sol_types::SolType>::Token<'a>;
9653            type Return = alloy::sol_types::private::String;
9654            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
9655            type ReturnToken<'a> = <Self::ReturnTuple<
9656                'a,
9657            > as alloy_sol_types::SolType>::Token<'a>;
9658            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
9659            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
9660            #[inline]
9661            fn new<'a>(
9662                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9663            ) -> Self {
9664                tuple.into()
9665            }
9666            #[inline]
9667            fn tokenize(&self) -> Self::Token<'_> {
9668                ()
9669            }
9670            #[inline]
9671            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9672                (
9673                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
9674                        ret,
9675                    ),
9676                )
9677            }
9678            #[inline]
9679            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9680                <Self::ReturnTuple<
9681                    '_,
9682                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9683                    .map(|r| {
9684                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
9685                        r._0
9686                    })
9687            }
9688            #[inline]
9689            fn abi_decode_returns_validate(
9690                data: &[u8],
9691            ) -> alloy_sol_types::Result<Self::Return> {
9692                <Self::ReturnTuple<
9693                    '_,
9694                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9695                    .map(|r| {
9696                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
9697                        r._0
9698                    })
9699            }
9700        }
9701    };
9702    #[derive(serde::Serialize, serde::Deserialize)]
9703    #[derive()]
9704    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
9705```solidity
9706function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
9707```*/
9708    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9709    #[derive(Clone)]
9710    pub struct _hashBlsKeyCall {
9711        #[allow(missing_docs)]
9712        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
9713    }
9714    #[derive(serde::Serialize, serde::Deserialize)]
9715    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9716    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
9717    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9718    #[derive(Clone)]
9719    pub struct _hashBlsKeyReturn {
9720        #[allow(missing_docs)]
9721        pub _0: alloy::sol_types::private::FixedBytes<32>,
9722    }
9723    #[allow(
9724        non_camel_case_types,
9725        non_snake_case,
9726        clippy::pub_underscore_fields,
9727        clippy::style
9728    )]
9729    const _: () = {
9730        use alloy::sol_types as alloy_sol_types;
9731        {
9732            #[doc(hidden)]
9733            #[allow(dead_code)]
9734            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
9735            #[doc(hidden)]
9736            type UnderlyingRustTuple<'a> = (
9737                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
9738            );
9739            #[cfg(test)]
9740            #[allow(dead_code, unreachable_patterns)]
9741            fn _type_assertion(
9742                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9743            ) {
9744                match _t {
9745                    alloy_sol_types::private::AssertTypeEq::<
9746                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9747                    >(_) => {}
9748                }
9749            }
9750            #[automatically_derived]
9751            #[doc(hidden)]
9752            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
9753                fn from(value: _hashBlsKeyCall) -> Self {
9754                    (value.blsVK,)
9755                }
9756            }
9757            #[automatically_derived]
9758            #[doc(hidden)]
9759            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
9760                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9761                    Self { blsVK: tuple.0 }
9762                }
9763            }
9764        }
9765        {
9766            #[doc(hidden)]
9767            #[allow(dead_code)]
9768            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9769            #[doc(hidden)]
9770            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9771            #[cfg(test)]
9772            #[allow(dead_code, unreachable_patterns)]
9773            fn _type_assertion(
9774                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9775            ) {
9776                match _t {
9777                    alloy_sol_types::private::AssertTypeEq::<
9778                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9779                    >(_) => {}
9780                }
9781            }
9782            #[automatically_derived]
9783            #[doc(hidden)]
9784            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
9785                fn from(value: _hashBlsKeyReturn) -> Self {
9786                    (value._0,)
9787                }
9788            }
9789            #[automatically_derived]
9790            #[doc(hidden)]
9791            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
9792                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9793                    Self { _0: tuple.0 }
9794                }
9795            }
9796        }
9797        #[automatically_derived]
9798        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
9799            type Parameters<'a> = (BN254::G2Point,);
9800            type Token<'a> = <Self::Parameters<
9801                'a,
9802            > as alloy_sol_types::SolType>::Token<'a>;
9803            type Return = alloy::sol_types::private::FixedBytes<32>;
9804            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9805            type ReturnToken<'a> = <Self::ReturnTuple<
9806                'a,
9807            > as alloy_sol_types::SolType>::Token<'a>;
9808            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
9809            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
9810            #[inline]
9811            fn new<'a>(
9812                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9813            ) -> Self {
9814                tuple.into()
9815            }
9816            #[inline]
9817            fn tokenize(&self) -> Self::Token<'_> {
9818                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
9819            }
9820            #[inline]
9821            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9822                (
9823                    <alloy::sol_types::sol_data::FixedBytes<
9824                        32,
9825                    > as alloy_sol_types::SolType>::tokenize(ret),
9826                )
9827            }
9828            #[inline]
9829            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9830                <Self::ReturnTuple<
9831                    '_,
9832                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9833                    .map(|r| {
9834                        let r: _hashBlsKeyReturn = r.into();
9835                        r._0
9836                    })
9837            }
9838            #[inline]
9839            fn abi_decode_returns_validate(
9840                data: &[u8],
9841            ) -> alloy_sol_types::Result<Self::Return> {
9842                <Self::ReturnTuple<
9843                    '_,
9844                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9845                    .map(|r| {
9846                        let r: _hashBlsKeyReturn = r.into();
9847                        r._0
9848                    })
9849            }
9850        }
9851    };
9852    #[derive(serde::Serialize, serde::Deserialize)]
9853    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9854    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
9855```solidity
9856function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
9857```*/
9858    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9859    #[derive(Clone)]
9860    pub struct blsKeysCall {
9861        #[allow(missing_docs)]
9862        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
9863    }
9864    #[derive(serde::Serialize, serde::Deserialize)]
9865    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9866    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
9867    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9868    #[derive(Clone)]
9869    pub struct blsKeysReturn {
9870        #[allow(missing_docs)]
9871        pub used: bool,
9872    }
9873    #[allow(
9874        non_camel_case_types,
9875        non_snake_case,
9876        clippy::pub_underscore_fields,
9877        clippy::style
9878    )]
9879    const _: () = {
9880        use alloy::sol_types as alloy_sol_types;
9881        {
9882            #[doc(hidden)]
9883            #[allow(dead_code)]
9884            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9885            #[doc(hidden)]
9886            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9887            #[cfg(test)]
9888            #[allow(dead_code, unreachable_patterns)]
9889            fn _type_assertion(
9890                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9891            ) {
9892                match _t {
9893                    alloy_sol_types::private::AssertTypeEq::<
9894                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9895                    >(_) => {}
9896                }
9897            }
9898            #[automatically_derived]
9899            #[doc(hidden)]
9900            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
9901                fn from(value: blsKeysCall) -> Self {
9902                    (value.blsKeyHash,)
9903                }
9904            }
9905            #[automatically_derived]
9906            #[doc(hidden)]
9907            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
9908                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9909                    Self { blsKeyHash: tuple.0 }
9910                }
9911            }
9912        }
9913        {
9914            #[doc(hidden)]
9915            #[allow(dead_code)]
9916            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9917            #[doc(hidden)]
9918            type UnderlyingRustTuple<'a> = (bool,);
9919            #[cfg(test)]
9920            #[allow(dead_code, unreachable_patterns)]
9921            fn _type_assertion(
9922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9923            ) {
9924                match _t {
9925                    alloy_sol_types::private::AssertTypeEq::<
9926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9927                    >(_) => {}
9928                }
9929            }
9930            #[automatically_derived]
9931            #[doc(hidden)]
9932            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
9933                fn from(value: blsKeysReturn) -> Self {
9934                    (value.used,)
9935                }
9936            }
9937            #[automatically_derived]
9938            #[doc(hidden)]
9939            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
9940                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9941                    Self { used: tuple.0 }
9942                }
9943            }
9944        }
9945        #[automatically_derived]
9946        impl alloy_sol_types::SolCall for blsKeysCall {
9947            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9948            type Token<'a> = <Self::Parameters<
9949                'a,
9950            > as alloy_sol_types::SolType>::Token<'a>;
9951            type Return = bool;
9952            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9953            type ReturnToken<'a> = <Self::ReturnTuple<
9954                'a,
9955            > as alloy_sol_types::SolType>::Token<'a>;
9956            const SIGNATURE: &'static str = "blsKeys(bytes32)";
9957            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
9958            #[inline]
9959            fn new<'a>(
9960                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9961            ) -> Self {
9962                tuple.into()
9963            }
9964            #[inline]
9965            fn tokenize(&self) -> Self::Token<'_> {
9966                (
9967                    <alloy::sol_types::sol_data::FixedBytes<
9968                        32,
9969                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
9970                )
9971            }
9972            #[inline]
9973            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9974                (
9975                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9976                        ret,
9977                    ),
9978                )
9979            }
9980            #[inline]
9981            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9982                <Self::ReturnTuple<
9983                    '_,
9984                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9985                    .map(|r| {
9986                        let r: blsKeysReturn = r.into();
9987                        r.used
9988                    })
9989            }
9990            #[inline]
9991            fn abi_decode_returns_validate(
9992                data: &[u8],
9993            ) -> alloy_sol_types::Result<Self::Return> {
9994                <Self::ReturnTuple<
9995                    '_,
9996                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9997                    .map(|r| {
9998                        let r: blsKeysReturn = r.into();
9999                        r.used
10000                    })
10001            }
10002        }
10003    };
10004    #[derive(serde::Serialize, serde::Deserialize)]
10005    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10006    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
10007```solidity
10008function claimValidatorExit(address validator) external;
10009```*/
10010    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10011    #[derive(Clone)]
10012    pub struct claimValidatorExitCall {
10013        #[allow(missing_docs)]
10014        pub validator: alloy::sol_types::private::Address,
10015    }
10016    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
10017    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10018    #[derive(Clone)]
10019    pub struct claimValidatorExitReturn {}
10020    #[allow(
10021        non_camel_case_types,
10022        non_snake_case,
10023        clippy::pub_underscore_fields,
10024        clippy::style
10025    )]
10026    const _: () = {
10027        use alloy::sol_types as alloy_sol_types;
10028        {
10029            #[doc(hidden)]
10030            #[allow(dead_code)]
10031            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10032            #[doc(hidden)]
10033            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10034            #[cfg(test)]
10035            #[allow(dead_code, unreachable_patterns)]
10036            fn _type_assertion(
10037                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10038            ) {
10039                match _t {
10040                    alloy_sol_types::private::AssertTypeEq::<
10041                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10042                    >(_) => {}
10043                }
10044            }
10045            #[automatically_derived]
10046            #[doc(hidden)]
10047            impl ::core::convert::From<claimValidatorExitCall>
10048            for UnderlyingRustTuple<'_> {
10049                fn from(value: claimValidatorExitCall) -> Self {
10050                    (value.validator,)
10051                }
10052            }
10053            #[automatically_derived]
10054            #[doc(hidden)]
10055            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10056            for claimValidatorExitCall {
10057                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10058                    Self { validator: tuple.0 }
10059                }
10060            }
10061        }
10062        {
10063            #[doc(hidden)]
10064            #[allow(dead_code)]
10065            type UnderlyingSolTuple<'a> = ();
10066            #[doc(hidden)]
10067            type UnderlyingRustTuple<'a> = ();
10068            #[cfg(test)]
10069            #[allow(dead_code, unreachable_patterns)]
10070            fn _type_assertion(
10071                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10072            ) {
10073                match _t {
10074                    alloy_sol_types::private::AssertTypeEq::<
10075                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10076                    >(_) => {}
10077                }
10078            }
10079            #[automatically_derived]
10080            #[doc(hidden)]
10081            impl ::core::convert::From<claimValidatorExitReturn>
10082            for UnderlyingRustTuple<'_> {
10083                fn from(value: claimValidatorExitReturn) -> Self {
10084                    ()
10085                }
10086            }
10087            #[automatically_derived]
10088            #[doc(hidden)]
10089            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10090            for claimValidatorExitReturn {
10091                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10092                    Self {}
10093                }
10094            }
10095        }
10096        impl claimValidatorExitReturn {
10097            fn _tokenize(
10098                &self,
10099            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10100                ()
10101            }
10102        }
10103        #[automatically_derived]
10104        impl alloy_sol_types::SolCall for claimValidatorExitCall {
10105            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10106            type Token<'a> = <Self::Parameters<
10107                'a,
10108            > as alloy_sol_types::SolType>::Token<'a>;
10109            type Return = claimValidatorExitReturn;
10110            type ReturnTuple<'a> = ();
10111            type ReturnToken<'a> = <Self::ReturnTuple<
10112                'a,
10113            > as alloy_sol_types::SolType>::Token<'a>;
10114            const SIGNATURE: &'static str = "claimValidatorExit(address)";
10115            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
10116            #[inline]
10117            fn new<'a>(
10118                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10119            ) -> Self {
10120                tuple.into()
10121            }
10122            #[inline]
10123            fn tokenize(&self) -> Self::Token<'_> {
10124                (
10125                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10126                        &self.validator,
10127                    ),
10128                )
10129            }
10130            #[inline]
10131            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10132                claimValidatorExitReturn::_tokenize(ret)
10133            }
10134            #[inline]
10135            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10136                <Self::ReturnTuple<
10137                    '_,
10138                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10139                    .map(Into::into)
10140            }
10141            #[inline]
10142            fn abi_decode_returns_validate(
10143                data: &[u8],
10144            ) -> alloy_sol_types::Result<Self::Return> {
10145                <Self::ReturnTuple<
10146                    '_,
10147                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10148                    .map(Into::into)
10149            }
10150        }
10151    };
10152    #[derive(serde::Serialize, serde::Deserialize)]
10153    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10154    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
10155```solidity
10156function claimWithdrawal(address validator) external;
10157```*/
10158    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10159    #[derive(Clone)]
10160    pub struct claimWithdrawalCall {
10161        #[allow(missing_docs)]
10162        pub validator: alloy::sol_types::private::Address,
10163    }
10164    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
10165    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10166    #[derive(Clone)]
10167    pub struct claimWithdrawalReturn {}
10168    #[allow(
10169        non_camel_case_types,
10170        non_snake_case,
10171        clippy::pub_underscore_fields,
10172        clippy::style
10173    )]
10174    const _: () = {
10175        use alloy::sol_types as alloy_sol_types;
10176        {
10177            #[doc(hidden)]
10178            #[allow(dead_code)]
10179            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10180            #[doc(hidden)]
10181            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10182            #[cfg(test)]
10183            #[allow(dead_code, unreachable_patterns)]
10184            fn _type_assertion(
10185                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10186            ) {
10187                match _t {
10188                    alloy_sol_types::private::AssertTypeEq::<
10189                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10190                    >(_) => {}
10191                }
10192            }
10193            #[automatically_derived]
10194            #[doc(hidden)]
10195            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
10196                fn from(value: claimWithdrawalCall) -> Self {
10197                    (value.validator,)
10198                }
10199            }
10200            #[automatically_derived]
10201            #[doc(hidden)]
10202            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
10203                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10204                    Self { validator: tuple.0 }
10205                }
10206            }
10207        }
10208        {
10209            #[doc(hidden)]
10210            #[allow(dead_code)]
10211            type UnderlyingSolTuple<'a> = ();
10212            #[doc(hidden)]
10213            type UnderlyingRustTuple<'a> = ();
10214            #[cfg(test)]
10215            #[allow(dead_code, unreachable_patterns)]
10216            fn _type_assertion(
10217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10218            ) {
10219                match _t {
10220                    alloy_sol_types::private::AssertTypeEq::<
10221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10222                    >(_) => {}
10223                }
10224            }
10225            #[automatically_derived]
10226            #[doc(hidden)]
10227            impl ::core::convert::From<claimWithdrawalReturn>
10228            for UnderlyingRustTuple<'_> {
10229                fn from(value: claimWithdrawalReturn) -> Self {
10230                    ()
10231                }
10232            }
10233            #[automatically_derived]
10234            #[doc(hidden)]
10235            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10236            for claimWithdrawalReturn {
10237                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10238                    Self {}
10239                }
10240            }
10241        }
10242        impl claimWithdrawalReturn {
10243            fn _tokenize(
10244                &self,
10245            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10246                ()
10247            }
10248        }
10249        #[automatically_derived]
10250        impl alloy_sol_types::SolCall for claimWithdrawalCall {
10251            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10252            type Token<'a> = <Self::Parameters<
10253                'a,
10254            > as alloy_sol_types::SolType>::Token<'a>;
10255            type Return = claimWithdrawalReturn;
10256            type ReturnTuple<'a> = ();
10257            type ReturnToken<'a> = <Self::ReturnTuple<
10258                'a,
10259            > as alloy_sol_types::SolType>::Token<'a>;
10260            const SIGNATURE: &'static str = "claimWithdrawal(address)";
10261            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
10262            #[inline]
10263            fn new<'a>(
10264                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10265            ) -> Self {
10266                tuple.into()
10267            }
10268            #[inline]
10269            fn tokenize(&self) -> Self::Token<'_> {
10270                (
10271                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10272                        &self.validator,
10273                    ),
10274                )
10275            }
10276            #[inline]
10277            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10278                claimWithdrawalReturn::_tokenize(ret)
10279            }
10280            #[inline]
10281            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10282                <Self::ReturnTuple<
10283                    '_,
10284                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10285                    .map(Into::into)
10286            }
10287            #[inline]
10288            fn abi_decode_returns_validate(
10289                data: &[u8],
10290            ) -> alloy_sol_types::Result<Self::Return> {
10291                <Self::ReturnTuple<
10292                    '_,
10293                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10294                    .map(Into::into)
10295            }
10296        }
10297    };
10298    #[derive(serde::Serialize, serde::Deserialize)]
10299    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10300    /**Function with signature `commissionTracking(address)` and selector `0x9ffb6b43`.
10301```solidity
10302function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
10303```*/
10304    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10305    #[derive(Clone)]
10306    pub struct commissionTrackingCall {
10307        #[allow(missing_docs)]
10308        pub validator: alloy::sol_types::private::Address,
10309    }
10310    #[derive(serde::Serialize, serde::Deserialize)]
10311    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10312    ///Container type for the return parameters of the [`commissionTracking(address)`](commissionTrackingCall) function.
10313    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10314    #[derive(Clone)]
10315    pub struct commissionTrackingReturn {
10316        #[allow(missing_docs)]
10317        pub commission: u16,
10318        #[allow(missing_docs)]
10319        pub lastIncreaseTime: alloy::sol_types::private::primitives::aliases::U256,
10320    }
10321    #[allow(
10322        non_camel_case_types,
10323        non_snake_case,
10324        clippy::pub_underscore_fields,
10325        clippy::style
10326    )]
10327    const _: () = {
10328        use alloy::sol_types as alloy_sol_types;
10329        {
10330            #[doc(hidden)]
10331            #[allow(dead_code)]
10332            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10333            #[doc(hidden)]
10334            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10335            #[cfg(test)]
10336            #[allow(dead_code, unreachable_patterns)]
10337            fn _type_assertion(
10338                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10339            ) {
10340                match _t {
10341                    alloy_sol_types::private::AssertTypeEq::<
10342                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10343                    >(_) => {}
10344                }
10345            }
10346            #[automatically_derived]
10347            #[doc(hidden)]
10348            impl ::core::convert::From<commissionTrackingCall>
10349            for UnderlyingRustTuple<'_> {
10350                fn from(value: commissionTrackingCall) -> Self {
10351                    (value.validator,)
10352                }
10353            }
10354            #[automatically_derived]
10355            #[doc(hidden)]
10356            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10357            for commissionTrackingCall {
10358                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10359                    Self { validator: tuple.0 }
10360                }
10361            }
10362        }
10363        {
10364            #[doc(hidden)]
10365            #[allow(dead_code)]
10366            type UnderlyingSolTuple<'a> = (
10367                alloy::sol_types::sol_data::Uint<16>,
10368                alloy::sol_types::sol_data::Uint<256>,
10369            );
10370            #[doc(hidden)]
10371            type UnderlyingRustTuple<'a> = (
10372                u16,
10373                alloy::sol_types::private::primitives::aliases::U256,
10374            );
10375            #[cfg(test)]
10376            #[allow(dead_code, unreachable_patterns)]
10377            fn _type_assertion(
10378                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10379            ) {
10380                match _t {
10381                    alloy_sol_types::private::AssertTypeEq::<
10382                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10383                    >(_) => {}
10384                }
10385            }
10386            #[automatically_derived]
10387            #[doc(hidden)]
10388            impl ::core::convert::From<commissionTrackingReturn>
10389            for UnderlyingRustTuple<'_> {
10390                fn from(value: commissionTrackingReturn) -> Self {
10391                    (value.commission, value.lastIncreaseTime)
10392                }
10393            }
10394            #[automatically_derived]
10395            #[doc(hidden)]
10396            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10397            for commissionTrackingReturn {
10398                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10399                    Self {
10400                        commission: tuple.0,
10401                        lastIncreaseTime: tuple.1,
10402                    }
10403                }
10404            }
10405        }
10406        impl commissionTrackingReturn {
10407            fn _tokenize(
10408                &self,
10409            ) -> <commissionTrackingCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10410                (
10411                    <alloy::sol_types::sol_data::Uint<
10412                        16,
10413                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10414                    <alloy::sol_types::sol_data::Uint<
10415                        256,
10416                    > as alloy_sol_types::SolType>::tokenize(&self.lastIncreaseTime),
10417                )
10418            }
10419        }
10420        #[automatically_derived]
10421        impl alloy_sol_types::SolCall for commissionTrackingCall {
10422            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10423            type Token<'a> = <Self::Parameters<
10424                'a,
10425            > as alloy_sol_types::SolType>::Token<'a>;
10426            type Return = commissionTrackingReturn;
10427            type ReturnTuple<'a> = (
10428                alloy::sol_types::sol_data::Uint<16>,
10429                alloy::sol_types::sol_data::Uint<256>,
10430            );
10431            type ReturnToken<'a> = <Self::ReturnTuple<
10432                'a,
10433            > as alloy_sol_types::SolType>::Token<'a>;
10434            const SIGNATURE: &'static str = "commissionTracking(address)";
10435            const SELECTOR: [u8; 4] = [159u8, 251u8, 107u8, 67u8];
10436            #[inline]
10437            fn new<'a>(
10438                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10439            ) -> Self {
10440                tuple.into()
10441            }
10442            #[inline]
10443            fn tokenize(&self) -> Self::Token<'_> {
10444                (
10445                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10446                        &self.validator,
10447                    ),
10448                )
10449            }
10450            #[inline]
10451            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10452                commissionTrackingReturn::_tokenize(ret)
10453            }
10454            #[inline]
10455            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10456                <Self::ReturnTuple<
10457                    '_,
10458                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10459                    .map(Into::into)
10460            }
10461            #[inline]
10462            fn abi_decode_returns_validate(
10463                data: &[u8],
10464            ) -> alloy_sol_types::Result<Self::Return> {
10465                <Self::ReturnTuple<
10466                    '_,
10467                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10468                    .map(Into::into)
10469            }
10470        }
10471    };
10472    #[derive(serde::Serialize, serde::Deserialize)]
10473    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10474    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
10475```solidity
10476function delegate(address validator, uint256 amount) external;
10477```*/
10478    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10479    #[derive(Clone)]
10480    pub struct delegateCall {
10481        #[allow(missing_docs)]
10482        pub validator: alloy::sol_types::private::Address,
10483        #[allow(missing_docs)]
10484        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10485    }
10486    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
10487    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10488    #[derive(Clone)]
10489    pub struct delegateReturn {}
10490    #[allow(
10491        non_camel_case_types,
10492        non_snake_case,
10493        clippy::pub_underscore_fields,
10494        clippy::style
10495    )]
10496    const _: () = {
10497        use alloy::sol_types as alloy_sol_types;
10498        {
10499            #[doc(hidden)]
10500            #[allow(dead_code)]
10501            type UnderlyingSolTuple<'a> = (
10502                alloy::sol_types::sol_data::Address,
10503                alloy::sol_types::sol_data::Uint<256>,
10504            );
10505            #[doc(hidden)]
10506            type UnderlyingRustTuple<'a> = (
10507                alloy::sol_types::private::Address,
10508                alloy::sol_types::private::primitives::aliases::U256,
10509            );
10510            #[cfg(test)]
10511            #[allow(dead_code, unreachable_patterns)]
10512            fn _type_assertion(
10513                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10514            ) {
10515                match _t {
10516                    alloy_sol_types::private::AssertTypeEq::<
10517                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10518                    >(_) => {}
10519                }
10520            }
10521            #[automatically_derived]
10522            #[doc(hidden)]
10523            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
10524                fn from(value: delegateCall) -> Self {
10525                    (value.validator, value.amount)
10526                }
10527            }
10528            #[automatically_derived]
10529            #[doc(hidden)]
10530            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
10531                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10532                    Self {
10533                        validator: tuple.0,
10534                        amount: tuple.1,
10535                    }
10536                }
10537            }
10538        }
10539        {
10540            #[doc(hidden)]
10541            #[allow(dead_code)]
10542            type UnderlyingSolTuple<'a> = ();
10543            #[doc(hidden)]
10544            type UnderlyingRustTuple<'a> = ();
10545            #[cfg(test)]
10546            #[allow(dead_code, unreachable_patterns)]
10547            fn _type_assertion(
10548                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10549            ) {
10550                match _t {
10551                    alloy_sol_types::private::AssertTypeEq::<
10552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10553                    >(_) => {}
10554                }
10555            }
10556            #[automatically_derived]
10557            #[doc(hidden)]
10558            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
10559                fn from(value: delegateReturn) -> Self {
10560                    ()
10561                }
10562            }
10563            #[automatically_derived]
10564            #[doc(hidden)]
10565            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
10566                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10567                    Self {}
10568                }
10569            }
10570        }
10571        impl delegateReturn {
10572            fn _tokenize(
10573                &self,
10574            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10575                ()
10576            }
10577        }
10578        #[automatically_derived]
10579        impl alloy_sol_types::SolCall for delegateCall {
10580            type Parameters<'a> = (
10581                alloy::sol_types::sol_data::Address,
10582                alloy::sol_types::sol_data::Uint<256>,
10583            );
10584            type Token<'a> = <Self::Parameters<
10585                'a,
10586            > as alloy_sol_types::SolType>::Token<'a>;
10587            type Return = delegateReturn;
10588            type ReturnTuple<'a> = ();
10589            type ReturnToken<'a> = <Self::ReturnTuple<
10590                'a,
10591            > as alloy_sol_types::SolType>::Token<'a>;
10592            const SIGNATURE: &'static str = "delegate(address,uint256)";
10593            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
10594            #[inline]
10595            fn new<'a>(
10596                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10597            ) -> Self {
10598                tuple.into()
10599            }
10600            #[inline]
10601            fn tokenize(&self) -> Self::Token<'_> {
10602                (
10603                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10604                        &self.validator,
10605                    ),
10606                    <alloy::sol_types::sol_data::Uint<
10607                        256,
10608                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10609                )
10610            }
10611            #[inline]
10612            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10613                delegateReturn::_tokenize(ret)
10614            }
10615            #[inline]
10616            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10617                <Self::ReturnTuple<
10618                    '_,
10619                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10620                    .map(Into::into)
10621            }
10622            #[inline]
10623            fn abi_decode_returns_validate(
10624                data: &[u8],
10625            ) -> alloy_sol_types::Result<Self::Return> {
10626                <Self::ReturnTuple<
10627                    '_,
10628                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10629                    .map(Into::into)
10630            }
10631        }
10632    };
10633    #[derive(serde::Serialize, serde::Deserialize)]
10634    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10635    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
10636```solidity
10637function delegations(address validator, address delegator) external view returns (uint256 amount);
10638```*/
10639    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10640    #[derive(Clone)]
10641    pub struct delegationsCall {
10642        #[allow(missing_docs)]
10643        pub validator: alloy::sol_types::private::Address,
10644        #[allow(missing_docs)]
10645        pub delegator: alloy::sol_types::private::Address,
10646    }
10647    #[derive(serde::Serialize, serde::Deserialize)]
10648    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10649    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
10650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10651    #[derive(Clone)]
10652    pub struct delegationsReturn {
10653        #[allow(missing_docs)]
10654        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10655    }
10656    #[allow(
10657        non_camel_case_types,
10658        non_snake_case,
10659        clippy::pub_underscore_fields,
10660        clippy::style
10661    )]
10662    const _: () = {
10663        use alloy::sol_types as alloy_sol_types;
10664        {
10665            #[doc(hidden)]
10666            #[allow(dead_code)]
10667            type UnderlyingSolTuple<'a> = (
10668                alloy::sol_types::sol_data::Address,
10669                alloy::sol_types::sol_data::Address,
10670            );
10671            #[doc(hidden)]
10672            type UnderlyingRustTuple<'a> = (
10673                alloy::sol_types::private::Address,
10674                alloy::sol_types::private::Address,
10675            );
10676            #[cfg(test)]
10677            #[allow(dead_code, unreachable_patterns)]
10678            fn _type_assertion(
10679                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10680            ) {
10681                match _t {
10682                    alloy_sol_types::private::AssertTypeEq::<
10683                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10684                    >(_) => {}
10685                }
10686            }
10687            #[automatically_derived]
10688            #[doc(hidden)]
10689            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
10690                fn from(value: delegationsCall) -> Self {
10691                    (value.validator, value.delegator)
10692                }
10693            }
10694            #[automatically_derived]
10695            #[doc(hidden)]
10696            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
10697                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10698                    Self {
10699                        validator: tuple.0,
10700                        delegator: tuple.1,
10701                    }
10702                }
10703            }
10704        }
10705        {
10706            #[doc(hidden)]
10707            #[allow(dead_code)]
10708            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10709            #[doc(hidden)]
10710            type UnderlyingRustTuple<'a> = (
10711                alloy::sol_types::private::primitives::aliases::U256,
10712            );
10713            #[cfg(test)]
10714            #[allow(dead_code, unreachable_patterns)]
10715            fn _type_assertion(
10716                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10717            ) {
10718                match _t {
10719                    alloy_sol_types::private::AssertTypeEq::<
10720                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10721                    >(_) => {}
10722                }
10723            }
10724            #[automatically_derived]
10725            #[doc(hidden)]
10726            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
10727                fn from(value: delegationsReturn) -> Self {
10728                    (value.amount,)
10729                }
10730            }
10731            #[automatically_derived]
10732            #[doc(hidden)]
10733            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
10734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10735                    Self { amount: tuple.0 }
10736                }
10737            }
10738        }
10739        #[automatically_derived]
10740        impl alloy_sol_types::SolCall for delegationsCall {
10741            type Parameters<'a> = (
10742                alloy::sol_types::sol_data::Address,
10743                alloy::sol_types::sol_data::Address,
10744            );
10745            type Token<'a> = <Self::Parameters<
10746                'a,
10747            > as alloy_sol_types::SolType>::Token<'a>;
10748            type Return = alloy::sol_types::private::primitives::aliases::U256;
10749            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10750            type ReturnToken<'a> = <Self::ReturnTuple<
10751                'a,
10752            > as alloy_sol_types::SolType>::Token<'a>;
10753            const SIGNATURE: &'static str = "delegations(address,address)";
10754            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
10755            #[inline]
10756            fn new<'a>(
10757                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10758            ) -> Self {
10759                tuple.into()
10760            }
10761            #[inline]
10762            fn tokenize(&self) -> Self::Token<'_> {
10763                (
10764                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10765                        &self.validator,
10766                    ),
10767                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10768                        &self.delegator,
10769                    ),
10770                )
10771            }
10772            #[inline]
10773            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10774                (
10775                    <alloy::sol_types::sol_data::Uint<
10776                        256,
10777                    > as alloy_sol_types::SolType>::tokenize(ret),
10778                )
10779            }
10780            #[inline]
10781            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10782                <Self::ReturnTuple<
10783                    '_,
10784                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10785                    .map(|r| {
10786                        let r: delegationsReturn = r.into();
10787                        r.amount
10788                    })
10789            }
10790            #[inline]
10791            fn abi_decode_returns_validate(
10792                data: &[u8],
10793            ) -> alloy_sol_types::Result<Self::Return> {
10794                <Self::ReturnTuple<
10795                    '_,
10796                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10797                    .map(|r| {
10798                        let r: delegationsReturn = r.into();
10799                        r.amount
10800                    })
10801            }
10802        }
10803    };
10804    #[derive(serde::Serialize, serde::Deserialize)]
10805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10806    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
10807```solidity
10808function deregisterValidator() external;
10809```*/
10810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10811    #[derive(Clone)]
10812    pub struct deregisterValidatorCall;
10813    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
10814    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10815    #[derive(Clone)]
10816    pub struct deregisterValidatorReturn {}
10817    #[allow(
10818        non_camel_case_types,
10819        non_snake_case,
10820        clippy::pub_underscore_fields,
10821        clippy::style
10822    )]
10823    const _: () = {
10824        use alloy::sol_types as alloy_sol_types;
10825        {
10826            #[doc(hidden)]
10827            #[allow(dead_code)]
10828            type UnderlyingSolTuple<'a> = ();
10829            #[doc(hidden)]
10830            type UnderlyingRustTuple<'a> = ();
10831            #[cfg(test)]
10832            #[allow(dead_code, unreachable_patterns)]
10833            fn _type_assertion(
10834                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10835            ) {
10836                match _t {
10837                    alloy_sol_types::private::AssertTypeEq::<
10838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10839                    >(_) => {}
10840                }
10841            }
10842            #[automatically_derived]
10843            #[doc(hidden)]
10844            impl ::core::convert::From<deregisterValidatorCall>
10845            for UnderlyingRustTuple<'_> {
10846                fn from(value: deregisterValidatorCall) -> Self {
10847                    ()
10848                }
10849            }
10850            #[automatically_derived]
10851            #[doc(hidden)]
10852            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10853            for deregisterValidatorCall {
10854                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10855                    Self
10856                }
10857            }
10858        }
10859        {
10860            #[doc(hidden)]
10861            #[allow(dead_code)]
10862            type UnderlyingSolTuple<'a> = ();
10863            #[doc(hidden)]
10864            type UnderlyingRustTuple<'a> = ();
10865            #[cfg(test)]
10866            #[allow(dead_code, unreachable_patterns)]
10867            fn _type_assertion(
10868                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10869            ) {
10870                match _t {
10871                    alloy_sol_types::private::AssertTypeEq::<
10872                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10873                    >(_) => {}
10874                }
10875            }
10876            #[automatically_derived]
10877            #[doc(hidden)]
10878            impl ::core::convert::From<deregisterValidatorReturn>
10879            for UnderlyingRustTuple<'_> {
10880                fn from(value: deregisterValidatorReturn) -> Self {
10881                    ()
10882                }
10883            }
10884            #[automatically_derived]
10885            #[doc(hidden)]
10886            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10887            for deregisterValidatorReturn {
10888                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10889                    Self {}
10890                }
10891            }
10892        }
10893        impl deregisterValidatorReturn {
10894            fn _tokenize(
10895                &self,
10896            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10897                ()
10898            }
10899        }
10900        #[automatically_derived]
10901        impl alloy_sol_types::SolCall for deregisterValidatorCall {
10902            type Parameters<'a> = ();
10903            type Token<'a> = <Self::Parameters<
10904                'a,
10905            > as alloy_sol_types::SolType>::Token<'a>;
10906            type Return = deregisterValidatorReturn;
10907            type ReturnTuple<'a> = ();
10908            type ReturnToken<'a> = <Self::ReturnTuple<
10909                'a,
10910            > as alloy_sol_types::SolType>::Token<'a>;
10911            const SIGNATURE: &'static str = "deregisterValidator()";
10912            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
10913            #[inline]
10914            fn new<'a>(
10915                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10916            ) -> Self {
10917                tuple.into()
10918            }
10919            #[inline]
10920            fn tokenize(&self) -> Self::Token<'_> {
10921                ()
10922            }
10923            #[inline]
10924            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10925                deregisterValidatorReturn::_tokenize(ret)
10926            }
10927            #[inline]
10928            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10929                <Self::ReturnTuple<
10930                    '_,
10931                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10932                    .map(Into::into)
10933            }
10934            #[inline]
10935            fn abi_decode_returns_validate(
10936                data: &[u8],
10937            ) -> alloy_sol_types::Result<Self::Return> {
10938                <Self::ReturnTuple<
10939                    '_,
10940                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10941                    .map(Into::into)
10942            }
10943        }
10944    };
10945    #[derive(serde::Serialize, serde::Deserialize)]
10946    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10947    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
10948```solidity
10949function exitEscrowPeriod() external view returns (uint256);
10950```*/
10951    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10952    #[derive(Clone)]
10953    pub struct exitEscrowPeriodCall;
10954    #[derive(serde::Serialize, serde::Deserialize)]
10955    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10956    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
10957    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10958    #[derive(Clone)]
10959    pub struct exitEscrowPeriodReturn {
10960        #[allow(missing_docs)]
10961        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10962    }
10963    #[allow(
10964        non_camel_case_types,
10965        non_snake_case,
10966        clippy::pub_underscore_fields,
10967        clippy::style
10968    )]
10969    const _: () = {
10970        use alloy::sol_types as alloy_sol_types;
10971        {
10972            #[doc(hidden)]
10973            #[allow(dead_code)]
10974            type UnderlyingSolTuple<'a> = ();
10975            #[doc(hidden)]
10976            type UnderlyingRustTuple<'a> = ();
10977            #[cfg(test)]
10978            #[allow(dead_code, unreachable_patterns)]
10979            fn _type_assertion(
10980                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10981            ) {
10982                match _t {
10983                    alloy_sol_types::private::AssertTypeEq::<
10984                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10985                    >(_) => {}
10986                }
10987            }
10988            #[automatically_derived]
10989            #[doc(hidden)]
10990            impl ::core::convert::From<exitEscrowPeriodCall>
10991            for UnderlyingRustTuple<'_> {
10992                fn from(value: exitEscrowPeriodCall) -> Self {
10993                    ()
10994                }
10995            }
10996            #[automatically_derived]
10997            #[doc(hidden)]
10998            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10999            for exitEscrowPeriodCall {
11000                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11001                    Self
11002                }
11003            }
11004        }
11005        {
11006            #[doc(hidden)]
11007            #[allow(dead_code)]
11008            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11009            #[doc(hidden)]
11010            type UnderlyingRustTuple<'a> = (
11011                alloy::sol_types::private::primitives::aliases::U256,
11012            );
11013            #[cfg(test)]
11014            #[allow(dead_code, unreachable_patterns)]
11015            fn _type_assertion(
11016                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11017            ) {
11018                match _t {
11019                    alloy_sol_types::private::AssertTypeEq::<
11020                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11021                    >(_) => {}
11022                }
11023            }
11024            #[automatically_derived]
11025            #[doc(hidden)]
11026            impl ::core::convert::From<exitEscrowPeriodReturn>
11027            for UnderlyingRustTuple<'_> {
11028                fn from(value: exitEscrowPeriodReturn) -> Self {
11029                    (value._0,)
11030                }
11031            }
11032            #[automatically_derived]
11033            #[doc(hidden)]
11034            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11035            for exitEscrowPeriodReturn {
11036                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11037                    Self { _0: tuple.0 }
11038                }
11039            }
11040        }
11041        #[automatically_derived]
11042        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
11043            type Parameters<'a> = ();
11044            type Token<'a> = <Self::Parameters<
11045                'a,
11046            > as alloy_sol_types::SolType>::Token<'a>;
11047            type Return = alloy::sol_types::private::primitives::aliases::U256;
11048            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11049            type ReturnToken<'a> = <Self::ReturnTuple<
11050                'a,
11051            > as alloy_sol_types::SolType>::Token<'a>;
11052            const SIGNATURE: &'static str = "exitEscrowPeriod()";
11053            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
11054            #[inline]
11055            fn new<'a>(
11056                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11057            ) -> Self {
11058                tuple.into()
11059            }
11060            #[inline]
11061            fn tokenize(&self) -> Self::Token<'_> {
11062                ()
11063            }
11064            #[inline]
11065            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11066                (
11067                    <alloy::sol_types::sol_data::Uint<
11068                        256,
11069                    > as alloy_sol_types::SolType>::tokenize(ret),
11070                )
11071            }
11072            #[inline]
11073            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11074                <Self::ReturnTuple<
11075                    '_,
11076                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11077                    .map(|r| {
11078                        let r: exitEscrowPeriodReturn = r.into();
11079                        r._0
11080                    })
11081            }
11082            #[inline]
11083            fn abi_decode_returns_validate(
11084                data: &[u8],
11085            ) -> alloy_sol_types::Result<Self::Return> {
11086                <Self::ReturnTuple<
11087                    '_,
11088                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11089                    .map(|r| {
11090                        let r: exitEscrowPeriodReturn = r.into();
11091                        r._0
11092                    })
11093            }
11094        }
11095    };
11096    #[derive(serde::Serialize, serde::Deserialize)]
11097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11098    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
11099```solidity
11100function getRoleAdmin(bytes32 role) external view returns (bytes32);
11101```*/
11102    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11103    #[derive(Clone)]
11104    pub struct getRoleAdminCall {
11105        #[allow(missing_docs)]
11106        pub role: alloy::sol_types::private::FixedBytes<32>,
11107    }
11108    #[derive(serde::Serialize, serde::Deserialize)]
11109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11110    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
11111    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11112    #[derive(Clone)]
11113    pub struct getRoleAdminReturn {
11114        #[allow(missing_docs)]
11115        pub _0: alloy::sol_types::private::FixedBytes<32>,
11116    }
11117    #[allow(
11118        non_camel_case_types,
11119        non_snake_case,
11120        clippy::pub_underscore_fields,
11121        clippy::style
11122    )]
11123    const _: () = {
11124        use alloy::sol_types as alloy_sol_types;
11125        {
11126            #[doc(hidden)]
11127            #[allow(dead_code)]
11128            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11129            #[doc(hidden)]
11130            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11131            #[cfg(test)]
11132            #[allow(dead_code, unreachable_patterns)]
11133            fn _type_assertion(
11134                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11135            ) {
11136                match _t {
11137                    alloy_sol_types::private::AssertTypeEq::<
11138                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11139                    >(_) => {}
11140                }
11141            }
11142            #[automatically_derived]
11143            #[doc(hidden)]
11144            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
11145                fn from(value: getRoleAdminCall) -> Self {
11146                    (value.role,)
11147                }
11148            }
11149            #[automatically_derived]
11150            #[doc(hidden)]
11151            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
11152                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11153                    Self { role: tuple.0 }
11154                }
11155            }
11156        }
11157        {
11158            #[doc(hidden)]
11159            #[allow(dead_code)]
11160            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11161            #[doc(hidden)]
11162            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11163            #[cfg(test)]
11164            #[allow(dead_code, unreachable_patterns)]
11165            fn _type_assertion(
11166                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11167            ) {
11168                match _t {
11169                    alloy_sol_types::private::AssertTypeEq::<
11170                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11171                    >(_) => {}
11172                }
11173            }
11174            #[automatically_derived]
11175            #[doc(hidden)]
11176            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
11177                fn from(value: getRoleAdminReturn) -> Self {
11178                    (value._0,)
11179                }
11180            }
11181            #[automatically_derived]
11182            #[doc(hidden)]
11183            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
11184                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11185                    Self { _0: tuple.0 }
11186                }
11187            }
11188        }
11189        #[automatically_derived]
11190        impl alloy_sol_types::SolCall for getRoleAdminCall {
11191            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11192            type Token<'a> = <Self::Parameters<
11193                'a,
11194            > as alloy_sol_types::SolType>::Token<'a>;
11195            type Return = alloy::sol_types::private::FixedBytes<32>;
11196            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11197            type ReturnToken<'a> = <Self::ReturnTuple<
11198                'a,
11199            > as alloy_sol_types::SolType>::Token<'a>;
11200            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
11201            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
11202            #[inline]
11203            fn new<'a>(
11204                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11205            ) -> Self {
11206                tuple.into()
11207            }
11208            #[inline]
11209            fn tokenize(&self) -> Self::Token<'_> {
11210                (
11211                    <alloy::sol_types::sol_data::FixedBytes<
11212                        32,
11213                    > as alloy_sol_types::SolType>::tokenize(&self.role),
11214                )
11215            }
11216            #[inline]
11217            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11218                (
11219                    <alloy::sol_types::sol_data::FixedBytes<
11220                        32,
11221                    > as alloy_sol_types::SolType>::tokenize(ret),
11222                )
11223            }
11224            #[inline]
11225            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11226                <Self::ReturnTuple<
11227                    '_,
11228                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11229                    .map(|r| {
11230                        let r: getRoleAdminReturn = r.into();
11231                        r._0
11232                    })
11233            }
11234            #[inline]
11235            fn abi_decode_returns_validate(
11236                data: &[u8],
11237            ) -> alloy_sol_types::Result<Self::Return> {
11238                <Self::ReturnTuple<
11239                    '_,
11240                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11241                    .map(|r| {
11242                        let r: getRoleAdminReturn = r.into();
11243                        r._0
11244                    })
11245            }
11246        }
11247    };
11248    #[derive(serde::Serialize, serde::Deserialize)]
11249    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11250    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
11251```solidity
11252function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
11253```*/
11254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11255    #[derive(Clone)]
11256    pub struct getVersionCall;
11257    #[derive(serde::Serialize, serde::Deserialize)]
11258    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11259    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
11260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11261    #[derive(Clone)]
11262    pub struct getVersionReturn {
11263        #[allow(missing_docs)]
11264        pub majorVersion: u8,
11265        #[allow(missing_docs)]
11266        pub minorVersion: u8,
11267        #[allow(missing_docs)]
11268        pub patchVersion: u8,
11269    }
11270    #[allow(
11271        non_camel_case_types,
11272        non_snake_case,
11273        clippy::pub_underscore_fields,
11274        clippy::style
11275    )]
11276    const _: () = {
11277        use alloy::sol_types as alloy_sol_types;
11278        {
11279            #[doc(hidden)]
11280            #[allow(dead_code)]
11281            type UnderlyingSolTuple<'a> = ();
11282            #[doc(hidden)]
11283            type UnderlyingRustTuple<'a> = ();
11284            #[cfg(test)]
11285            #[allow(dead_code, unreachable_patterns)]
11286            fn _type_assertion(
11287                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11288            ) {
11289                match _t {
11290                    alloy_sol_types::private::AssertTypeEq::<
11291                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11292                    >(_) => {}
11293                }
11294            }
11295            #[automatically_derived]
11296            #[doc(hidden)]
11297            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
11298                fn from(value: getVersionCall) -> Self {
11299                    ()
11300                }
11301            }
11302            #[automatically_derived]
11303            #[doc(hidden)]
11304            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
11305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11306                    Self
11307                }
11308            }
11309        }
11310        {
11311            #[doc(hidden)]
11312            #[allow(dead_code)]
11313            type UnderlyingSolTuple<'a> = (
11314                alloy::sol_types::sol_data::Uint<8>,
11315                alloy::sol_types::sol_data::Uint<8>,
11316                alloy::sol_types::sol_data::Uint<8>,
11317            );
11318            #[doc(hidden)]
11319            type UnderlyingRustTuple<'a> = (u8, u8, u8);
11320            #[cfg(test)]
11321            #[allow(dead_code, unreachable_patterns)]
11322            fn _type_assertion(
11323                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11324            ) {
11325                match _t {
11326                    alloy_sol_types::private::AssertTypeEq::<
11327                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11328                    >(_) => {}
11329                }
11330            }
11331            #[automatically_derived]
11332            #[doc(hidden)]
11333            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
11334                fn from(value: getVersionReturn) -> Self {
11335                    (value.majorVersion, value.minorVersion, value.patchVersion)
11336                }
11337            }
11338            #[automatically_derived]
11339            #[doc(hidden)]
11340            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
11341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11342                    Self {
11343                        majorVersion: tuple.0,
11344                        minorVersion: tuple.1,
11345                        patchVersion: tuple.2,
11346                    }
11347                }
11348            }
11349        }
11350        impl getVersionReturn {
11351            fn _tokenize(
11352                &self,
11353            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11354                (
11355                    <alloy::sol_types::sol_data::Uint<
11356                        8,
11357                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
11358                    <alloy::sol_types::sol_data::Uint<
11359                        8,
11360                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
11361                    <alloy::sol_types::sol_data::Uint<
11362                        8,
11363                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
11364                )
11365            }
11366        }
11367        #[automatically_derived]
11368        impl alloy_sol_types::SolCall for getVersionCall {
11369            type Parameters<'a> = ();
11370            type Token<'a> = <Self::Parameters<
11371                'a,
11372            > as alloy_sol_types::SolType>::Token<'a>;
11373            type Return = getVersionReturn;
11374            type ReturnTuple<'a> = (
11375                alloy::sol_types::sol_data::Uint<8>,
11376                alloy::sol_types::sol_data::Uint<8>,
11377                alloy::sol_types::sol_data::Uint<8>,
11378            );
11379            type ReturnToken<'a> = <Self::ReturnTuple<
11380                'a,
11381            > as alloy_sol_types::SolType>::Token<'a>;
11382            const SIGNATURE: &'static str = "getVersion()";
11383            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
11384            #[inline]
11385            fn new<'a>(
11386                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11387            ) -> Self {
11388                tuple.into()
11389            }
11390            #[inline]
11391            fn tokenize(&self) -> Self::Token<'_> {
11392                ()
11393            }
11394            #[inline]
11395            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11396                getVersionReturn::_tokenize(ret)
11397            }
11398            #[inline]
11399            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11400                <Self::ReturnTuple<
11401                    '_,
11402                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11403                    .map(Into::into)
11404            }
11405            #[inline]
11406            fn abi_decode_returns_validate(
11407                data: &[u8],
11408            ) -> alloy_sol_types::Result<Self::Return> {
11409                <Self::ReturnTuple<
11410                    '_,
11411                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11412                    .map(Into::into)
11413            }
11414        }
11415    };
11416    #[derive(serde::Serialize, serde::Deserialize)]
11417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11418    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
11419```solidity
11420function grantRole(bytes32 role, address account) external;
11421```*/
11422    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11423    #[derive(Clone)]
11424    pub struct grantRoleCall {
11425        #[allow(missing_docs)]
11426        pub role: alloy::sol_types::private::FixedBytes<32>,
11427        #[allow(missing_docs)]
11428        pub account: alloy::sol_types::private::Address,
11429    }
11430    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
11431    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11432    #[derive(Clone)]
11433    pub struct grantRoleReturn {}
11434    #[allow(
11435        non_camel_case_types,
11436        non_snake_case,
11437        clippy::pub_underscore_fields,
11438        clippy::style
11439    )]
11440    const _: () = {
11441        use alloy::sol_types as alloy_sol_types;
11442        {
11443            #[doc(hidden)]
11444            #[allow(dead_code)]
11445            type UnderlyingSolTuple<'a> = (
11446                alloy::sol_types::sol_data::FixedBytes<32>,
11447                alloy::sol_types::sol_data::Address,
11448            );
11449            #[doc(hidden)]
11450            type UnderlyingRustTuple<'a> = (
11451                alloy::sol_types::private::FixedBytes<32>,
11452                alloy::sol_types::private::Address,
11453            );
11454            #[cfg(test)]
11455            #[allow(dead_code, unreachable_patterns)]
11456            fn _type_assertion(
11457                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11458            ) {
11459                match _t {
11460                    alloy_sol_types::private::AssertTypeEq::<
11461                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11462                    >(_) => {}
11463                }
11464            }
11465            #[automatically_derived]
11466            #[doc(hidden)]
11467            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
11468                fn from(value: grantRoleCall) -> Self {
11469                    (value.role, value.account)
11470                }
11471            }
11472            #[automatically_derived]
11473            #[doc(hidden)]
11474            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
11475                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11476                    Self {
11477                        role: tuple.0,
11478                        account: tuple.1,
11479                    }
11480                }
11481            }
11482        }
11483        {
11484            #[doc(hidden)]
11485            #[allow(dead_code)]
11486            type UnderlyingSolTuple<'a> = ();
11487            #[doc(hidden)]
11488            type UnderlyingRustTuple<'a> = ();
11489            #[cfg(test)]
11490            #[allow(dead_code, unreachable_patterns)]
11491            fn _type_assertion(
11492                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11493            ) {
11494                match _t {
11495                    alloy_sol_types::private::AssertTypeEq::<
11496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11497                    >(_) => {}
11498                }
11499            }
11500            #[automatically_derived]
11501            #[doc(hidden)]
11502            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
11503                fn from(value: grantRoleReturn) -> Self {
11504                    ()
11505                }
11506            }
11507            #[automatically_derived]
11508            #[doc(hidden)]
11509            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
11510                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11511                    Self {}
11512                }
11513            }
11514        }
11515        impl grantRoleReturn {
11516            fn _tokenize(
11517                &self,
11518            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11519                ()
11520            }
11521        }
11522        #[automatically_derived]
11523        impl alloy_sol_types::SolCall for grantRoleCall {
11524            type Parameters<'a> = (
11525                alloy::sol_types::sol_data::FixedBytes<32>,
11526                alloy::sol_types::sol_data::Address,
11527            );
11528            type Token<'a> = <Self::Parameters<
11529                'a,
11530            > as alloy_sol_types::SolType>::Token<'a>;
11531            type Return = grantRoleReturn;
11532            type ReturnTuple<'a> = ();
11533            type ReturnToken<'a> = <Self::ReturnTuple<
11534                'a,
11535            > as alloy_sol_types::SolType>::Token<'a>;
11536            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
11537            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
11538            #[inline]
11539            fn new<'a>(
11540                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11541            ) -> Self {
11542                tuple.into()
11543            }
11544            #[inline]
11545            fn tokenize(&self) -> Self::Token<'_> {
11546                (
11547                    <alloy::sol_types::sol_data::FixedBytes<
11548                        32,
11549                    > as alloy_sol_types::SolType>::tokenize(&self.role),
11550                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11551                        &self.account,
11552                    ),
11553                )
11554            }
11555            #[inline]
11556            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11557                grantRoleReturn::_tokenize(ret)
11558            }
11559            #[inline]
11560            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11561                <Self::ReturnTuple<
11562                    '_,
11563                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11564                    .map(Into::into)
11565            }
11566            #[inline]
11567            fn abi_decode_returns_validate(
11568                data: &[u8],
11569            ) -> alloy_sol_types::Result<Self::Return> {
11570                <Self::ReturnTuple<
11571                    '_,
11572                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11573                    .map(Into::into)
11574            }
11575        }
11576    };
11577    #[derive(serde::Serialize, serde::Deserialize)]
11578    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11579    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
11580```solidity
11581function hasRole(bytes32 role, address account) external view returns (bool);
11582```*/
11583    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11584    #[derive(Clone)]
11585    pub struct hasRoleCall {
11586        #[allow(missing_docs)]
11587        pub role: alloy::sol_types::private::FixedBytes<32>,
11588        #[allow(missing_docs)]
11589        pub account: alloy::sol_types::private::Address,
11590    }
11591    #[derive(serde::Serialize, serde::Deserialize)]
11592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11593    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
11594    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11595    #[derive(Clone)]
11596    pub struct hasRoleReturn {
11597        #[allow(missing_docs)]
11598        pub _0: bool,
11599    }
11600    #[allow(
11601        non_camel_case_types,
11602        non_snake_case,
11603        clippy::pub_underscore_fields,
11604        clippy::style
11605    )]
11606    const _: () = {
11607        use alloy::sol_types as alloy_sol_types;
11608        {
11609            #[doc(hidden)]
11610            #[allow(dead_code)]
11611            type UnderlyingSolTuple<'a> = (
11612                alloy::sol_types::sol_data::FixedBytes<32>,
11613                alloy::sol_types::sol_data::Address,
11614            );
11615            #[doc(hidden)]
11616            type UnderlyingRustTuple<'a> = (
11617                alloy::sol_types::private::FixedBytes<32>,
11618                alloy::sol_types::private::Address,
11619            );
11620            #[cfg(test)]
11621            #[allow(dead_code, unreachable_patterns)]
11622            fn _type_assertion(
11623                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11624            ) {
11625                match _t {
11626                    alloy_sol_types::private::AssertTypeEq::<
11627                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11628                    >(_) => {}
11629                }
11630            }
11631            #[automatically_derived]
11632            #[doc(hidden)]
11633            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
11634                fn from(value: hasRoleCall) -> Self {
11635                    (value.role, value.account)
11636                }
11637            }
11638            #[automatically_derived]
11639            #[doc(hidden)]
11640            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
11641                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11642                    Self {
11643                        role: tuple.0,
11644                        account: tuple.1,
11645                    }
11646                }
11647            }
11648        }
11649        {
11650            #[doc(hidden)]
11651            #[allow(dead_code)]
11652            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11653            #[doc(hidden)]
11654            type UnderlyingRustTuple<'a> = (bool,);
11655            #[cfg(test)]
11656            #[allow(dead_code, unreachable_patterns)]
11657            fn _type_assertion(
11658                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11659            ) {
11660                match _t {
11661                    alloy_sol_types::private::AssertTypeEq::<
11662                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11663                    >(_) => {}
11664                }
11665            }
11666            #[automatically_derived]
11667            #[doc(hidden)]
11668            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
11669                fn from(value: hasRoleReturn) -> Self {
11670                    (value._0,)
11671                }
11672            }
11673            #[automatically_derived]
11674            #[doc(hidden)]
11675            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
11676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11677                    Self { _0: tuple.0 }
11678                }
11679            }
11680        }
11681        #[automatically_derived]
11682        impl alloy_sol_types::SolCall for hasRoleCall {
11683            type Parameters<'a> = (
11684                alloy::sol_types::sol_data::FixedBytes<32>,
11685                alloy::sol_types::sol_data::Address,
11686            );
11687            type Token<'a> = <Self::Parameters<
11688                'a,
11689            > as alloy_sol_types::SolType>::Token<'a>;
11690            type Return = bool;
11691            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11692            type ReturnToken<'a> = <Self::ReturnTuple<
11693                'a,
11694            > as alloy_sol_types::SolType>::Token<'a>;
11695            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
11696            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
11697            #[inline]
11698            fn new<'a>(
11699                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11700            ) -> Self {
11701                tuple.into()
11702            }
11703            #[inline]
11704            fn tokenize(&self) -> Self::Token<'_> {
11705                (
11706                    <alloy::sol_types::sol_data::FixedBytes<
11707                        32,
11708                    > as alloy_sol_types::SolType>::tokenize(&self.role),
11709                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11710                        &self.account,
11711                    ),
11712                )
11713            }
11714            #[inline]
11715            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11716                (
11717                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11718                        ret,
11719                    ),
11720                )
11721            }
11722            #[inline]
11723            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11724                <Self::ReturnTuple<
11725                    '_,
11726                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11727                    .map(|r| {
11728                        let r: hasRoleReturn = r.into();
11729                        r._0
11730                    })
11731            }
11732            #[inline]
11733            fn abi_decode_returns_validate(
11734                data: &[u8],
11735            ) -> alloy_sol_types::Result<Self::Return> {
11736                <Self::ReturnTuple<
11737                    '_,
11738                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11739                    .map(|r| {
11740                        let r: hasRoleReturn = r.into();
11741                        r._0
11742                    })
11743            }
11744        }
11745    };
11746    #[derive(serde::Serialize, serde::Deserialize)]
11747    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11748    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
11749```solidity
11750function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
11751```*/
11752    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11753    #[derive(Clone)]
11754    pub struct initializeCall {
11755        #[allow(missing_docs)]
11756        pub _tokenAddress: alloy::sol_types::private::Address,
11757        #[allow(missing_docs)]
11758        pub _lightClientAddress: alloy::sol_types::private::Address,
11759        #[allow(missing_docs)]
11760        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
11761        #[allow(missing_docs)]
11762        pub _timelock: alloy::sol_types::private::Address,
11763    }
11764    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
11765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11766    #[derive(Clone)]
11767    pub struct initializeReturn {}
11768    #[allow(
11769        non_camel_case_types,
11770        non_snake_case,
11771        clippy::pub_underscore_fields,
11772        clippy::style
11773    )]
11774    const _: () = {
11775        use alloy::sol_types as alloy_sol_types;
11776        {
11777            #[doc(hidden)]
11778            #[allow(dead_code)]
11779            type UnderlyingSolTuple<'a> = (
11780                alloy::sol_types::sol_data::Address,
11781                alloy::sol_types::sol_data::Address,
11782                alloy::sol_types::sol_data::Uint<256>,
11783                alloy::sol_types::sol_data::Address,
11784            );
11785            #[doc(hidden)]
11786            type UnderlyingRustTuple<'a> = (
11787                alloy::sol_types::private::Address,
11788                alloy::sol_types::private::Address,
11789                alloy::sol_types::private::primitives::aliases::U256,
11790                alloy::sol_types::private::Address,
11791            );
11792            #[cfg(test)]
11793            #[allow(dead_code, unreachable_patterns)]
11794            fn _type_assertion(
11795                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11796            ) {
11797                match _t {
11798                    alloy_sol_types::private::AssertTypeEq::<
11799                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11800                    >(_) => {}
11801                }
11802            }
11803            #[automatically_derived]
11804            #[doc(hidden)]
11805            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
11806                fn from(value: initializeCall) -> Self {
11807                    (
11808                        value._tokenAddress,
11809                        value._lightClientAddress,
11810                        value._exitEscrowPeriod,
11811                        value._timelock,
11812                    )
11813                }
11814            }
11815            #[automatically_derived]
11816            #[doc(hidden)]
11817            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
11818                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11819                    Self {
11820                        _tokenAddress: tuple.0,
11821                        _lightClientAddress: tuple.1,
11822                        _exitEscrowPeriod: tuple.2,
11823                        _timelock: tuple.3,
11824                    }
11825                }
11826            }
11827        }
11828        {
11829            #[doc(hidden)]
11830            #[allow(dead_code)]
11831            type UnderlyingSolTuple<'a> = ();
11832            #[doc(hidden)]
11833            type UnderlyingRustTuple<'a> = ();
11834            #[cfg(test)]
11835            #[allow(dead_code, unreachable_patterns)]
11836            fn _type_assertion(
11837                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11838            ) {
11839                match _t {
11840                    alloy_sol_types::private::AssertTypeEq::<
11841                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11842                    >(_) => {}
11843                }
11844            }
11845            #[automatically_derived]
11846            #[doc(hidden)]
11847            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
11848                fn from(value: initializeReturn) -> Self {
11849                    ()
11850                }
11851            }
11852            #[automatically_derived]
11853            #[doc(hidden)]
11854            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
11855                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11856                    Self {}
11857                }
11858            }
11859        }
11860        impl initializeReturn {
11861            fn _tokenize(
11862                &self,
11863            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11864                ()
11865            }
11866        }
11867        #[automatically_derived]
11868        impl alloy_sol_types::SolCall for initializeCall {
11869            type Parameters<'a> = (
11870                alloy::sol_types::sol_data::Address,
11871                alloy::sol_types::sol_data::Address,
11872                alloy::sol_types::sol_data::Uint<256>,
11873                alloy::sol_types::sol_data::Address,
11874            );
11875            type Token<'a> = <Self::Parameters<
11876                'a,
11877            > as alloy_sol_types::SolType>::Token<'a>;
11878            type Return = initializeReturn;
11879            type ReturnTuple<'a> = ();
11880            type ReturnToken<'a> = <Self::ReturnTuple<
11881                'a,
11882            > as alloy_sol_types::SolType>::Token<'a>;
11883            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
11884            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
11885            #[inline]
11886            fn new<'a>(
11887                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11888            ) -> Self {
11889                tuple.into()
11890            }
11891            #[inline]
11892            fn tokenize(&self) -> Self::Token<'_> {
11893                (
11894                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11895                        &self._tokenAddress,
11896                    ),
11897                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11898                        &self._lightClientAddress,
11899                    ),
11900                    <alloy::sol_types::sol_data::Uint<
11901                        256,
11902                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
11903                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11904                        &self._timelock,
11905                    ),
11906                )
11907            }
11908            #[inline]
11909            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11910                initializeReturn::_tokenize(ret)
11911            }
11912            #[inline]
11913            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11914                <Self::ReturnTuple<
11915                    '_,
11916                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11917                    .map(Into::into)
11918            }
11919            #[inline]
11920            fn abi_decode_returns_validate(
11921                data: &[u8],
11922            ) -> alloy_sol_types::Result<Self::Return> {
11923                <Self::ReturnTuple<
11924                    '_,
11925                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11926                    .map(Into::into)
11927            }
11928        }
11929    };
11930    #[derive(serde::Serialize, serde::Deserialize)]
11931    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11932    /**Function with signature `initializeV2(address,address,(address,uint16)[])` and selector `0xc75f543e`.
11933```solidity
11934function initializeV2(address pauser, address admin, InitialCommission[] memory initialCommissions) external;
11935```*/
11936    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11937    #[derive(Clone)]
11938    pub struct initializeV2Call {
11939        #[allow(missing_docs)]
11940        pub pauser: alloy::sol_types::private::Address,
11941        #[allow(missing_docs)]
11942        pub admin: alloy::sol_types::private::Address,
11943        #[allow(missing_docs)]
11944        pub initialCommissions: alloy::sol_types::private::Vec<
11945            <InitialCommission as alloy::sol_types::SolType>::RustType,
11946        >,
11947    }
11948    ///Container type for the return parameters of the [`initializeV2(address,address,(address,uint16)[])`](initializeV2Call) function.
11949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11950    #[derive(Clone)]
11951    pub struct initializeV2Return {}
11952    #[allow(
11953        non_camel_case_types,
11954        non_snake_case,
11955        clippy::pub_underscore_fields,
11956        clippy::style
11957    )]
11958    const _: () = {
11959        use alloy::sol_types as alloy_sol_types;
11960        {
11961            #[doc(hidden)]
11962            #[allow(dead_code)]
11963            type UnderlyingSolTuple<'a> = (
11964                alloy::sol_types::sol_data::Address,
11965                alloy::sol_types::sol_data::Address,
11966                alloy::sol_types::sol_data::Array<InitialCommission>,
11967            );
11968            #[doc(hidden)]
11969            type UnderlyingRustTuple<'a> = (
11970                alloy::sol_types::private::Address,
11971                alloy::sol_types::private::Address,
11972                alloy::sol_types::private::Vec<
11973                    <InitialCommission as alloy::sol_types::SolType>::RustType,
11974                >,
11975            );
11976            #[cfg(test)]
11977            #[allow(dead_code, unreachable_patterns)]
11978            fn _type_assertion(
11979                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11980            ) {
11981                match _t {
11982                    alloy_sol_types::private::AssertTypeEq::<
11983                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11984                    >(_) => {}
11985                }
11986            }
11987            #[automatically_derived]
11988            #[doc(hidden)]
11989            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
11990                fn from(value: initializeV2Call) -> Self {
11991                    (value.pauser, value.admin, value.initialCommissions)
11992                }
11993            }
11994            #[automatically_derived]
11995            #[doc(hidden)]
11996            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
11997                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11998                    Self {
11999                        pauser: tuple.0,
12000                        admin: tuple.1,
12001                        initialCommissions: tuple.2,
12002                    }
12003                }
12004            }
12005        }
12006        {
12007            #[doc(hidden)]
12008            #[allow(dead_code)]
12009            type UnderlyingSolTuple<'a> = ();
12010            #[doc(hidden)]
12011            type UnderlyingRustTuple<'a> = ();
12012            #[cfg(test)]
12013            #[allow(dead_code, unreachable_patterns)]
12014            fn _type_assertion(
12015                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12016            ) {
12017                match _t {
12018                    alloy_sol_types::private::AssertTypeEq::<
12019                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12020                    >(_) => {}
12021                }
12022            }
12023            #[automatically_derived]
12024            #[doc(hidden)]
12025            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
12026                fn from(value: initializeV2Return) -> Self {
12027                    ()
12028                }
12029            }
12030            #[automatically_derived]
12031            #[doc(hidden)]
12032            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
12033                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12034                    Self {}
12035                }
12036            }
12037        }
12038        impl initializeV2Return {
12039            fn _tokenize(
12040                &self,
12041            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12042                ()
12043            }
12044        }
12045        #[automatically_derived]
12046        impl alloy_sol_types::SolCall for initializeV2Call {
12047            type Parameters<'a> = (
12048                alloy::sol_types::sol_data::Address,
12049                alloy::sol_types::sol_data::Address,
12050                alloy::sol_types::sol_data::Array<InitialCommission>,
12051            );
12052            type Token<'a> = <Self::Parameters<
12053                'a,
12054            > as alloy_sol_types::SolType>::Token<'a>;
12055            type Return = initializeV2Return;
12056            type ReturnTuple<'a> = ();
12057            type ReturnToken<'a> = <Self::ReturnTuple<
12058                'a,
12059            > as alloy_sol_types::SolType>::Token<'a>;
12060            const SIGNATURE: &'static str = "initializeV2(address,address,(address,uint16)[])";
12061            const SELECTOR: [u8; 4] = [199u8, 95u8, 84u8, 62u8];
12062            #[inline]
12063            fn new<'a>(
12064                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12065            ) -> Self {
12066                tuple.into()
12067            }
12068            #[inline]
12069            fn tokenize(&self) -> Self::Token<'_> {
12070                (
12071                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12072                        &self.pauser,
12073                    ),
12074                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12075                        &self.admin,
12076                    ),
12077                    <alloy::sol_types::sol_data::Array<
12078                        InitialCommission,
12079                    > as alloy_sol_types::SolType>::tokenize(&self.initialCommissions),
12080                )
12081            }
12082            #[inline]
12083            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12084                initializeV2Return::_tokenize(ret)
12085            }
12086            #[inline]
12087            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12088                <Self::ReturnTuple<
12089                    '_,
12090                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12091                    .map(Into::into)
12092            }
12093            #[inline]
12094            fn abi_decode_returns_validate(
12095                data: &[u8],
12096            ) -> alloy_sol_types::Result<Self::Return> {
12097                <Self::ReturnTuple<
12098                    '_,
12099                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12100                    .map(Into::into)
12101            }
12102        }
12103    };
12104    #[derive(serde::Serialize, serde::Deserialize)]
12105    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12106    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
12107```solidity
12108function initializedAtBlock() external view returns (uint256);
12109```*/
12110    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12111    #[derive(Clone)]
12112    pub struct initializedAtBlockCall;
12113    #[derive(serde::Serialize, serde::Deserialize)]
12114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12115    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
12116    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12117    #[derive(Clone)]
12118    pub struct initializedAtBlockReturn {
12119        #[allow(missing_docs)]
12120        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12121    }
12122    #[allow(
12123        non_camel_case_types,
12124        non_snake_case,
12125        clippy::pub_underscore_fields,
12126        clippy::style
12127    )]
12128    const _: () = {
12129        use alloy::sol_types as alloy_sol_types;
12130        {
12131            #[doc(hidden)]
12132            #[allow(dead_code)]
12133            type UnderlyingSolTuple<'a> = ();
12134            #[doc(hidden)]
12135            type UnderlyingRustTuple<'a> = ();
12136            #[cfg(test)]
12137            #[allow(dead_code, unreachable_patterns)]
12138            fn _type_assertion(
12139                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12140            ) {
12141                match _t {
12142                    alloy_sol_types::private::AssertTypeEq::<
12143                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12144                    >(_) => {}
12145                }
12146            }
12147            #[automatically_derived]
12148            #[doc(hidden)]
12149            impl ::core::convert::From<initializedAtBlockCall>
12150            for UnderlyingRustTuple<'_> {
12151                fn from(value: initializedAtBlockCall) -> Self {
12152                    ()
12153                }
12154            }
12155            #[automatically_derived]
12156            #[doc(hidden)]
12157            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12158            for initializedAtBlockCall {
12159                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12160                    Self
12161                }
12162            }
12163        }
12164        {
12165            #[doc(hidden)]
12166            #[allow(dead_code)]
12167            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12168            #[doc(hidden)]
12169            type UnderlyingRustTuple<'a> = (
12170                alloy::sol_types::private::primitives::aliases::U256,
12171            );
12172            #[cfg(test)]
12173            #[allow(dead_code, unreachable_patterns)]
12174            fn _type_assertion(
12175                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12176            ) {
12177                match _t {
12178                    alloy_sol_types::private::AssertTypeEq::<
12179                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12180                    >(_) => {}
12181                }
12182            }
12183            #[automatically_derived]
12184            #[doc(hidden)]
12185            impl ::core::convert::From<initializedAtBlockReturn>
12186            for UnderlyingRustTuple<'_> {
12187                fn from(value: initializedAtBlockReturn) -> Self {
12188                    (value._0,)
12189                }
12190            }
12191            #[automatically_derived]
12192            #[doc(hidden)]
12193            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12194            for initializedAtBlockReturn {
12195                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12196                    Self { _0: tuple.0 }
12197                }
12198            }
12199        }
12200        #[automatically_derived]
12201        impl alloy_sol_types::SolCall for initializedAtBlockCall {
12202            type Parameters<'a> = ();
12203            type Token<'a> = <Self::Parameters<
12204                'a,
12205            > as alloy_sol_types::SolType>::Token<'a>;
12206            type Return = alloy::sol_types::private::primitives::aliases::U256;
12207            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12208            type ReturnToken<'a> = <Self::ReturnTuple<
12209                'a,
12210            > as alloy_sol_types::SolType>::Token<'a>;
12211            const SIGNATURE: &'static str = "initializedAtBlock()";
12212            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
12213            #[inline]
12214            fn new<'a>(
12215                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12216            ) -> Self {
12217                tuple.into()
12218            }
12219            #[inline]
12220            fn tokenize(&self) -> Self::Token<'_> {
12221                ()
12222            }
12223            #[inline]
12224            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12225                (
12226                    <alloy::sol_types::sol_data::Uint<
12227                        256,
12228                    > as alloy_sol_types::SolType>::tokenize(ret),
12229                )
12230            }
12231            #[inline]
12232            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12233                <Self::ReturnTuple<
12234                    '_,
12235                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12236                    .map(|r| {
12237                        let r: initializedAtBlockReturn = r.into();
12238                        r._0
12239                    })
12240            }
12241            #[inline]
12242            fn abi_decode_returns_validate(
12243                data: &[u8],
12244            ) -> alloy_sol_types::Result<Self::Return> {
12245                <Self::ReturnTuple<
12246                    '_,
12247                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12248                    .map(|r| {
12249                        let r: initializedAtBlockReturn = r.into();
12250                        r._0
12251                    })
12252            }
12253        }
12254    };
12255    #[derive(serde::Serialize, serde::Deserialize)]
12256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12257    /**Function with signature `lightClient()` and selector `0xb5700e68`.
12258```solidity
12259function lightClient() external view returns (address);
12260```*/
12261    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12262    #[derive(Clone)]
12263    pub struct lightClientCall;
12264    #[derive(serde::Serialize, serde::Deserialize)]
12265    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12266    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
12267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12268    #[derive(Clone)]
12269    pub struct lightClientReturn {
12270        #[allow(missing_docs)]
12271        pub _0: alloy::sol_types::private::Address,
12272    }
12273    #[allow(
12274        non_camel_case_types,
12275        non_snake_case,
12276        clippy::pub_underscore_fields,
12277        clippy::style
12278    )]
12279    const _: () = {
12280        use alloy::sol_types as alloy_sol_types;
12281        {
12282            #[doc(hidden)]
12283            #[allow(dead_code)]
12284            type UnderlyingSolTuple<'a> = ();
12285            #[doc(hidden)]
12286            type UnderlyingRustTuple<'a> = ();
12287            #[cfg(test)]
12288            #[allow(dead_code, unreachable_patterns)]
12289            fn _type_assertion(
12290                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12291            ) {
12292                match _t {
12293                    alloy_sol_types::private::AssertTypeEq::<
12294                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12295                    >(_) => {}
12296                }
12297            }
12298            #[automatically_derived]
12299            #[doc(hidden)]
12300            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
12301                fn from(value: lightClientCall) -> Self {
12302                    ()
12303                }
12304            }
12305            #[automatically_derived]
12306            #[doc(hidden)]
12307            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
12308                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12309                    Self
12310                }
12311            }
12312        }
12313        {
12314            #[doc(hidden)]
12315            #[allow(dead_code)]
12316            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12317            #[doc(hidden)]
12318            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12319            #[cfg(test)]
12320            #[allow(dead_code, unreachable_patterns)]
12321            fn _type_assertion(
12322                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12323            ) {
12324                match _t {
12325                    alloy_sol_types::private::AssertTypeEq::<
12326                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12327                    >(_) => {}
12328                }
12329            }
12330            #[automatically_derived]
12331            #[doc(hidden)]
12332            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
12333                fn from(value: lightClientReturn) -> Self {
12334                    (value._0,)
12335                }
12336            }
12337            #[automatically_derived]
12338            #[doc(hidden)]
12339            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
12340                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12341                    Self { _0: tuple.0 }
12342                }
12343            }
12344        }
12345        #[automatically_derived]
12346        impl alloy_sol_types::SolCall for lightClientCall {
12347            type Parameters<'a> = ();
12348            type Token<'a> = <Self::Parameters<
12349                'a,
12350            > as alloy_sol_types::SolType>::Token<'a>;
12351            type Return = alloy::sol_types::private::Address;
12352            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12353            type ReturnToken<'a> = <Self::ReturnTuple<
12354                'a,
12355            > as alloy_sol_types::SolType>::Token<'a>;
12356            const SIGNATURE: &'static str = "lightClient()";
12357            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
12358            #[inline]
12359            fn new<'a>(
12360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12361            ) -> Self {
12362                tuple.into()
12363            }
12364            #[inline]
12365            fn tokenize(&self) -> Self::Token<'_> {
12366                ()
12367            }
12368            #[inline]
12369            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12370                (
12371                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12372                        ret,
12373                    ),
12374                )
12375            }
12376            #[inline]
12377            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12378                <Self::ReturnTuple<
12379                    '_,
12380                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12381                    .map(|r| {
12382                        let r: lightClientReturn = r.into();
12383                        r._0
12384                    })
12385            }
12386            #[inline]
12387            fn abi_decode_returns_validate(
12388                data: &[u8],
12389            ) -> alloy_sol_types::Result<Self::Return> {
12390                <Self::ReturnTuple<
12391                    '_,
12392                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12393                    .map(|r| {
12394                        let r: lightClientReturn = r.into();
12395                        r._0
12396                    })
12397            }
12398        }
12399    };
12400    #[derive(serde::Serialize, serde::Deserialize)]
12401    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12402    /**Function with signature `maxCommissionIncrease()` and selector `0x3f3bb366`.
12403```solidity
12404function maxCommissionIncrease() external view returns (uint16);
12405```*/
12406    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12407    #[derive(Clone)]
12408    pub struct maxCommissionIncreaseCall;
12409    #[derive(serde::Serialize, serde::Deserialize)]
12410    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12411    ///Container type for the return parameters of the [`maxCommissionIncrease()`](maxCommissionIncreaseCall) function.
12412    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12413    #[derive(Clone)]
12414    pub struct maxCommissionIncreaseReturn {
12415        #[allow(missing_docs)]
12416        pub _0: u16,
12417    }
12418    #[allow(
12419        non_camel_case_types,
12420        non_snake_case,
12421        clippy::pub_underscore_fields,
12422        clippy::style
12423    )]
12424    const _: () = {
12425        use alloy::sol_types as alloy_sol_types;
12426        {
12427            #[doc(hidden)]
12428            #[allow(dead_code)]
12429            type UnderlyingSolTuple<'a> = ();
12430            #[doc(hidden)]
12431            type UnderlyingRustTuple<'a> = ();
12432            #[cfg(test)]
12433            #[allow(dead_code, unreachable_patterns)]
12434            fn _type_assertion(
12435                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12436            ) {
12437                match _t {
12438                    alloy_sol_types::private::AssertTypeEq::<
12439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12440                    >(_) => {}
12441                }
12442            }
12443            #[automatically_derived]
12444            #[doc(hidden)]
12445            impl ::core::convert::From<maxCommissionIncreaseCall>
12446            for UnderlyingRustTuple<'_> {
12447                fn from(value: maxCommissionIncreaseCall) -> Self {
12448                    ()
12449                }
12450            }
12451            #[automatically_derived]
12452            #[doc(hidden)]
12453            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12454            for maxCommissionIncreaseCall {
12455                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12456                    Self
12457                }
12458            }
12459        }
12460        {
12461            #[doc(hidden)]
12462            #[allow(dead_code)]
12463            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
12464            #[doc(hidden)]
12465            type UnderlyingRustTuple<'a> = (u16,);
12466            #[cfg(test)]
12467            #[allow(dead_code, unreachable_patterns)]
12468            fn _type_assertion(
12469                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12470            ) {
12471                match _t {
12472                    alloy_sol_types::private::AssertTypeEq::<
12473                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12474                    >(_) => {}
12475                }
12476            }
12477            #[automatically_derived]
12478            #[doc(hidden)]
12479            impl ::core::convert::From<maxCommissionIncreaseReturn>
12480            for UnderlyingRustTuple<'_> {
12481                fn from(value: maxCommissionIncreaseReturn) -> Self {
12482                    (value._0,)
12483                }
12484            }
12485            #[automatically_derived]
12486            #[doc(hidden)]
12487            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12488            for maxCommissionIncreaseReturn {
12489                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12490                    Self { _0: tuple.0 }
12491                }
12492            }
12493        }
12494        #[automatically_derived]
12495        impl alloy_sol_types::SolCall for maxCommissionIncreaseCall {
12496            type Parameters<'a> = ();
12497            type Token<'a> = <Self::Parameters<
12498                'a,
12499            > as alloy_sol_types::SolType>::Token<'a>;
12500            type Return = u16;
12501            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
12502            type ReturnToken<'a> = <Self::ReturnTuple<
12503                'a,
12504            > as alloy_sol_types::SolType>::Token<'a>;
12505            const SIGNATURE: &'static str = "maxCommissionIncrease()";
12506            const SELECTOR: [u8; 4] = [63u8, 59u8, 179u8, 102u8];
12507            #[inline]
12508            fn new<'a>(
12509                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12510            ) -> Self {
12511                tuple.into()
12512            }
12513            #[inline]
12514            fn tokenize(&self) -> Self::Token<'_> {
12515                ()
12516            }
12517            #[inline]
12518            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12519                (
12520                    <alloy::sol_types::sol_data::Uint<
12521                        16,
12522                    > as alloy_sol_types::SolType>::tokenize(ret),
12523                )
12524            }
12525            #[inline]
12526            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12527                <Self::ReturnTuple<
12528                    '_,
12529                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12530                    .map(|r| {
12531                        let r: maxCommissionIncreaseReturn = r.into();
12532                        r._0
12533                    })
12534            }
12535            #[inline]
12536            fn abi_decode_returns_validate(
12537                data: &[u8],
12538            ) -> alloy_sol_types::Result<Self::Return> {
12539                <Self::ReturnTuple<
12540                    '_,
12541                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12542                    .map(|r| {
12543                        let r: maxCommissionIncreaseReturn = r.into();
12544                        r._0
12545                    })
12546            }
12547        }
12548    };
12549    #[derive(serde::Serialize, serde::Deserialize)]
12550    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12551    /**Function with signature `minCommissionIncreaseInterval()` and selector `0xd9cc7d26`.
12552```solidity
12553function minCommissionIncreaseInterval() external view returns (uint256);
12554```*/
12555    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12556    #[derive(Clone)]
12557    pub struct minCommissionIncreaseIntervalCall;
12558    #[derive(serde::Serialize, serde::Deserialize)]
12559    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12560    ///Container type for the return parameters of the [`minCommissionIncreaseInterval()`](minCommissionIncreaseIntervalCall) function.
12561    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12562    #[derive(Clone)]
12563    pub struct minCommissionIncreaseIntervalReturn {
12564        #[allow(missing_docs)]
12565        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12566    }
12567    #[allow(
12568        non_camel_case_types,
12569        non_snake_case,
12570        clippy::pub_underscore_fields,
12571        clippy::style
12572    )]
12573    const _: () = {
12574        use alloy::sol_types as alloy_sol_types;
12575        {
12576            #[doc(hidden)]
12577            #[allow(dead_code)]
12578            type UnderlyingSolTuple<'a> = ();
12579            #[doc(hidden)]
12580            type UnderlyingRustTuple<'a> = ();
12581            #[cfg(test)]
12582            #[allow(dead_code, unreachable_patterns)]
12583            fn _type_assertion(
12584                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12585            ) {
12586                match _t {
12587                    alloy_sol_types::private::AssertTypeEq::<
12588                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12589                    >(_) => {}
12590                }
12591            }
12592            #[automatically_derived]
12593            #[doc(hidden)]
12594            impl ::core::convert::From<minCommissionIncreaseIntervalCall>
12595            for UnderlyingRustTuple<'_> {
12596                fn from(value: minCommissionIncreaseIntervalCall) -> Self {
12597                    ()
12598                }
12599            }
12600            #[automatically_derived]
12601            #[doc(hidden)]
12602            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12603            for minCommissionIncreaseIntervalCall {
12604                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12605                    Self
12606                }
12607            }
12608        }
12609        {
12610            #[doc(hidden)]
12611            #[allow(dead_code)]
12612            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12613            #[doc(hidden)]
12614            type UnderlyingRustTuple<'a> = (
12615                alloy::sol_types::private::primitives::aliases::U256,
12616            );
12617            #[cfg(test)]
12618            #[allow(dead_code, unreachable_patterns)]
12619            fn _type_assertion(
12620                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12621            ) {
12622                match _t {
12623                    alloy_sol_types::private::AssertTypeEq::<
12624                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12625                    >(_) => {}
12626                }
12627            }
12628            #[automatically_derived]
12629            #[doc(hidden)]
12630            impl ::core::convert::From<minCommissionIncreaseIntervalReturn>
12631            for UnderlyingRustTuple<'_> {
12632                fn from(value: minCommissionIncreaseIntervalReturn) -> Self {
12633                    (value._0,)
12634                }
12635            }
12636            #[automatically_derived]
12637            #[doc(hidden)]
12638            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12639            for minCommissionIncreaseIntervalReturn {
12640                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12641                    Self { _0: tuple.0 }
12642                }
12643            }
12644        }
12645        #[automatically_derived]
12646        impl alloy_sol_types::SolCall for minCommissionIncreaseIntervalCall {
12647            type Parameters<'a> = ();
12648            type Token<'a> = <Self::Parameters<
12649                'a,
12650            > as alloy_sol_types::SolType>::Token<'a>;
12651            type Return = alloy::sol_types::private::primitives::aliases::U256;
12652            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12653            type ReturnToken<'a> = <Self::ReturnTuple<
12654                'a,
12655            > as alloy_sol_types::SolType>::Token<'a>;
12656            const SIGNATURE: &'static str = "minCommissionIncreaseInterval()";
12657            const SELECTOR: [u8; 4] = [217u8, 204u8, 125u8, 38u8];
12658            #[inline]
12659            fn new<'a>(
12660                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12661            ) -> Self {
12662                tuple.into()
12663            }
12664            #[inline]
12665            fn tokenize(&self) -> Self::Token<'_> {
12666                ()
12667            }
12668            #[inline]
12669            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12670                (
12671                    <alloy::sol_types::sol_data::Uint<
12672                        256,
12673                    > as alloy_sol_types::SolType>::tokenize(ret),
12674                )
12675            }
12676            #[inline]
12677            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12678                <Self::ReturnTuple<
12679                    '_,
12680                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12681                    .map(|r| {
12682                        let r: minCommissionIncreaseIntervalReturn = r.into();
12683                        r._0
12684                    })
12685            }
12686            #[inline]
12687            fn abi_decode_returns_validate(
12688                data: &[u8],
12689            ) -> alloy_sol_types::Result<Self::Return> {
12690                <Self::ReturnTuple<
12691                    '_,
12692                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12693                    .map(|r| {
12694                        let r: minCommissionIncreaseIntervalReturn = r.into();
12695                        r._0
12696                    })
12697            }
12698        }
12699    };
12700    #[derive(serde::Serialize, serde::Deserialize)]
12701    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12702    /**Function with signature `owner()` and selector `0x8da5cb5b`.
12703```solidity
12704function owner() external view returns (address);
12705```*/
12706    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12707    #[derive(Clone)]
12708    pub struct ownerCall;
12709    #[derive(serde::Serialize, serde::Deserialize)]
12710    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12711    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
12712    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12713    #[derive(Clone)]
12714    pub struct ownerReturn {
12715        #[allow(missing_docs)]
12716        pub _0: alloy::sol_types::private::Address,
12717    }
12718    #[allow(
12719        non_camel_case_types,
12720        non_snake_case,
12721        clippy::pub_underscore_fields,
12722        clippy::style
12723    )]
12724    const _: () = {
12725        use alloy::sol_types as alloy_sol_types;
12726        {
12727            #[doc(hidden)]
12728            #[allow(dead_code)]
12729            type UnderlyingSolTuple<'a> = ();
12730            #[doc(hidden)]
12731            type UnderlyingRustTuple<'a> = ();
12732            #[cfg(test)]
12733            #[allow(dead_code, unreachable_patterns)]
12734            fn _type_assertion(
12735                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12736            ) {
12737                match _t {
12738                    alloy_sol_types::private::AssertTypeEq::<
12739                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12740                    >(_) => {}
12741                }
12742            }
12743            #[automatically_derived]
12744            #[doc(hidden)]
12745            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
12746                fn from(value: ownerCall) -> Self {
12747                    ()
12748                }
12749            }
12750            #[automatically_derived]
12751            #[doc(hidden)]
12752            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
12753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12754                    Self
12755                }
12756            }
12757        }
12758        {
12759            #[doc(hidden)]
12760            #[allow(dead_code)]
12761            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12762            #[doc(hidden)]
12763            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12764            #[cfg(test)]
12765            #[allow(dead_code, unreachable_patterns)]
12766            fn _type_assertion(
12767                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12768            ) {
12769                match _t {
12770                    alloy_sol_types::private::AssertTypeEq::<
12771                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12772                    >(_) => {}
12773                }
12774            }
12775            #[automatically_derived]
12776            #[doc(hidden)]
12777            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12778                fn from(value: ownerReturn) -> Self {
12779                    (value._0,)
12780                }
12781            }
12782            #[automatically_derived]
12783            #[doc(hidden)]
12784            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12785                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12786                    Self { _0: tuple.0 }
12787                }
12788            }
12789        }
12790        #[automatically_derived]
12791        impl alloy_sol_types::SolCall for ownerCall {
12792            type Parameters<'a> = ();
12793            type Token<'a> = <Self::Parameters<
12794                'a,
12795            > as alloy_sol_types::SolType>::Token<'a>;
12796            type Return = alloy::sol_types::private::Address;
12797            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12798            type ReturnToken<'a> = <Self::ReturnTuple<
12799                'a,
12800            > as alloy_sol_types::SolType>::Token<'a>;
12801            const SIGNATURE: &'static str = "owner()";
12802            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12803            #[inline]
12804            fn new<'a>(
12805                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12806            ) -> Self {
12807                tuple.into()
12808            }
12809            #[inline]
12810            fn tokenize(&self) -> Self::Token<'_> {
12811                ()
12812            }
12813            #[inline]
12814            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12815                (
12816                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12817                        ret,
12818                    ),
12819                )
12820            }
12821            #[inline]
12822            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12823                <Self::ReturnTuple<
12824                    '_,
12825                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12826                    .map(|r| {
12827                        let r: ownerReturn = r.into();
12828                        r._0
12829                    })
12830            }
12831            #[inline]
12832            fn abi_decode_returns_validate(
12833                data: &[u8],
12834            ) -> alloy_sol_types::Result<Self::Return> {
12835                <Self::ReturnTuple<
12836                    '_,
12837                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12838                    .map(|r| {
12839                        let r: ownerReturn = r.into();
12840                        r._0
12841                    })
12842            }
12843        }
12844    };
12845    #[derive(serde::Serialize, serde::Deserialize)]
12846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12847    /**Function with signature `pause()` and selector `0x8456cb59`.
12848```solidity
12849function pause() external;
12850```*/
12851    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12852    #[derive(Clone)]
12853    pub struct pauseCall;
12854    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
12855    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12856    #[derive(Clone)]
12857    pub struct pauseReturn {}
12858    #[allow(
12859        non_camel_case_types,
12860        non_snake_case,
12861        clippy::pub_underscore_fields,
12862        clippy::style
12863    )]
12864    const _: () = {
12865        use alloy::sol_types as alloy_sol_types;
12866        {
12867            #[doc(hidden)]
12868            #[allow(dead_code)]
12869            type UnderlyingSolTuple<'a> = ();
12870            #[doc(hidden)]
12871            type UnderlyingRustTuple<'a> = ();
12872            #[cfg(test)]
12873            #[allow(dead_code, unreachable_patterns)]
12874            fn _type_assertion(
12875                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12876            ) {
12877                match _t {
12878                    alloy_sol_types::private::AssertTypeEq::<
12879                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12880                    >(_) => {}
12881                }
12882            }
12883            #[automatically_derived]
12884            #[doc(hidden)]
12885            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
12886                fn from(value: pauseCall) -> Self {
12887                    ()
12888                }
12889            }
12890            #[automatically_derived]
12891            #[doc(hidden)]
12892            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
12893                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12894                    Self
12895                }
12896            }
12897        }
12898        {
12899            #[doc(hidden)]
12900            #[allow(dead_code)]
12901            type UnderlyingSolTuple<'a> = ();
12902            #[doc(hidden)]
12903            type UnderlyingRustTuple<'a> = ();
12904            #[cfg(test)]
12905            #[allow(dead_code, unreachable_patterns)]
12906            fn _type_assertion(
12907                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12908            ) {
12909                match _t {
12910                    alloy_sol_types::private::AssertTypeEq::<
12911                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12912                    >(_) => {}
12913                }
12914            }
12915            #[automatically_derived]
12916            #[doc(hidden)]
12917            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
12918                fn from(value: pauseReturn) -> Self {
12919                    ()
12920                }
12921            }
12922            #[automatically_derived]
12923            #[doc(hidden)]
12924            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
12925                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12926                    Self {}
12927                }
12928            }
12929        }
12930        impl pauseReturn {
12931            fn _tokenize(
12932                &self,
12933            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12934                ()
12935            }
12936        }
12937        #[automatically_derived]
12938        impl alloy_sol_types::SolCall for pauseCall {
12939            type Parameters<'a> = ();
12940            type Token<'a> = <Self::Parameters<
12941                'a,
12942            > as alloy_sol_types::SolType>::Token<'a>;
12943            type Return = pauseReturn;
12944            type ReturnTuple<'a> = ();
12945            type ReturnToken<'a> = <Self::ReturnTuple<
12946                'a,
12947            > as alloy_sol_types::SolType>::Token<'a>;
12948            const SIGNATURE: &'static str = "pause()";
12949            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
12950            #[inline]
12951            fn new<'a>(
12952                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12953            ) -> Self {
12954                tuple.into()
12955            }
12956            #[inline]
12957            fn tokenize(&self) -> Self::Token<'_> {
12958                ()
12959            }
12960            #[inline]
12961            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12962                pauseReturn::_tokenize(ret)
12963            }
12964            #[inline]
12965            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12966                <Self::ReturnTuple<
12967                    '_,
12968                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12969                    .map(Into::into)
12970            }
12971            #[inline]
12972            fn abi_decode_returns_validate(
12973                data: &[u8],
12974            ) -> alloy_sol_types::Result<Self::Return> {
12975                <Self::ReturnTuple<
12976                    '_,
12977                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12978                    .map(Into::into)
12979            }
12980        }
12981    };
12982    #[derive(serde::Serialize, serde::Deserialize)]
12983    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12984    /**Function with signature `paused()` and selector `0x5c975abb`.
12985```solidity
12986function paused() external view returns (bool);
12987```*/
12988    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12989    #[derive(Clone)]
12990    pub struct pausedCall;
12991    #[derive(serde::Serialize, serde::Deserialize)]
12992    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12993    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
12994    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12995    #[derive(Clone)]
12996    pub struct pausedReturn {
12997        #[allow(missing_docs)]
12998        pub _0: bool,
12999    }
13000    #[allow(
13001        non_camel_case_types,
13002        non_snake_case,
13003        clippy::pub_underscore_fields,
13004        clippy::style
13005    )]
13006    const _: () = {
13007        use alloy::sol_types as alloy_sol_types;
13008        {
13009            #[doc(hidden)]
13010            #[allow(dead_code)]
13011            type UnderlyingSolTuple<'a> = ();
13012            #[doc(hidden)]
13013            type UnderlyingRustTuple<'a> = ();
13014            #[cfg(test)]
13015            #[allow(dead_code, unreachable_patterns)]
13016            fn _type_assertion(
13017                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13018            ) {
13019                match _t {
13020                    alloy_sol_types::private::AssertTypeEq::<
13021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13022                    >(_) => {}
13023                }
13024            }
13025            #[automatically_derived]
13026            #[doc(hidden)]
13027            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
13028                fn from(value: pausedCall) -> Self {
13029                    ()
13030                }
13031            }
13032            #[automatically_derived]
13033            #[doc(hidden)]
13034            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
13035                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13036                    Self
13037                }
13038            }
13039        }
13040        {
13041            #[doc(hidden)]
13042            #[allow(dead_code)]
13043            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
13044            #[doc(hidden)]
13045            type UnderlyingRustTuple<'a> = (bool,);
13046            #[cfg(test)]
13047            #[allow(dead_code, unreachable_patterns)]
13048            fn _type_assertion(
13049                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13050            ) {
13051                match _t {
13052                    alloy_sol_types::private::AssertTypeEq::<
13053                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13054                    >(_) => {}
13055                }
13056            }
13057            #[automatically_derived]
13058            #[doc(hidden)]
13059            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
13060                fn from(value: pausedReturn) -> Self {
13061                    (value._0,)
13062                }
13063            }
13064            #[automatically_derived]
13065            #[doc(hidden)]
13066            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
13067                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13068                    Self { _0: tuple.0 }
13069                }
13070            }
13071        }
13072        #[automatically_derived]
13073        impl alloy_sol_types::SolCall for pausedCall {
13074            type Parameters<'a> = ();
13075            type Token<'a> = <Self::Parameters<
13076                'a,
13077            > as alloy_sol_types::SolType>::Token<'a>;
13078            type Return = bool;
13079            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
13080            type ReturnToken<'a> = <Self::ReturnTuple<
13081                'a,
13082            > as alloy_sol_types::SolType>::Token<'a>;
13083            const SIGNATURE: &'static str = "paused()";
13084            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
13085            #[inline]
13086            fn new<'a>(
13087                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13088            ) -> Self {
13089                tuple.into()
13090            }
13091            #[inline]
13092            fn tokenize(&self) -> Self::Token<'_> {
13093                ()
13094            }
13095            #[inline]
13096            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13097                (
13098                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
13099                        ret,
13100                    ),
13101                )
13102            }
13103            #[inline]
13104            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13105                <Self::ReturnTuple<
13106                    '_,
13107                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13108                    .map(|r| {
13109                        let r: pausedReturn = r.into();
13110                        r._0
13111                    })
13112            }
13113            #[inline]
13114            fn abi_decode_returns_validate(
13115                data: &[u8],
13116            ) -> alloy_sol_types::Result<Self::Return> {
13117                <Self::ReturnTuple<
13118                    '_,
13119                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13120                    .map(|r| {
13121                        let r: pausedReturn = r.into();
13122                        r._0
13123                    })
13124            }
13125        }
13126    };
13127    #[derive(serde::Serialize, serde::Deserialize)]
13128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13129    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
13130```solidity
13131function proxiableUUID() external view returns (bytes32);
13132```*/
13133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13134    #[derive(Clone)]
13135    pub struct proxiableUUIDCall;
13136    #[derive(serde::Serialize, serde::Deserialize)]
13137    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13138    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
13139    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13140    #[derive(Clone)]
13141    pub struct proxiableUUIDReturn {
13142        #[allow(missing_docs)]
13143        pub _0: alloy::sol_types::private::FixedBytes<32>,
13144    }
13145    #[allow(
13146        non_camel_case_types,
13147        non_snake_case,
13148        clippy::pub_underscore_fields,
13149        clippy::style
13150    )]
13151    const _: () = {
13152        use alloy::sol_types as alloy_sol_types;
13153        {
13154            #[doc(hidden)]
13155            #[allow(dead_code)]
13156            type UnderlyingSolTuple<'a> = ();
13157            #[doc(hidden)]
13158            type UnderlyingRustTuple<'a> = ();
13159            #[cfg(test)]
13160            #[allow(dead_code, unreachable_patterns)]
13161            fn _type_assertion(
13162                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13163            ) {
13164                match _t {
13165                    alloy_sol_types::private::AssertTypeEq::<
13166                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13167                    >(_) => {}
13168                }
13169            }
13170            #[automatically_derived]
13171            #[doc(hidden)]
13172            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
13173                fn from(value: proxiableUUIDCall) -> Self {
13174                    ()
13175                }
13176            }
13177            #[automatically_derived]
13178            #[doc(hidden)]
13179            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
13180                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13181                    Self
13182                }
13183            }
13184        }
13185        {
13186            #[doc(hidden)]
13187            #[allow(dead_code)]
13188            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13189            #[doc(hidden)]
13190            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13191            #[cfg(test)]
13192            #[allow(dead_code, unreachable_patterns)]
13193            fn _type_assertion(
13194                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13195            ) {
13196                match _t {
13197                    alloy_sol_types::private::AssertTypeEq::<
13198                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13199                    >(_) => {}
13200                }
13201            }
13202            #[automatically_derived]
13203            #[doc(hidden)]
13204            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
13205                fn from(value: proxiableUUIDReturn) -> Self {
13206                    (value._0,)
13207                }
13208            }
13209            #[automatically_derived]
13210            #[doc(hidden)]
13211            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
13212                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13213                    Self { _0: tuple.0 }
13214                }
13215            }
13216        }
13217        #[automatically_derived]
13218        impl alloy_sol_types::SolCall for proxiableUUIDCall {
13219            type Parameters<'a> = ();
13220            type Token<'a> = <Self::Parameters<
13221                'a,
13222            > as alloy_sol_types::SolType>::Token<'a>;
13223            type Return = alloy::sol_types::private::FixedBytes<32>;
13224            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13225            type ReturnToken<'a> = <Self::ReturnTuple<
13226                'a,
13227            > as alloy_sol_types::SolType>::Token<'a>;
13228            const SIGNATURE: &'static str = "proxiableUUID()";
13229            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
13230            #[inline]
13231            fn new<'a>(
13232                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13233            ) -> Self {
13234                tuple.into()
13235            }
13236            #[inline]
13237            fn tokenize(&self) -> Self::Token<'_> {
13238                ()
13239            }
13240            #[inline]
13241            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13242                (
13243                    <alloy::sol_types::sol_data::FixedBytes<
13244                        32,
13245                    > as alloy_sol_types::SolType>::tokenize(ret),
13246                )
13247            }
13248            #[inline]
13249            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13250                <Self::ReturnTuple<
13251                    '_,
13252                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13253                    .map(|r| {
13254                        let r: proxiableUUIDReturn = r.into();
13255                        r._0
13256                    })
13257            }
13258            #[inline]
13259            fn abi_decode_returns_validate(
13260                data: &[u8],
13261            ) -> alloy_sol_types::Result<Self::Return> {
13262                <Self::ReturnTuple<
13263                    '_,
13264                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13265                    .map(|r| {
13266                        let r: proxiableUUIDReturn = r.into();
13267                        r._0
13268                    })
13269            }
13270        }
13271    };
13272    #[derive(serde::Serialize, serde::Deserialize)]
13273    #[derive()]
13274    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
13275```solidity
13276function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
13277```*/
13278    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13279    #[derive(Clone)]
13280    pub struct registerValidatorCall {
13281        #[allow(missing_docs)]
13282        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13283        #[allow(missing_docs)]
13284        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
13285        #[allow(missing_docs)]
13286        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
13287        #[allow(missing_docs)]
13288        pub _3: u16,
13289    }
13290    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
13291    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13292    #[derive(Clone)]
13293    pub struct registerValidatorReturn {}
13294    #[allow(
13295        non_camel_case_types,
13296        non_snake_case,
13297        clippy::pub_underscore_fields,
13298        clippy::style
13299    )]
13300    const _: () = {
13301        use alloy::sol_types as alloy_sol_types;
13302        {
13303            #[doc(hidden)]
13304            #[allow(dead_code)]
13305            type UnderlyingSolTuple<'a> = (
13306                BN254::G2Point,
13307                EdOnBN254::EdOnBN254Point,
13308                BN254::G1Point,
13309                alloy::sol_types::sol_data::Uint<16>,
13310            );
13311            #[doc(hidden)]
13312            type UnderlyingRustTuple<'a> = (
13313                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13314                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
13315                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
13316                u16,
13317            );
13318            #[cfg(test)]
13319            #[allow(dead_code, unreachable_patterns)]
13320            fn _type_assertion(
13321                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13322            ) {
13323                match _t {
13324                    alloy_sol_types::private::AssertTypeEq::<
13325                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13326                    >(_) => {}
13327                }
13328            }
13329            #[automatically_derived]
13330            #[doc(hidden)]
13331            impl ::core::convert::From<registerValidatorCall>
13332            for UnderlyingRustTuple<'_> {
13333                fn from(value: registerValidatorCall) -> Self {
13334                    (value._0, value._1, value._2, value._3)
13335                }
13336            }
13337            #[automatically_derived]
13338            #[doc(hidden)]
13339            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13340            for registerValidatorCall {
13341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13342                    Self {
13343                        _0: tuple.0,
13344                        _1: tuple.1,
13345                        _2: tuple.2,
13346                        _3: tuple.3,
13347                    }
13348                }
13349            }
13350        }
13351        {
13352            #[doc(hidden)]
13353            #[allow(dead_code)]
13354            type UnderlyingSolTuple<'a> = ();
13355            #[doc(hidden)]
13356            type UnderlyingRustTuple<'a> = ();
13357            #[cfg(test)]
13358            #[allow(dead_code, unreachable_patterns)]
13359            fn _type_assertion(
13360                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13361            ) {
13362                match _t {
13363                    alloy_sol_types::private::AssertTypeEq::<
13364                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13365                    >(_) => {}
13366                }
13367            }
13368            #[automatically_derived]
13369            #[doc(hidden)]
13370            impl ::core::convert::From<registerValidatorReturn>
13371            for UnderlyingRustTuple<'_> {
13372                fn from(value: registerValidatorReturn) -> Self {
13373                    ()
13374                }
13375            }
13376            #[automatically_derived]
13377            #[doc(hidden)]
13378            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13379            for registerValidatorReturn {
13380                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13381                    Self {}
13382                }
13383            }
13384        }
13385        impl registerValidatorReturn {
13386            fn _tokenize(
13387                &self,
13388            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13389                ()
13390            }
13391        }
13392        #[automatically_derived]
13393        impl alloy_sol_types::SolCall for registerValidatorCall {
13394            type Parameters<'a> = (
13395                BN254::G2Point,
13396                EdOnBN254::EdOnBN254Point,
13397                BN254::G1Point,
13398                alloy::sol_types::sol_data::Uint<16>,
13399            );
13400            type Token<'a> = <Self::Parameters<
13401                'a,
13402            > as alloy_sol_types::SolType>::Token<'a>;
13403            type Return = registerValidatorReturn;
13404            type ReturnTuple<'a> = ();
13405            type ReturnToken<'a> = <Self::ReturnTuple<
13406                'a,
13407            > as alloy_sol_types::SolType>::Token<'a>;
13408            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
13409            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
13410            #[inline]
13411            fn new<'a>(
13412                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13413            ) -> Self {
13414                tuple.into()
13415            }
13416            #[inline]
13417            fn tokenize(&self) -> Self::Token<'_> {
13418                (
13419                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
13420                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
13421                        &self._1,
13422                    ),
13423                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
13424                    <alloy::sol_types::sol_data::Uint<
13425                        16,
13426                    > as alloy_sol_types::SolType>::tokenize(&self._3),
13427                )
13428            }
13429            #[inline]
13430            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13431                registerValidatorReturn::_tokenize(ret)
13432            }
13433            #[inline]
13434            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13435                <Self::ReturnTuple<
13436                    '_,
13437                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13438                    .map(Into::into)
13439            }
13440            #[inline]
13441            fn abi_decode_returns_validate(
13442                data: &[u8],
13443            ) -> alloy_sol_types::Result<Self::Return> {
13444                <Self::ReturnTuple<
13445                    '_,
13446                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13447                    .map(Into::into)
13448            }
13449        }
13450    };
13451    #[derive(serde::Serialize, serde::Deserialize)]
13452    #[derive()]
13453    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16)` and selector `0x304240bf`.
13454```solidity
13455function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission) external;
13456```*/
13457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13458    #[derive(Clone)]
13459    pub struct registerValidatorV2Call {
13460        #[allow(missing_docs)]
13461        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13462        #[allow(missing_docs)]
13463        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
13464        #[allow(missing_docs)]
13465        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
13466        #[allow(missing_docs)]
13467        pub schnorrSig: alloy::sol_types::private::Bytes,
13468        #[allow(missing_docs)]
13469        pub commission: u16,
13470    }
13471    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16)`](registerValidatorV2Call) function.
13472    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13473    #[derive(Clone)]
13474    pub struct registerValidatorV2Return {}
13475    #[allow(
13476        non_camel_case_types,
13477        non_snake_case,
13478        clippy::pub_underscore_fields,
13479        clippy::style
13480    )]
13481    const _: () = {
13482        use alloy::sol_types as alloy_sol_types;
13483        {
13484            #[doc(hidden)]
13485            #[allow(dead_code)]
13486            type UnderlyingSolTuple<'a> = (
13487                BN254::G2Point,
13488                EdOnBN254::EdOnBN254Point,
13489                BN254::G1Point,
13490                alloy::sol_types::sol_data::Bytes,
13491                alloy::sol_types::sol_data::Uint<16>,
13492            );
13493            #[doc(hidden)]
13494            type UnderlyingRustTuple<'a> = (
13495                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
13496                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
13497                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
13498                alloy::sol_types::private::Bytes,
13499                u16,
13500            );
13501            #[cfg(test)]
13502            #[allow(dead_code, unreachable_patterns)]
13503            fn _type_assertion(
13504                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13505            ) {
13506                match _t {
13507                    alloy_sol_types::private::AssertTypeEq::<
13508                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13509                    >(_) => {}
13510                }
13511            }
13512            #[automatically_derived]
13513            #[doc(hidden)]
13514            impl ::core::convert::From<registerValidatorV2Call>
13515            for UnderlyingRustTuple<'_> {
13516                fn from(value: registerValidatorV2Call) -> Self {
13517                    (
13518                        value.blsVK,
13519                        value.schnorrVK,
13520                        value.blsSig,
13521                        value.schnorrSig,
13522                        value.commission,
13523                    )
13524                }
13525            }
13526            #[automatically_derived]
13527            #[doc(hidden)]
13528            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13529            for registerValidatorV2Call {
13530                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13531                    Self {
13532                        blsVK: tuple.0,
13533                        schnorrVK: tuple.1,
13534                        blsSig: tuple.2,
13535                        schnorrSig: tuple.3,
13536                        commission: tuple.4,
13537                    }
13538                }
13539            }
13540        }
13541        {
13542            #[doc(hidden)]
13543            #[allow(dead_code)]
13544            type UnderlyingSolTuple<'a> = ();
13545            #[doc(hidden)]
13546            type UnderlyingRustTuple<'a> = ();
13547            #[cfg(test)]
13548            #[allow(dead_code, unreachable_patterns)]
13549            fn _type_assertion(
13550                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13551            ) {
13552                match _t {
13553                    alloy_sol_types::private::AssertTypeEq::<
13554                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13555                    >(_) => {}
13556                }
13557            }
13558            #[automatically_derived]
13559            #[doc(hidden)]
13560            impl ::core::convert::From<registerValidatorV2Return>
13561            for UnderlyingRustTuple<'_> {
13562                fn from(value: registerValidatorV2Return) -> Self {
13563                    ()
13564                }
13565            }
13566            #[automatically_derived]
13567            #[doc(hidden)]
13568            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13569            for registerValidatorV2Return {
13570                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13571                    Self {}
13572                }
13573            }
13574        }
13575        impl registerValidatorV2Return {
13576            fn _tokenize(
13577                &self,
13578            ) -> <registerValidatorV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
13579                ()
13580            }
13581        }
13582        #[automatically_derived]
13583        impl alloy_sol_types::SolCall for registerValidatorV2Call {
13584            type Parameters<'a> = (
13585                BN254::G2Point,
13586                EdOnBN254::EdOnBN254Point,
13587                BN254::G1Point,
13588                alloy::sol_types::sol_data::Bytes,
13589                alloy::sol_types::sol_data::Uint<16>,
13590            );
13591            type Token<'a> = <Self::Parameters<
13592                'a,
13593            > as alloy_sol_types::SolType>::Token<'a>;
13594            type Return = registerValidatorV2Return;
13595            type ReturnTuple<'a> = ();
13596            type ReturnToken<'a> = <Self::ReturnTuple<
13597                'a,
13598            > as alloy_sol_types::SolType>::Token<'a>;
13599            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16)";
13600            const SELECTOR: [u8; 4] = [48u8, 66u8, 64u8, 191u8];
13601            #[inline]
13602            fn new<'a>(
13603                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13604            ) -> Self {
13605                tuple.into()
13606            }
13607            #[inline]
13608            fn tokenize(&self) -> Self::Token<'_> {
13609                (
13610                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
13611                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
13612                        &self.schnorrVK,
13613                    ),
13614                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
13615                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13616                        &self.schnorrSig,
13617                    ),
13618                    <alloy::sol_types::sol_data::Uint<
13619                        16,
13620                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
13621                )
13622            }
13623            #[inline]
13624            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13625                registerValidatorV2Return::_tokenize(ret)
13626            }
13627            #[inline]
13628            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13629                <Self::ReturnTuple<
13630                    '_,
13631                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13632                    .map(Into::into)
13633            }
13634            #[inline]
13635            fn abi_decode_returns_validate(
13636                data: &[u8],
13637            ) -> alloy_sol_types::Result<Self::Return> {
13638                <Self::ReturnTuple<
13639                    '_,
13640                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13641                    .map(Into::into)
13642            }
13643        }
13644    };
13645    #[derive(serde::Serialize, serde::Deserialize)]
13646    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13647    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
13648```solidity
13649function renounceOwnership() external;
13650```*/
13651    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13652    #[derive(Clone)]
13653    pub struct renounceOwnershipCall;
13654    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
13655    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13656    #[derive(Clone)]
13657    pub struct renounceOwnershipReturn {}
13658    #[allow(
13659        non_camel_case_types,
13660        non_snake_case,
13661        clippy::pub_underscore_fields,
13662        clippy::style
13663    )]
13664    const _: () = {
13665        use alloy::sol_types as alloy_sol_types;
13666        {
13667            #[doc(hidden)]
13668            #[allow(dead_code)]
13669            type UnderlyingSolTuple<'a> = ();
13670            #[doc(hidden)]
13671            type UnderlyingRustTuple<'a> = ();
13672            #[cfg(test)]
13673            #[allow(dead_code, unreachable_patterns)]
13674            fn _type_assertion(
13675                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13676            ) {
13677                match _t {
13678                    alloy_sol_types::private::AssertTypeEq::<
13679                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13680                    >(_) => {}
13681                }
13682            }
13683            #[automatically_derived]
13684            #[doc(hidden)]
13685            impl ::core::convert::From<renounceOwnershipCall>
13686            for UnderlyingRustTuple<'_> {
13687                fn from(value: renounceOwnershipCall) -> Self {
13688                    ()
13689                }
13690            }
13691            #[automatically_derived]
13692            #[doc(hidden)]
13693            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13694            for renounceOwnershipCall {
13695                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13696                    Self
13697                }
13698            }
13699        }
13700        {
13701            #[doc(hidden)]
13702            #[allow(dead_code)]
13703            type UnderlyingSolTuple<'a> = ();
13704            #[doc(hidden)]
13705            type UnderlyingRustTuple<'a> = ();
13706            #[cfg(test)]
13707            #[allow(dead_code, unreachable_patterns)]
13708            fn _type_assertion(
13709                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13710            ) {
13711                match _t {
13712                    alloy_sol_types::private::AssertTypeEq::<
13713                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13714                    >(_) => {}
13715                }
13716            }
13717            #[automatically_derived]
13718            #[doc(hidden)]
13719            impl ::core::convert::From<renounceOwnershipReturn>
13720            for UnderlyingRustTuple<'_> {
13721                fn from(value: renounceOwnershipReturn) -> Self {
13722                    ()
13723                }
13724            }
13725            #[automatically_derived]
13726            #[doc(hidden)]
13727            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13728            for renounceOwnershipReturn {
13729                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13730                    Self {}
13731                }
13732            }
13733        }
13734        impl renounceOwnershipReturn {
13735            fn _tokenize(
13736                &self,
13737            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13738                ()
13739            }
13740        }
13741        #[automatically_derived]
13742        impl alloy_sol_types::SolCall for renounceOwnershipCall {
13743            type Parameters<'a> = ();
13744            type Token<'a> = <Self::Parameters<
13745                'a,
13746            > as alloy_sol_types::SolType>::Token<'a>;
13747            type Return = renounceOwnershipReturn;
13748            type ReturnTuple<'a> = ();
13749            type ReturnToken<'a> = <Self::ReturnTuple<
13750                'a,
13751            > as alloy_sol_types::SolType>::Token<'a>;
13752            const SIGNATURE: &'static str = "renounceOwnership()";
13753            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
13754            #[inline]
13755            fn new<'a>(
13756                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13757            ) -> Self {
13758                tuple.into()
13759            }
13760            #[inline]
13761            fn tokenize(&self) -> Self::Token<'_> {
13762                ()
13763            }
13764            #[inline]
13765            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13766                renounceOwnershipReturn::_tokenize(ret)
13767            }
13768            #[inline]
13769            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13770                <Self::ReturnTuple<
13771                    '_,
13772                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13773                    .map(Into::into)
13774            }
13775            #[inline]
13776            fn abi_decode_returns_validate(
13777                data: &[u8],
13778            ) -> alloy_sol_types::Result<Self::Return> {
13779                <Self::ReturnTuple<
13780                    '_,
13781                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13782                    .map(Into::into)
13783            }
13784        }
13785    };
13786    #[derive(serde::Serialize, serde::Deserialize)]
13787    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13788    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
13789```solidity
13790function renounceRole(bytes32 role, address callerConfirmation) external;
13791```*/
13792    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13793    #[derive(Clone)]
13794    pub struct renounceRoleCall {
13795        #[allow(missing_docs)]
13796        pub role: alloy::sol_types::private::FixedBytes<32>,
13797        #[allow(missing_docs)]
13798        pub callerConfirmation: alloy::sol_types::private::Address,
13799    }
13800    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
13801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13802    #[derive(Clone)]
13803    pub struct renounceRoleReturn {}
13804    #[allow(
13805        non_camel_case_types,
13806        non_snake_case,
13807        clippy::pub_underscore_fields,
13808        clippy::style
13809    )]
13810    const _: () = {
13811        use alloy::sol_types as alloy_sol_types;
13812        {
13813            #[doc(hidden)]
13814            #[allow(dead_code)]
13815            type UnderlyingSolTuple<'a> = (
13816                alloy::sol_types::sol_data::FixedBytes<32>,
13817                alloy::sol_types::sol_data::Address,
13818            );
13819            #[doc(hidden)]
13820            type UnderlyingRustTuple<'a> = (
13821                alloy::sol_types::private::FixedBytes<32>,
13822                alloy::sol_types::private::Address,
13823            );
13824            #[cfg(test)]
13825            #[allow(dead_code, unreachable_patterns)]
13826            fn _type_assertion(
13827                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13828            ) {
13829                match _t {
13830                    alloy_sol_types::private::AssertTypeEq::<
13831                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13832                    >(_) => {}
13833                }
13834            }
13835            #[automatically_derived]
13836            #[doc(hidden)]
13837            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
13838                fn from(value: renounceRoleCall) -> Self {
13839                    (value.role, value.callerConfirmation)
13840                }
13841            }
13842            #[automatically_derived]
13843            #[doc(hidden)]
13844            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
13845                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13846                    Self {
13847                        role: tuple.0,
13848                        callerConfirmation: tuple.1,
13849                    }
13850                }
13851            }
13852        }
13853        {
13854            #[doc(hidden)]
13855            #[allow(dead_code)]
13856            type UnderlyingSolTuple<'a> = ();
13857            #[doc(hidden)]
13858            type UnderlyingRustTuple<'a> = ();
13859            #[cfg(test)]
13860            #[allow(dead_code, unreachable_patterns)]
13861            fn _type_assertion(
13862                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13863            ) {
13864                match _t {
13865                    alloy_sol_types::private::AssertTypeEq::<
13866                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13867                    >(_) => {}
13868                }
13869            }
13870            #[automatically_derived]
13871            #[doc(hidden)]
13872            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
13873                fn from(value: renounceRoleReturn) -> Self {
13874                    ()
13875                }
13876            }
13877            #[automatically_derived]
13878            #[doc(hidden)]
13879            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
13880                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13881                    Self {}
13882                }
13883            }
13884        }
13885        impl renounceRoleReturn {
13886            fn _tokenize(
13887                &self,
13888            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13889                ()
13890            }
13891        }
13892        #[automatically_derived]
13893        impl alloy_sol_types::SolCall for renounceRoleCall {
13894            type Parameters<'a> = (
13895                alloy::sol_types::sol_data::FixedBytes<32>,
13896                alloy::sol_types::sol_data::Address,
13897            );
13898            type Token<'a> = <Self::Parameters<
13899                'a,
13900            > as alloy_sol_types::SolType>::Token<'a>;
13901            type Return = renounceRoleReturn;
13902            type ReturnTuple<'a> = ();
13903            type ReturnToken<'a> = <Self::ReturnTuple<
13904                'a,
13905            > as alloy_sol_types::SolType>::Token<'a>;
13906            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
13907            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
13908            #[inline]
13909            fn new<'a>(
13910                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13911            ) -> Self {
13912                tuple.into()
13913            }
13914            #[inline]
13915            fn tokenize(&self) -> Self::Token<'_> {
13916                (
13917                    <alloy::sol_types::sol_data::FixedBytes<
13918                        32,
13919                    > as alloy_sol_types::SolType>::tokenize(&self.role),
13920                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13921                        &self.callerConfirmation,
13922                    ),
13923                )
13924            }
13925            #[inline]
13926            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13927                renounceRoleReturn::_tokenize(ret)
13928            }
13929            #[inline]
13930            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13931                <Self::ReturnTuple<
13932                    '_,
13933                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13934                    .map(Into::into)
13935            }
13936            #[inline]
13937            fn abi_decode_returns_validate(
13938                data: &[u8],
13939            ) -> alloy_sol_types::Result<Self::Return> {
13940                <Self::ReturnTuple<
13941                    '_,
13942                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13943                    .map(Into::into)
13944            }
13945        }
13946    };
13947    #[derive(serde::Serialize, serde::Deserialize)]
13948    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13949    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
13950```solidity
13951function revokeRole(bytes32 role, address account) external;
13952```*/
13953    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13954    #[derive(Clone)]
13955    pub struct revokeRoleCall {
13956        #[allow(missing_docs)]
13957        pub role: alloy::sol_types::private::FixedBytes<32>,
13958        #[allow(missing_docs)]
13959        pub account: alloy::sol_types::private::Address,
13960    }
13961    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
13962    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13963    #[derive(Clone)]
13964    pub struct revokeRoleReturn {}
13965    #[allow(
13966        non_camel_case_types,
13967        non_snake_case,
13968        clippy::pub_underscore_fields,
13969        clippy::style
13970    )]
13971    const _: () = {
13972        use alloy::sol_types as alloy_sol_types;
13973        {
13974            #[doc(hidden)]
13975            #[allow(dead_code)]
13976            type UnderlyingSolTuple<'a> = (
13977                alloy::sol_types::sol_data::FixedBytes<32>,
13978                alloy::sol_types::sol_data::Address,
13979            );
13980            #[doc(hidden)]
13981            type UnderlyingRustTuple<'a> = (
13982                alloy::sol_types::private::FixedBytes<32>,
13983                alloy::sol_types::private::Address,
13984            );
13985            #[cfg(test)]
13986            #[allow(dead_code, unreachable_patterns)]
13987            fn _type_assertion(
13988                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13989            ) {
13990                match _t {
13991                    alloy_sol_types::private::AssertTypeEq::<
13992                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13993                    >(_) => {}
13994                }
13995            }
13996            #[automatically_derived]
13997            #[doc(hidden)]
13998            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
13999                fn from(value: revokeRoleCall) -> Self {
14000                    (value.role, value.account)
14001                }
14002            }
14003            #[automatically_derived]
14004            #[doc(hidden)]
14005            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
14006                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14007                    Self {
14008                        role: tuple.0,
14009                        account: tuple.1,
14010                    }
14011                }
14012            }
14013        }
14014        {
14015            #[doc(hidden)]
14016            #[allow(dead_code)]
14017            type UnderlyingSolTuple<'a> = ();
14018            #[doc(hidden)]
14019            type UnderlyingRustTuple<'a> = ();
14020            #[cfg(test)]
14021            #[allow(dead_code, unreachable_patterns)]
14022            fn _type_assertion(
14023                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14024            ) {
14025                match _t {
14026                    alloy_sol_types::private::AssertTypeEq::<
14027                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14028                    >(_) => {}
14029                }
14030            }
14031            #[automatically_derived]
14032            #[doc(hidden)]
14033            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
14034                fn from(value: revokeRoleReturn) -> Self {
14035                    ()
14036                }
14037            }
14038            #[automatically_derived]
14039            #[doc(hidden)]
14040            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
14041                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14042                    Self {}
14043                }
14044            }
14045        }
14046        impl revokeRoleReturn {
14047            fn _tokenize(
14048                &self,
14049            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14050                ()
14051            }
14052        }
14053        #[automatically_derived]
14054        impl alloy_sol_types::SolCall for revokeRoleCall {
14055            type Parameters<'a> = (
14056                alloy::sol_types::sol_data::FixedBytes<32>,
14057                alloy::sol_types::sol_data::Address,
14058            );
14059            type Token<'a> = <Self::Parameters<
14060                'a,
14061            > as alloy_sol_types::SolType>::Token<'a>;
14062            type Return = revokeRoleReturn;
14063            type ReturnTuple<'a> = ();
14064            type ReturnToken<'a> = <Self::ReturnTuple<
14065                'a,
14066            > as alloy_sol_types::SolType>::Token<'a>;
14067            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
14068            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
14069            #[inline]
14070            fn new<'a>(
14071                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14072            ) -> Self {
14073                tuple.into()
14074            }
14075            #[inline]
14076            fn tokenize(&self) -> Self::Token<'_> {
14077                (
14078                    <alloy::sol_types::sol_data::FixedBytes<
14079                        32,
14080                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14081                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14082                        &self.account,
14083                    ),
14084                )
14085            }
14086            #[inline]
14087            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14088                revokeRoleReturn::_tokenize(ret)
14089            }
14090            #[inline]
14091            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14092                <Self::ReturnTuple<
14093                    '_,
14094                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14095                    .map(Into::into)
14096            }
14097            #[inline]
14098            fn abi_decode_returns_validate(
14099                data: &[u8],
14100            ) -> alloy_sol_types::Result<Self::Return> {
14101                <Self::ReturnTuple<
14102                    '_,
14103                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14104                    .map(Into::into)
14105            }
14106        }
14107    };
14108    #[derive(serde::Serialize, serde::Deserialize)]
14109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14110    /**Function with signature `schnorrKeys(bytes32)` and selector `0x5f8754a6`.
14111```solidity
14112function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
14113```*/
14114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14115    #[derive(Clone)]
14116    pub struct schnorrKeysCall {
14117        #[allow(missing_docs)]
14118        pub schnorrKey: alloy::sol_types::private::FixedBytes<32>,
14119    }
14120    #[derive(serde::Serialize, serde::Deserialize)]
14121    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14122    ///Container type for the return parameters of the [`schnorrKeys(bytes32)`](schnorrKeysCall) function.
14123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14124    #[derive(Clone)]
14125    pub struct schnorrKeysReturn {
14126        #[allow(missing_docs)]
14127        pub used: bool,
14128    }
14129    #[allow(
14130        non_camel_case_types,
14131        non_snake_case,
14132        clippy::pub_underscore_fields,
14133        clippy::style
14134    )]
14135    const _: () = {
14136        use alloy::sol_types as alloy_sol_types;
14137        {
14138            #[doc(hidden)]
14139            #[allow(dead_code)]
14140            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14141            #[doc(hidden)]
14142            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
14143            #[cfg(test)]
14144            #[allow(dead_code, unreachable_patterns)]
14145            fn _type_assertion(
14146                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14147            ) {
14148                match _t {
14149                    alloy_sol_types::private::AssertTypeEq::<
14150                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14151                    >(_) => {}
14152                }
14153            }
14154            #[automatically_derived]
14155            #[doc(hidden)]
14156            impl ::core::convert::From<schnorrKeysCall> for UnderlyingRustTuple<'_> {
14157                fn from(value: schnorrKeysCall) -> Self {
14158                    (value.schnorrKey,)
14159                }
14160            }
14161            #[automatically_derived]
14162            #[doc(hidden)]
14163            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysCall {
14164                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14165                    Self { schnorrKey: tuple.0 }
14166                }
14167            }
14168        }
14169        {
14170            #[doc(hidden)]
14171            #[allow(dead_code)]
14172            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14173            #[doc(hidden)]
14174            type UnderlyingRustTuple<'a> = (bool,);
14175            #[cfg(test)]
14176            #[allow(dead_code, unreachable_patterns)]
14177            fn _type_assertion(
14178                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14179            ) {
14180                match _t {
14181                    alloy_sol_types::private::AssertTypeEq::<
14182                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14183                    >(_) => {}
14184                }
14185            }
14186            #[automatically_derived]
14187            #[doc(hidden)]
14188            impl ::core::convert::From<schnorrKeysReturn> for UnderlyingRustTuple<'_> {
14189                fn from(value: schnorrKeysReturn) -> Self {
14190                    (value.used,)
14191                }
14192            }
14193            #[automatically_derived]
14194            #[doc(hidden)]
14195            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysReturn {
14196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14197                    Self { used: tuple.0 }
14198                }
14199            }
14200        }
14201        #[automatically_derived]
14202        impl alloy_sol_types::SolCall for schnorrKeysCall {
14203            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14204            type Token<'a> = <Self::Parameters<
14205                'a,
14206            > as alloy_sol_types::SolType>::Token<'a>;
14207            type Return = bool;
14208            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14209            type ReturnToken<'a> = <Self::ReturnTuple<
14210                'a,
14211            > as alloy_sol_types::SolType>::Token<'a>;
14212            const SIGNATURE: &'static str = "schnorrKeys(bytes32)";
14213            const SELECTOR: [u8; 4] = [95u8, 135u8, 84u8, 166u8];
14214            #[inline]
14215            fn new<'a>(
14216                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14217            ) -> Self {
14218                tuple.into()
14219            }
14220            #[inline]
14221            fn tokenize(&self) -> Self::Token<'_> {
14222                (
14223                    <alloy::sol_types::sol_data::FixedBytes<
14224                        32,
14225                    > as alloy_sol_types::SolType>::tokenize(&self.schnorrKey),
14226                )
14227            }
14228            #[inline]
14229            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14230                (
14231                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
14232                        ret,
14233                    ),
14234                )
14235            }
14236            #[inline]
14237            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14238                <Self::ReturnTuple<
14239                    '_,
14240                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14241                    .map(|r| {
14242                        let r: schnorrKeysReturn = r.into();
14243                        r.used
14244                    })
14245            }
14246            #[inline]
14247            fn abi_decode_returns_validate(
14248                data: &[u8],
14249            ) -> alloy_sol_types::Result<Self::Return> {
14250                <Self::ReturnTuple<
14251                    '_,
14252                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14253                    .map(|r| {
14254                        let r: schnorrKeysReturn = r.into();
14255                        r.used
14256                    })
14257            }
14258        }
14259    };
14260    #[derive(serde::Serialize, serde::Deserialize)]
14261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14262    /**Function with signature `setMaxCommissionIncrease(uint16)` and selector `0x2dc9bac6`.
14263```solidity
14264function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
14265```*/
14266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14267    #[derive(Clone)]
14268    pub struct setMaxCommissionIncreaseCall {
14269        #[allow(missing_docs)]
14270        pub newMaxIncrease: u16,
14271    }
14272    ///Container type for the return parameters of the [`setMaxCommissionIncrease(uint16)`](setMaxCommissionIncreaseCall) function.
14273    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14274    #[derive(Clone)]
14275    pub struct setMaxCommissionIncreaseReturn {}
14276    #[allow(
14277        non_camel_case_types,
14278        non_snake_case,
14279        clippy::pub_underscore_fields,
14280        clippy::style
14281    )]
14282    const _: () = {
14283        use alloy::sol_types as alloy_sol_types;
14284        {
14285            #[doc(hidden)]
14286            #[allow(dead_code)]
14287            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
14288            #[doc(hidden)]
14289            type UnderlyingRustTuple<'a> = (u16,);
14290            #[cfg(test)]
14291            #[allow(dead_code, unreachable_patterns)]
14292            fn _type_assertion(
14293                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14294            ) {
14295                match _t {
14296                    alloy_sol_types::private::AssertTypeEq::<
14297                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14298                    >(_) => {}
14299                }
14300            }
14301            #[automatically_derived]
14302            #[doc(hidden)]
14303            impl ::core::convert::From<setMaxCommissionIncreaseCall>
14304            for UnderlyingRustTuple<'_> {
14305                fn from(value: setMaxCommissionIncreaseCall) -> Self {
14306                    (value.newMaxIncrease,)
14307                }
14308            }
14309            #[automatically_derived]
14310            #[doc(hidden)]
14311            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14312            for setMaxCommissionIncreaseCall {
14313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14314                    Self { newMaxIncrease: tuple.0 }
14315                }
14316            }
14317        }
14318        {
14319            #[doc(hidden)]
14320            #[allow(dead_code)]
14321            type UnderlyingSolTuple<'a> = ();
14322            #[doc(hidden)]
14323            type UnderlyingRustTuple<'a> = ();
14324            #[cfg(test)]
14325            #[allow(dead_code, unreachable_patterns)]
14326            fn _type_assertion(
14327                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14328            ) {
14329                match _t {
14330                    alloy_sol_types::private::AssertTypeEq::<
14331                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14332                    >(_) => {}
14333                }
14334            }
14335            #[automatically_derived]
14336            #[doc(hidden)]
14337            impl ::core::convert::From<setMaxCommissionIncreaseReturn>
14338            for UnderlyingRustTuple<'_> {
14339                fn from(value: setMaxCommissionIncreaseReturn) -> Self {
14340                    ()
14341                }
14342            }
14343            #[automatically_derived]
14344            #[doc(hidden)]
14345            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14346            for setMaxCommissionIncreaseReturn {
14347                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14348                    Self {}
14349                }
14350            }
14351        }
14352        impl setMaxCommissionIncreaseReturn {
14353            fn _tokenize(
14354                &self,
14355            ) -> <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::ReturnToken<
14356                '_,
14357            > {
14358                ()
14359            }
14360        }
14361        #[automatically_derived]
14362        impl alloy_sol_types::SolCall for setMaxCommissionIncreaseCall {
14363            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
14364            type Token<'a> = <Self::Parameters<
14365                'a,
14366            > as alloy_sol_types::SolType>::Token<'a>;
14367            type Return = setMaxCommissionIncreaseReturn;
14368            type ReturnTuple<'a> = ();
14369            type ReturnToken<'a> = <Self::ReturnTuple<
14370                'a,
14371            > as alloy_sol_types::SolType>::Token<'a>;
14372            const SIGNATURE: &'static str = "setMaxCommissionIncrease(uint16)";
14373            const SELECTOR: [u8; 4] = [45u8, 201u8, 186u8, 198u8];
14374            #[inline]
14375            fn new<'a>(
14376                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14377            ) -> Self {
14378                tuple.into()
14379            }
14380            #[inline]
14381            fn tokenize(&self) -> Self::Token<'_> {
14382                (
14383                    <alloy::sol_types::sol_data::Uint<
14384                        16,
14385                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
14386                )
14387            }
14388            #[inline]
14389            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14390                setMaxCommissionIncreaseReturn::_tokenize(ret)
14391            }
14392            #[inline]
14393            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14394                <Self::ReturnTuple<
14395                    '_,
14396                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14397                    .map(Into::into)
14398            }
14399            #[inline]
14400            fn abi_decode_returns_validate(
14401                data: &[u8],
14402            ) -> alloy_sol_types::Result<Self::Return> {
14403                <Self::ReturnTuple<
14404                    '_,
14405                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14406                    .map(Into::into)
14407            }
14408        }
14409    };
14410    #[derive(serde::Serialize, serde::Deserialize)]
14411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14412    /**Function with signature `setMinCommissionUpdateInterval(uint256)` and selector `0x394b348f`.
14413```solidity
14414function setMinCommissionUpdateInterval(uint256 newInterval) external;
14415```*/
14416    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14417    #[derive(Clone)]
14418    pub struct setMinCommissionUpdateIntervalCall {
14419        #[allow(missing_docs)]
14420        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
14421    }
14422    ///Container type for the return parameters of the [`setMinCommissionUpdateInterval(uint256)`](setMinCommissionUpdateIntervalCall) function.
14423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14424    #[derive(Clone)]
14425    pub struct setMinCommissionUpdateIntervalReturn {}
14426    #[allow(
14427        non_camel_case_types,
14428        non_snake_case,
14429        clippy::pub_underscore_fields,
14430        clippy::style
14431    )]
14432    const _: () = {
14433        use alloy::sol_types as alloy_sol_types;
14434        {
14435            #[doc(hidden)]
14436            #[allow(dead_code)]
14437            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14438            #[doc(hidden)]
14439            type UnderlyingRustTuple<'a> = (
14440                alloy::sol_types::private::primitives::aliases::U256,
14441            );
14442            #[cfg(test)]
14443            #[allow(dead_code, unreachable_patterns)]
14444            fn _type_assertion(
14445                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14446            ) {
14447                match _t {
14448                    alloy_sol_types::private::AssertTypeEq::<
14449                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14450                    >(_) => {}
14451                }
14452            }
14453            #[automatically_derived]
14454            #[doc(hidden)]
14455            impl ::core::convert::From<setMinCommissionUpdateIntervalCall>
14456            for UnderlyingRustTuple<'_> {
14457                fn from(value: setMinCommissionUpdateIntervalCall) -> Self {
14458                    (value.newInterval,)
14459                }
14460            }
14461            #[automatically_derived]
14462            #[doc(hidden)]
14463            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14464            for setMinCommissionUpdateIntervalCall {
14465                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14466                    Self { newInterval: tuple.0 }
14467                }
14468            }
14469        }
14470        {
14471            #[doc(hidden)]
14472            #[allow(dead_code)]
14473            type UnderlyingSolTuple<'a> = ();
14474            #[doc(hidden)]
14475            type UnderlyingRustTuple<'a> = ();
14476            #[cfg(test)]
14477            #[allow(dead_code, unreachable_patterns)]
14478            fn _type_assertion(
14479                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14480            ) {
14481                match _t {
14482                    alloy_sol_types::private::AssertTypeEq::<
14483                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14484                    >(_) => {}
14485                }
14486            }
14487            #[automatically_derived]
14488            #[doc(hidden)]
14489            impl ::core::convert::From<setMinCommissionUpdateIntervalReturn>
14490            for UnderlyingRustTuple<'_> {
14491                fn from(value: setMinCommissionUpdateIntervalReturn) -> Self {
14492                    ()
14493                }
14494            }
14495            #[automatically_derived]
14496            #[doc(hidden)]
14497            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14498            for setMinCommissionUpdateIntervalReturn {
14499                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14500                    Self {}
14501                }
14502            }
14503        }
14504        impl setMinCommissionUpdateIntervalReturn {
14505            fn _tokenize(
14506                &self,
14507            ) -> <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::ReturnToken<
14508                '_,
14509            > {
14510                ()
14511            }
14512        }
14513        #[automatically_derived]
14514        impl alloy_sol_types::SolCall for setMinCommissionUpdateIntervalCall {
14515            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14516            type Token<'a> = <Self::Parameters<
14517                'a,
14518            > as alloy_sol_types::SolType>::Token<'a>;
14519            type Return = setMinCommissionUpdateIntervalReturn;
14520            type ReturnTuple<'a> = ();
14521            type ReturnToken<'a> = <Self::ReturnTuple<
14522                'a,
14523            > as alloy_sol_types::SolType>::Token<'a>;
14524            const SIGNATURE: &'static str = "setMinCommissionUpdateInterval(uint256)";
14525            const SELECTOR: [u8; 4] = [57u8, 75u8, 52u8, 143u8];
14526            #[inline]
14527            fn new<'a>(
14528                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14529            ) -> Self {
14530                tuple.into()
14531            }
14532            #[inline]
14533            fn tokenize(&self) -> Self::Token<'_> {
14534                (
14535                    <alloy::sol_types::sol_data::Uint<
14536                        256,
14537                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
14538                )
14539            }
14540            #[inline]
14541            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14542                setMinCommissionUpdateIntervalReturn::_tokenize(ret)
14543            }
14544            #[inline]
14545            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14546                <Self::ReturnTuple<
14547                    '_,
14548                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14549                    .map(Into::into)
14550            }
14551            #[inline]
14552            fn abi_decode_returns_validate(
14553                data: &[u8],
14554            ) -> alloy_sol_types::Result<Self::Return> {
14555                <Self::ReturnTuple<
14556                    '_,
14557                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14558                    .map(Into::into)
14559            }
14560        }
14561    };
14562    #[derive(serde::Serialize, serde::Deserialize)]
14563    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14564    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
14565```solidity
14566function supportsInterface(bytes4 interfaceId) external view returns (bool);
14567```*/
14568    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14569    #[derive(Clone)]
14570    pub struct supportsInterfaceCall {
14571        #[allow(missing_docs)]
14572        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
14573    }
14574    #[derive(serde::Serialize, serde::Deserialize)]
14575    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14576    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
14577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14578    #[derive(Clone)]
14579    pub struct supportsInterfaceReturn {
14580        #[allow(missing_docs)]
14581        pub _0: bool,
14582    }
14583    #[allow(
14584        non_camel_case_types,
14585        non_snake_case,
14586        clippy::pub_underscore_fields,
14587        clippy::style
14588    )]
14589    const _: () = {
14590        use alloy::sol_types as alloy_sol_types;
14591        {
14592            #[doc(hidden)]
14593            #[allow(dead_code)]
14594            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
14595            #[doc(hidden)]
14596            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
14597            #[cfg(test)]
14598            #[allow(dead_code, unreachable_patterns)]
14599            fn _type_assertion(
14600                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14601            ) {
14602                match _t {
14603                    alloy_sol_types::private::AssertTypeEq::<
14604                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14605                    >(_) => {}
14606                }
14607            }
14608            #[automatically_derived]
14609            #[doc(hidden)]
14610            impl ::core::convert::From<supportsInterfaceCall>
14611            for UnderlyingRustTuple<'_> {
14612                fn from(value: supportsInterfaceCall) -> Self {
14613                    (value.interfaceId,)
14614                }
14615            }
14616            #[automatically_derived]
14617            #[doc(hidden)]
14618            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14619            for supportsInterfaceCall {
14620                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14621                    Self { interfaceId: tuple.0 }
14622                }
14623            }
14624        }
14625        {
14626            #[doc(hidden)]
14627            #[allow(dead_code)]
14628            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14629            #[doc(hidden)]
14630            type UnderlyingRustTuple<'a> = (bool,);
14631            #[cfg(test)]
14632            #[allow(dead_code, unreachable_patterns)]
14633            fn _type_assertion(
14634                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14635            ) {
14636                match _t {
14637                    alloy_sol_types::private::AssertTypeEq::<
14638                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14639                    >(_) => {}
14640                }
14641            }
14642            #[automatically_derived]
14643            #[doc(hidden)]
14644            impl ::core::convert::From<supportsInterfaceReturn>
14645            for UnderlyingRustTuple<'_> {
14646                fn from(value: supportsInterfaceReturn) -> Self {
14647                    (value._0,)
14648                }
14649            }
14650            #[automatically_derived]
14651            #[doc(hidden)]
14652            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14653            for supportsInterfaceReturn {
14654                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14655                    Self { _0: tuple.0 }
14656                }
14657            }
14658        }
14659        #[automatically_derived]
14660        impl alloy_sol_types::SolCall for supportsInterfaceCall {
14661            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
14662            type Token<'a> = <Self::Parameters<
14663                'a,
14664            > as alloy_sol_types::SolType>::Token<'a>;
14665            type Return = bool;
14666            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14667            type ReturnToken<'a> = <Self::ReturnTuple<
14668                'a,
14669            > as alloy_sol_types::SolType>::Token<'a>;
14670            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
14671            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
14672            #[inline]
14673            fn new<'a>(
14674                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14675            ) -> Self {
14676                tuple.into()
14677            }
14678            #[inline]
14679            fn tokenize(&self) -> Self::Token<'_> {
14680                (
14681                    <alloy::sol_types::sol_data::FixedBytes<
14682                        4,
14683                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
14684                )
14685            }
14686            #[inline]
14687            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14688                (
14689                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
14690                        ret,
14691                    ),
14692                )
14693            }
14694            #[inline]
14695            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14696                <Self::ReturnTuple<
14697                    '_,
14698                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14699                    .map(|r| {
14700                        let r: supportsInterfaceReturn = r.into();
14701                        r._0
14702                    })
14703            }
14704            #[inline]
14705            fn abi_decode_returns_validate(
14706                data: &[u8],
14707            ) -> alloy_sol_types::Result<Self::Return> {
14708                <Self::ReturnTuple<
14709                    '_,
14710                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14711                    .map(|r| {
14712                        let r: supportsInterfaceReturn = r.into();
14713                        r._0
14714                    })
14715            }
14716        }
14717    };
14718    #[derive(serde::Serialize, serde::Deserialize)]
14719    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14720    /**Function with signature `token()` and selector `0xfc0c546a`.
14721```solidity
14722function token() external view returns (address);
14723```*/
14724    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14725    #[derive(Clone)]
14726    pub struct tokenCall;
14727    #[derive(serde::Serialize, serde::Deserialize)]
14728    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14729    ///Container type for the return parameters of the [`token()`](tokenCall) function.
14730    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14731    #[derive(Clone)]
14732    pub struct tokenReturn {
14733        #[allow(missing_docs)]
14734        pub _0: alloy::sol_types::private::Address,
14735    }
14736    #[allow(
14737        non_camel_case_types,
14738        non_snake_case,
14739        clippy::pub_underscore_fields,
14740        clippy::style
14741    )]
14742    const _: () = {
14743        use alloy::sol_types as alloy_sol_types;
14744        {
14745            #[doc(hidden)]
14746            #[allow(dead_code)]
14747            type UnderlyingSolTuple<'a> = ();
14748            #[doc(hidden)]
14749            type UnderlyingRustTuple<'a> = ();
14750            #[cfg(test)]
14751            #[allow(dead_code, unreachable_patterns)]
14752            fn _type_assertion(
14753                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14754            ) {
14755                match _t {
14756                    alloy_sol_types::private::AssertTypeEq::<
14757                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14758                    >(_) => {}
14759                }
14760            }
14761            #[automatically_derived]
14762            #[doc(hidden)]
14763            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
14764                fn from(value: tokenCall) -> Self {
14765                    ()
14766                }
14767            }
14768            #[automatically_derived]
14769            #[doc(hidden)]
14770            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
14771                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14772                    Self
14773                }
14774            }
14775        }
14776        {
14777            #[doc(hidden)]
14778            #[allow(dead_code)]
14779            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14780            #[doc(hidden)]
14781            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14782            #[cfg(test)]
14783            #[allow(dead_code, unreachable_patterns)]
14784            fn _type_assertion(
14785                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14786            ) {
14787                match _t {
14788                    alloy_sol_types::private::AssertTypeEq::<
14789                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14790                    >(_) => {}
14791                }
14792            }
14793            #[automatically_derived]
14794            #[doc(hidden)]
14795            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
14796                fn from(value: tokenReturn) -> Self {
14797                    (value._0,)
14798                }
14799            }
14800            #[automatically_derived]
14801            #[doc(hidden)]
14802            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
14803                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14804                    Self { _0: tuple.0 }
14805                }
14806            }
14807        }
14808        #[automatically_derived]
14809        impl alloy_sol_types::SolCall for tokenCall {
14810            type Parameters<'a> = ();
14811            type Token<'a> = <Self::Parameters<
14812                'a,
14813            > as alloy_sol_types::SolType>::Token<'a>;
14814            type Return = alloy::sol_types::private::Address;
14815            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
14816            type ReturnToken<'a> = <Self::ReturnTuple<
14817                'a,
14818            > as alloy_sol_types::SolType>::Token<'a>;
14819            const SIGNATURE: &'static str = "token()";
14820            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
14821            #[inline]
14822            fn new<'a>(
14823                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14824            ) -> Self {
14825                tuple.into()
14826            }
14827            #[inline]
14828            fn tokenize(&self) -> Self::Token<'_> {
14829                ()
14830            }
14831            #[inline]
14832            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14833                (
14834                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14835                        ret,
14836                    ),
14837                )
14838            }
14839            #[inline]
14840            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14841                <Self::ReturnTuple<
14842                    '_,
14843                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14844                    .map(|r| {
14845                        let r: tokenReturn = r.into();
14846                        r._0
14847                    })
14848            }
14849            #[inline]
14850            fn abi_decode_returns_validate(
14851                data: &[u8],
14852            ) -> alloy_sol_types::Result<Self::Return> {
14853                <Self::ReturnTuple<
14854                    '_,
14855                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14856                    .map(|r| {
14857                        let r: tokenReturn = r.into();
14858                        r._0
14859                    })
14860            }
14861        }
14862    };
14863    #[derive(serde::Serialize, serde::Deserialize)]
14864    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14865    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
14866```solidity
14867function transferOwnership(address newOwner) external;
14868```*/
14869    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14870    #[derive(Clone)]
14871    pub struct transferOwnershipCall {
14872        #[allow(missing_docs)]
14873        pub newOwner: alloy::sol_types::private::Address,
14874    }
14875    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
14876    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14877    #[derive(Clone)]
14878    pub struct transferOwnershipReturn {}
14879    #[allow(
14880        non_camel_case_types,
14881        non_snake_case,
14882        clippy::pub_underscore_fields,
14883        clippy::style
14884    )]
14885    const _: () = {
14886        use alloy::sol_types as alloy_sol_types;
14887        {
14888            #[doc(hidden)]
14889            #[allow(dead_code)]
14890            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14891            #[doc(hidden)]
14892            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14893            #[cfg(test)]
14894            #[allow(dead_code, unreachable_patterns)]
14895            fn _type_assertion(
14896                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14897            ) {
14898                match _t {
14899                    alloy_sol_types::private::AssertTypeEq::<
14900                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14901                    >(_) => {}
14902                }
14903            }
14904            #[automatically_derived]
14905            #[doc(hidden)]
14906            impl ::core::convert::From<transferOwnershipCall>
14907            for UnderlyingRustTuple<'_> {
14908                fn from(value: transferOwnershipCall) -> Self {
14909                    (value.newOwner,)
14910                }
14911            }
14912            #[automatically_derived]
14913            #[doc(hidden)]
14914            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14915            for transferOwnershipCall {
14916                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14917                    Self { newOwner: tuple.0 }
14918                }
14919            }
14920        }
14921        {
14922            #[doc(hidden)]
14923            #[allow(dead_code)]
14924            type UnderlyingSolTuple<'a> = ();
14925            #[doc(hidden)]
14926            type UnderlyingRustTuple<'a> = ();
14927            #[cfg(test)]
14928            #[allow(dead_code, unreachable_patterns)]
14929            fn _type_assertion(
14930                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14931            ) {
14932                match _t {
14933                    alloy_sol_types::private::AssertTypeEq::<
14934                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14935                    >(_) => {}
14936                }
14937            }
14938            #[automatically_derived]
14939            #[doc(hidden)]
14940            impl ::core::convert::From<transferOwnershipReturn>
14941            for UnderlyingRustTuple<'_> {
14942                fn from(value: transferOwnershipReturn) -> Self {
14943                    ()
14944                }
14945            }
14946            #[automatically_derived]
14947            #[doc(hidden)]
14948            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14949            for transferOwnershipReturn {
14950                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14951                    Self {}
14952                }
14953            }
14954        }
14955        impl transferOwnershipReturn {
14956            fn _tokenize(
14957                &self,
14958            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14959                ()
14960            }
14961        }
14962        #[automatically_derived]
14963        impl alloy_sol_types::SolCall for transferOwnershipCall {
14964            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14965            type Token<'a> = <Self::Parameters<
14966                'a,
14967            > as alloy_sol_types::SolType>::Token<'a>;
14968            type Return = transferOwnershipReturn;
14969            type ReturnTuple<'a> = ();
14970            type ReturnToken<'a> = <Self::ReturnTuple<
14971                'a,
14972            > as alloy_sol_types::SolType>::Token<'a>;
14973            const SIGNATURE: &'static str = "transferOwnership(address)";
14974            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
14975            #[inline]
14976            fn new<'a>(
14977                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14978            ) -> Self {
14979                tuple.into()
14980            }
14981            #[inline]
14982            fn tokenize(&self) -> Self::Token<'_> {
14983                (
14984                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14985                        &self.newOwner,
14986                    ),
14987                )
14988            }
14989            #[inline]
14990            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14991                transferOwnershipReturn::_tokenize(ret)
14992            }
14993            #[inline]
14994            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14995                <Self::ReturnTuple<
14996                    '_,
14997                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14998                    .map(Into::into)
14999            }
15000            #[inline]
15001            fn abi_decode_returns_validate(
15002                data: &[u8],
15003            ) -> alloy_sol_types::Result<Self::Return> {
15004                <Self::ReturnTuple<
15005                    '_,
15006                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15007                    .map(Into::into)
15008            }
15009        }
15010    };
15011    #[derive(serde::Serialize, serde::Deserialize)]
15012    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15013    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
15014```solidity
15015function undelegate(address validator, uint256 amount) external;
15016```*/
15017    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15018    #[derive(Clone)]
15019    pub struct undelegateCall {
15020        #[allow(missing_docs)]
15021        pub validator: alloy::sol_types::private::Address,
15022        #[allow(missing_docs)]
15023        pub amount: alloy::sol_types::private::primitives::aliases::U256,
15024    }
15025    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
15026    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15027    #[derive(Clone)]
15028    pub struct undelegateReturn {}
15029    #[allow(
15030        non_camel_case_types,
15031        non_snake_case,
15032        clippy::pub_underscore_fields,
15033        clippy::style
15034    )]
15035    const _: () = {
15036        use alloy::sol_types as alloy_sol_types;
15037        {
15038            #[doc(hidden)]
15039            #[allow(dead_code)]
15040            type UnderlyingSolTuple<'a> = (
15041                alloy::sol_types::sol_data::Address,
15042                alloy::sol_types::sol_data::Uint<256>,
15043            );
15044            #[doc(hidden)]
15045            type UnderlyingRustTuple<'a> = (
15046                alloy::sol_types::private::Address,
15047                alloy::sol_types::private::primitives::aliases::U256,
15048            );
15049            #[cfg(test)]
15050            #[allow(dead_code, unreachable_patterns)]
15051            fn _type_assertion(
15052                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15053            ) {
15054                match _t {
15055                    alloy_sol_types::private::AssertTypeEq::<
15056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15057                    >(_) => {}
15058                }
15059            }
15060            #[automatically_derived]
15061            #[doc(hidden)]
15062            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
15063                fn from(value: undelegateCall) -> Self {
15064                    (value.validator, value.amount)
15065                }
15066            }
15067            #[automatically_derived]
15068            #[doc(hidden)]
15069            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
15070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15071                    Self {
15072                        validator: tuple.0,
15073                        amount: tuple.1,
15074                    }
15075                }
15076            }
15077        }
15078        {
15079            #[doc(hidden)]
15080            #[allow(dead_code)]
15081            type UnderlyingSolTuple<'a> = ();
15082            #[doc(hidden)]
15083            type UnderlyingRustTuple<'a> = ();
15084            #[cfg(test)]
15085            #[allow(dead_code, unreachable_patterns)]
15086            fn _type_assertion(
15087                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15088            ) {
15089                match _t {
15090                    alloy_sol_types::private::AssertTypeEq::<
15091                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15092                    >(_) => {}
15093                }
15094            }
15095            #[automatically_derived]
15096            #[doc(hidden)]
15097            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
15098                fn from(value: undelegateReturn) -> Self {
15099                    ()
15100                }
15101            }
15102            #[automatically_derived]
15103            #[doc(hidden)]
15104            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
15105                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15106                    Self {}
15107                }
15108            }
15109        }
15110        impl undelegateReturn {
15111            fn _tokenize(
15112                &self,
15113            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15114                ()
15115            }
15116        }
15117        #[automatically_derived]
15118        impl alloy_sol_types::SolCall for undelegateCall {
15119            type Parameters<'a> = (
15120                alloy::sol_types::sol_data::Address,
15121                alloy::sol_types::sol_data::Uint<256>,
15122            );
15123            type Token<'a> = <Self::Parameters<
15124                'a,
15125            > as alloy_sol_types::SolType>::Token<'a>;
15126            type Return = undelegateReturn;
15127            type ReturnTuple<'a> = ();
15128            type ReturnToken<'a> = <Self::ReturnTuple<
15129                'a,
15130            > as alloy_sol_types::SolType>::Token<'a>;
15131            const SIGNATURE: &'static str = "undelegate(address,uint256)";
15132            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
15133            #[inline]
15134            fn new<'a>(
15135                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15136            ) -> Self {
15137                tuple.into()
15138            }
15139            #[inline]
15140            fn tokenize(&self) -> Self::Token<'_> {
15141                (
15142                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15143                        &self.validator,
15144                    ),
15145                    <alloy::sol_types::sol_data::Uint<
15146                        256,
15147                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
15148                )
15149            }
15150            #[inline]
15151            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15152                undelegateReturn::_tokenize(ret)
15153            }
15154            #[inline]
15155            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15156                <Self::ReturnTuple<
15157                    '_,
15158                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15159                    .map(Into::into)
15160            }
15161            #[inline]
15162            fn abi_decode_returns_validate(
15163                data: &[u8],
15164            ) -> alloy_sol_types::Result<Self::Return> {
15165                <Self::ReturnTuple<
15166                    '_,
15167                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15168                    .map(Into::into)
15169            }
15170        }
15171    };
15172    #[derive(serde::Serialize, serde::Deserialize)]
15173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15174    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
15175```solidity
15176function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
15177```*/
15178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15179    #[derive(Clone)]
15180    pub struct undelegationsCall {
15181        #[allow(missing_docs)]
15182        pub validator: alloy::sol_types::private::Address,
15183        #[allow(missing_docs)]
15184        pub delegator: alloy::sol_types::private::Address,
15185    }
15186    #[derive(serde::Serialize, serde::Deserialize)]
15187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15188    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
15189    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15190    #[derive(Clone)]
15191    pub struct undelegationsReturn {
15192        #[allow(missing_docs)]
15193        pub amount: alloy::sol_types::private::primitives::aliases::U256,
15194        #[allow(missing_docs)]
15195        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
15196    }
15197    #[allow(
15198        non_camel_case_types,
15199        non_snake_case,
15200        clippy::pub_underscore_fields,
15201        clippy::style
15202    )]
15203    const _: () = {
15204        use alloy::sol_types as alloy_sol_types;
15205        {
15206            #[doc(hidden)]
15207            #[allow(dead_code)]
15208            type UnderlyingSolTuple<'a> = (
15209                alloy::sol_types::sol_data::Address,
15210                alloy::sol_types::sol_data::Address,
15211            );
15212            #[doc(hidden)]
15213            type UnderlyingRustTuple<'a> = (
15214                alloy::sol_types::private::Address,
15215                alloy::sol_types::private::Address,
15216            );
15217            #[cfg(test)]
15218            #[allow(dead_code, unreachable_patterns)]
15219            fn _type_assertion(
15220                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15221            ) {
15222                match _t {
15223                    alloy_sol_types::private::AssertTypeEq::<
15224                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15225                    >(_) => {}
15226                }
15227            }
15228            #[automatically_derived]
15229            #[doc(hidden)]
15230            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
15231                fn from(value: undelegationsCall) -> Self {
15232                    (value.validator, value.delegator)
15233                }
15234            }
15235            #[automatically_derived]
15236            #[doc(hidden)]
15237            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
15238                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15239                    Self {
15240                        validator: tuple.0,
15241                        delegator: tuple.1,
15242                    }
15243                }
15244            }
15245        }
15246        {
15247            #[doc(hidden)]
15248            #[allow(dead_code)]
15249            type UnderlyingSolTuple<'a> = (
15250                alloy::sol_types::sol_data::Uint<256>,
15251                alloy::sol_types::sol_data::Uint<256>,
15252            );
15253            #[doc(hidden)]
15254            type UnderlyingRustTuple<'a> = (
15255                alloy::sol_types::private::primitives::aliases::U256,
15256                alloy::sol_types::private::primitives::aliases::U256,
15257            );
15258            #[cfg(test)]
15259            #[allow(dead_code, unreachable_patterns)]
15260            fn _type_assertion(
15261                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15262            ) {
15263                match _t {
15264                    alloy_sol_types::private::AssertTypeEq::<
15265                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15266                    >(_) => {}
15267                }
15268            }
15269            #[automatically_derived]
15270            #[doc(hidden)]
15271            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
15272                fn from(value: undelegationsReturn) -> Self {
15273                    (value.amount, value.unlocksAt)
15274                }
15275            }
15276            #[automatically_derived]
15277            #[doc(hidden)]
15278            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
15279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15280                    Self {
15281                        amount: tuple.0,
15282                        unlocksAt: tuple.1,
15283                    }
15284                }
15285            }
15286        }
15287        impl undelegationsReturn {
15288            fn _tokenize(
15289                &self,
15290            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15291                (
15292                    <alloy::sol_types::sol_data::Uint<
15293                        256,
15294                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
15295                    <alloy::sol_types::sol_data::Uint<
15296                        256,
15297                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
15298                )
15299            }
15300        }
15301        #[automatically_derived]
15302        impl alloy_sol_types::SolCall for undelegationsCall {
15303            type Parameters<'a> = (
15304                alloy::sol_types::sol_data::Address,
15305                alloy::sol_types::sol_data::Address,
15306            );
15307            type Token<'a> = <Self::Parameters<
15308                'a,
15309            > as alloy_sol_types::SolType>::Token<'a>;
15310            type Return = undelegationsReturn;
15311            type ReturnTuple<'a> = (
15312                alloy::sol_types::sol_data::Uint<256>,
15313                alloy::sol_types::sol_data::Uint<256>,
15314            );
15315            type ReturnToken<'a> = <Self::ReturnTuple<
15316                'a,
15317            > as alloy_sol_types::SolType>::Token<'a>;
15318            const SIGNATURE: &'static str = "undelegations(address,address)";
15319            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
15320            #[inline]
15321            fn new<'a>(
15322                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15323            ) -> Self {
15324                tuple.into()
15325            }
15326            #[inline]
15327            fn tokenize(&self) -> Self::Token<'_> {
15328                (
15329                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15330                        &self.validator,
15331                    ),
15332                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15333                        &self.delegator,
15334                    ),
15335                )
15336            }
15337            #[inline]
15338            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15339                undelegationsReturn::_tokenize(ret)
15340            }
15341            #[inline]
15342            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15343                <Self::ReturnTuple<
15344                    '_,
15345                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15346                    .map(Into::into)
15347            }
15348            #[inline]
15349            fn abi_decode_returns_validate(
15350                data: &[u8],
15351            ) -> alloy_sol_types::Result<Self::Return> {
15352                <Self::ReturnTuple<
15353                    '_,
15354                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15355                    .map(Into::into)
15356            }
15357        }
15358    };
15359    #[derive(serde::Serialize, serde::Deserialize)]
15360    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15361    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
15362```solidity
15363function unpause() external;
15364```*/
15365    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15366    #[derive(Clone)]
15367    pub struct unpauseCall;
15368    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
15369    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15370    #[derive(Clone)]
15371    pub struct unpauseReturn {}
15372    #[allow(
15373        non_camel_case_types,
15374        non_snake_case,
15375        clippy::pub_underscore_fields,
15376        clippy::style
15377    )]
15378    const _: () = {
15379        use alloy::sol_types as alloy_sol_types;
15380        {
15381            #[doc(hidden)]
15382            #[allow(dead_code)]
15383            type UnderlyingSolTuple<'a> = ();
15384            #[doc(hidden)]
15385            type UnderlyingRustTuple<'a> = ();
15386            #[cfg(test)]
15387            #[allow(dead_code, unreachable_patterns)]
15388            fn _type_assertion(
15389                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15390            ) {
15391                match _t {
15392                    alloy_sol_types::private::AssertTypeEq::<
15393                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15394                    >(_) => {}
15395                }
15396            }
15397            #[automatically_derived]
15398            #[doc(hidden)]
15399            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
15400                fn from(value: unpauseCall) -> Self {
15401                    ()
15402                }
15403            }
15404            #[automatically_derived]
15405            #[doc(hidden)]
15406            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
15407                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15408                    Self
15409                }
15410            }
15411        }
15412        {
15413            #[doc(hidden)]
15414            #[allow(dead_code)]
15415            type UnderlyingSolTuple<'a> = ();
15416            #[doc(hidden)]
15417            type UnderlyingRustTuple<'a> = ();
15418            #[cfg(test)]
15419            #[allow(dead_code, unreachable_patterns)]
15420            fn _type_assertion(
15421                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15422            ) {
15423                match _t {
15424                    alloy_sol_types::private::AssertTypeEq::<
15425                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15426                    >(_) => {}
15427                }
15428            }
15429            #[automatically_derived]
15430            #[doc(hidden)]
15431            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
15432                fn from(value: unpauseReturn) -> Self {
15433                    ()
15434                }
15435            }
15436            #[automatically_derived]
15437            #[doc(hidden)]
15438            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
15439                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15440                    Self {}
15441                }
15442            }
15443        }
15444        impl unpauseReturn {
15445            fn _tokenize(
15446                &self,
15447            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15448                ()
15449            }
15450        }
15451        #[automatically_derived]
15452        impl alloy_sol_types::SolCall for unpauseCall {
15453            type Parameters<'a> = ();
15454            type Token<'a> = <Self::Parameters<
15455                'a,
15456            > as alloy_sol_types::SolType>::Token<'a>;
15457            type Return = unpauseReturn;
15458            type ReturnTuple<'a> = ();
15459            type ReturnToken<'a> = <Self::ReturnTuple<
15460                'a,
15461            > as alloy_sol_types::SolType>::Token<'a>;
15462            const SIGNATURE: &'static str = "unpause()";
15463            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
15464            #[inline]
15465            fn new<'a>(
15466                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15467            ) -> Self {
15468                tuple.into()
15469            }
15470            #[inline]
15471            fn tokenize(&self) -> Self::Token<'_> {
15472                ()
15473            }
15474            #[inline]
15475            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15476                unpauseReturn::_tokenize(ret)
15477            }
15478            #[inline]
15479            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15480                <Self::ReturnTuple<
15481                    '_,
15482                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15483                    .map(Into::into)
15484            }
15485            #[inline]
15486            fn abi_decode_returns_validate(
15487                data: &[u8],
15488            ) -> alloy_sol_types::Result<Self::Return> {
15489                <Self::ReturnTuple<
15490                    '_,
15491                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15492                    .map(Into::into)
15493            }
15494        }
15495    };
15496    #[derive(serde::Serialize, serde::Deserialize)]
15497    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15498    /**Function with signature `updateCommission(uint16)` and selector `0x3b2b7ffa`.
15499```solidity
15500function updateCommission(uint16 newCommission) external;
15501```*/
15502    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15503    #[derive(Clone)]
15504    pub struct updateCommissionCall {
15505        #[allow(missing_docs)]
15506        pub newCommission: u16,
15507    }
15508    ///Container type for the return parameters of the [`updateCommission(uint16)`](updateCommissionCall) function.
15509    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15510    #[derive(Clone)]
15511    pub struct updateCommissionReturn {}
15512    #[allow(
15513        non_camel_case_types,
15514        non_snake_case,
15515        clippy::pub_underscore_fields,
15516        clippy::style
15517    )]
15518    const _: () = {
15519        use alloy::sol_types as alloy_sol_types;
15520        {
15521            #[doc(hidden)]
15522            #[allow(dead_code)]
15523            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15524            #[doc(hidden)]
15525            type UnderlyingRustTuple<'a> = (u16,);
15526            #[cfg(test)]
15527            #[allow(dead_code, unreachable_patterns)]
15528            fn _type_assertion(
15529                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15530            ) {
15531                match _t {
15532                    alloy_sol_types::private::AssertTypeEq::<
15533                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15534                    >(_) => {}
15535                }
15536            }
15537            #[automatically_derived]
15538            #[doc(hidden)]
15539            impl ::core::convert::From<updateCommissionCall>
15540            for UnderlyingRustTuple<'_> {
15541                fn from(value: updateCommissionCall) -> Self {
15542                    (value.newCommission,)
15543                }
15544            }
15545            #[automatically_derived]
15546            #[doc(hidden)]
15547            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15548            for updateCommissionCall {
15549                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15550                    Self { newCommission: tuple.0 }
15551                }
15552            }
15553        }
15554        {
15555            #[doc(hidden)]
15556            #[allow(dead_code)]
15557            type UnderlyingSolTuple<'a> = ();
15558            #[doc(hidden)]
15559            type UnderlyingRustTuple<'a> = ();
15560            #[cfg(test)]
15561            #[allow(dead_code, unreachable_patterns)]
15562            fn _type_assertion(
15563                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15564            ) {
15565                match _t {
15566                    alloy_sol_types::private::AssertTypeEq::<
15567                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15568                    >(_) => {}
15569                }
15570            }
15571            #[automatically_derived]
15572            #[doc(hidden)]
15573            impl ::core::convert::From<updateCommissionReturn>
15574            for UnderlyingRustTuple<'_> {
15575                fn from(value: updateCommissionReturn) -> Self {
15576                    ()
15577                }
15578            }
15579            #[automatically_derived]
15580            #[doc(hidden)]
15581            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15582            for updateCommissionReturn {
15583                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15584                    Self {}
15585                }
15586            }
15587        }
15588        impl updateCommissionReturn {
15589            fn _tokenize(
15590                &self,
15591            ) -> <updateCommissionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15592                ()
15593            }
15594        }
15595        #[automatically_derived]
15596        impl alloy_sol_types::SolCall for updateCommissionCall {
15597            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15598            type Token<'a> = <Self::Parameters<
15599                'a,
15600            > as alloy_sol_types::SolType>::Token<'a>;
15601            type Return = updateCommissionReturn;
15602            type ReturnTuple<'a> = ();
15603            type ReturnToken<'a> = <Self::ReturnTuple<
15604                'a,
15605            > as alloy_sol_types::SolType>::Token<'a>;
15606            const SIGNATURE: &'static str = "updateCommission(uint16)";
15607            const SELECTOR: [u8; 4] = [59u8, 43u8, 127u8, 250u8];
15608            #[inline]
15609            fn new<'a>(
15610                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15611            ) -> Self {
15612                tuple.into()
15613            }
15614            #[inline]
15615            fn tokenize(&self) -> Self::Token<'_> {
15616                (
15617                    <alloy::sol_types::sol_data::Uint<
15618                        16,
15619                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
15620                )
15621            }
15622            #[inline]
15623            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15624                updateCommissionReturn::_tokenize(ret)
15625            }
15626            #[inline]
15627            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15628                <Self::ReturnTuple<
15629                    '_,
15630                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15631                    .map(Into::into)
15632            }
15633            #[inline]
15634            fn abi_decode_returns_validate(
15635                data: &[u8],
15636            ) -> alloy_sol_types::Result<Self::Return> {
15637                <Self::ReturnTuple<
15638                    '_,
15639                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15640                    .map(Into::into)
15641            }
15642        }
15643    };
15644    #[derive(serde::Serialize, serde::Deserialize)]
15645    #[derive()]
15646    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
15647```solidity
15648function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
15649```*/
15650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15651    #[derive(Clone)]
15652    pub struct updateConsensusKeysCall {
15653        #[allow(missing_docs)]
15654        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
15655        #[allow(missing_docs)]
15656        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
15657        #[allow(missing_docs)]
15658        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
15659    }
15660    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
15661    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15662    #[derive(Clone)]
15663    pub struct updateConsensusKeysReturn {}
15664    #[allow(
15665        non_camel_case_types,
15666        non_snake_case,
15667        clippy::pub_underscore_fields,
15668        clippy::style
15669    )]
15670    const _: () = {
15671        use alloy::sol_types as alloy_sol_types;
15672        {
15673            #[doc(hidden)]
15674            #[allow(dead_code)]
15675            type UnderlyingSolTuple<'a> = (
15676                BN254::G2Point,
15677                EdOnBN254::EdOnBN254Point,
15678                BN254::G1Point,
15679            );
15680            #[doc(hidden)]
15681            type UnderlyingRustTuple<'a> = (
15682                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
15683                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
15684                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
15685            );
15686            #[cfg(test)]
15687            #[allow(dead_code, unreachable_patterns)]
15688            fn _type_assertion(
15689                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15690            ) {
15691                match _t {
15692                    alloy_sol_types::private::AssertTypeEq::<
15693                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15694                    >(_) => {}
15695                }
15696            }
15697            #[automatically_derived]
15698            #[doc(hidden)]
15699            impl ::core::convert::From<updateConsensusKeysCall>
15700            for UnderlyingRustTuple<'_> {
15701                fn from(value: updateConsensusKeysCall) -> Self {
15702                    (value._0, value._1, value._2)
15703                }
15704            }
15705            #[automatically_derived]
15706            #[doc(hidden)]
15707            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15708            for updateConsensusKeysCall {
15709                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15710                    Self {
15711                        _0: tuple.0,
15712                        _1: tuple.1,
15713                        _2: tuple.2,
15714                    }
15715                }
15716            }
15717        }
15718        {
15719            #[doc(hidden)]
15720            #[allow(dead_code)]
15721            type UnderlyingSolTuple<'a> = ();
15722            #[doc(hidden)]
15723            type UnderlyingRustTuple<'a> = ();
15724            #[cfg(test)]
15725            #[allow(dead_code, unreachable_patterns)]
15726            fn _type_assertion(
15727                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15728            ) {
15729                match _t {
15730                    alloy_sol_types::private::AssertTypeEq::<
15731                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15732                    >(_) => {}
15733                }
15734            }
15735            #[automatically_derived]
15736            #[doc(hidden)]
15737            impl ::core::convert::From<updateConsensusKeysReturn>
15738            for UnderlyingRustTuple<'_> {
15739                fn from(value: updateConsensusKeysReturn) -> Self {
15740                    ()
15741                }
15742            }
15743            #[automatically_derived]
15744            #[doc(hidden)]
15745            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15746            for updateConsensusKeysReturn {
15747                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15748                    Self {}
15749                }
15750            }
15751        }
15752        impl updateConsensusKeysReturn {
15753            fn _tokenize(
15754                &self,
15755            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15756                ()
15757            }
15758        }
15759        #[automatically_derived]
15760        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
15761            type Parameters<'a> = (
15762                BN254::G2Point,
15763                EdOnBN254::EdOnBN254Point,
15764                BN254::G1Point,
15765            );
15766            type Token<'a> = <Self::Parameters<
15767                'a,
15768            > as alloy_sol_types::SolType>::Token<'a>;
15769            type Return = updateConsensusKeysReturn;
15770            type ReturnTuple<'a> = ();
15771            type ReturnToken<'a> = <Self::ReturnTuple<
15772                'a,
15773            > as alloy_sol_types::SolType>::Token<'a>;
15774            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
15775            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
15776            #[inline]
15777            fn new<'a>(
15778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15779            ) -> Self {
15780                tuple.into()
15781            }
15782            #[inline]
15783            fn tokenize(&self) -> Self::Token<'_> {
15784                (
15785                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
15786                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
15787                        &self._1,
15788                    ),
15789                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
15790                )
15791            }
15792            #[inline]
15793            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15794                updateConsensusKeysReturn::_tokenize(ret)
15795            }
15796            #[inline]
15797            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15798                <Self::ReturnTuple<
15799                    '_,
15800                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15801                    .map(Into::into)
15802            }
15803            #[inline]
15804            fn abi_decode_returns_validate(
15805                data: &[u8],
15806            ) -> alloy_sol_types::Result<Self::Return> {
15807                <Self::ReturnTuple<
15808                    '_,
15809                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15810                    .map(Into::into)
15811            }
15812        }
15813    };
15814    #[derive(serde::Serialize, serde::Deserialize)]
15815    #[derive()]
15816    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
15817```solidity
15818function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
15819```*/
15820    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15821    #[derive(Clone)]
15822    pub struct updateConsensusKeysV2Call {
15823        #[allow(missing_docs)]
15824        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
15825        #[allow(missing_docs)]
15826        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
15827        #[allow(missing_docs)]
15828        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
15829        #[allow(missing_docs)]
15830        pub schnorrSig: alloy::sol_types::private::Bytes,
15831    }
15832    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
15833    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15834    #[derive(Clone)]
15835    pub struct updateConsensusKeysV2Return {}
15836    #[allow(
15837        non_camel_case_types,
15838        non_snake_case,
15839        clippy::pub_underscore_fields,
15840        clippy::style
15841    )]
15842    const _: () = {
15843        use alloy::sol_types as alloy_sol_types;
15844        {
15845            #[doc(hidden)]
15846            #[allow(dead_code)]
15847            type UnderlyingSolTuple<'a> = (
15848                BN254::G2Point,
15849                EdOnBN254::EdOnBN254Point,
15850                BN254::G1Point,
15851                alloy::sol_types::sol_data::Bytes,
15852            );
15853            #[doc(hidden)]
15854            type UnderlyingRustTuple<'a> = (
15855                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
15856                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
15857                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
15858                alloy::sol_types::private::Bytes,
15859            );
15860            #[cfg(test)]
15861            #[allow(dead_code, unreachable_patterns)]
15862            fn _type_assertion(
15863                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15864            ) {
15865                match _t {
15866                    alloy_sol_types::private::AssertTypeEq::<
15867                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15868                    >(_) => {}
15869                }
15870            }
15871            #[automatically_derived]
15872            #[doc(hidden)]
15873            impl ::core::convert::From<updateConsensusKeysV2Call>
15874            for UnderlyingRustTuple<'_> {
15875                fn from(value: updateConsensusKeysV2Call) -> Self {
15876                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
15877                }
15878            }
15879            #[automatically_derived]
15880            #[doc(hidden)]
15881            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15882            for updateConsensusKeysV2Call {
15883                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15884                    Self {
15885                        blsVK: tuple.0,
15886                        schnorrVK: tuple.1,
15887                        blsSig: tuple.2,
15888                        schnorrSig: tuple.3,
15889                    }
15890                }
15891            }
15892        }
15893        {
15894            #[doc(hidden)]
15895            #[allow(dead_code)]
15896            type UnderlyingSolTuple<'a> = ();
15897            #[doc(hidden)]
15898            type UnderlyingRustTuple<'a> = ();
15899            #[cfg(test)]
15900            #[allow(dead_code, unreachable_patterns)]
15901            fn _type_assertion(
15902                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15903            ) {
15904                match _t {
15905                    alloy_sol_types::private::AssertTypeEq::<
15906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15907                    >(_) => {}
15908                }
15909            }
15910            #[automatically_derived]
15911            #[doc(hidden)]
15912            impl ::core::convert::From<updateConsensusKeysV2Return>
15913            for UnderlyingRustTuple<'_> {
15914                fn from(value: updateConsensusKeysV2Return) -> Self {
15915                    ()
15916                }
15917            }
15918            #[automatically_derived]
15919            #[doc(hidden)]
15920            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15921            for updateConsensusKeysV2Return {
15922                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15923                    Self {}
15924                }
15925            }
15926        }
15927        impl updateConsensusKeysV2Return {
15928            fn _tokenize(
15929                &self,
15930            ) -> <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::ReturnToken<
15931                '_,
15932            > {
15933                ()
15934            }
15935        }
15936        #[automatically_derived]
15937        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
15938            type Parameters<'a> = (
15939                BN254::G2Point,
15940                EdOnBN254::EdOnBN254Point,
15941                BN254::G1Point,
15942                alloy::sol_types::sol_data::Bytes,
15943            );
15944            type Token<'a> = <Self::Parameters<
15945                'a,
15946            > as alloy_sol_types::SolType>::Token<'a>;
15947            type Return = updateConsensusKeysV2Return;
15948            type ReturnTuple<'a> = ();
15949            type ReturnToken<'a> = <Self::ReturnTuple<
15950                'a,
15951            > as alloy_sol_types::SolType>::Token<'a>;
15952            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
15953            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
15954            #[inline]
15955            fn new<'a>(
15956                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15957            ) -> Self {
15958                tuple.into()
15959            }
15960            #[inline]
15961            fn tokenize(&self) -> Self::Token<'_> {
15962                (
15963                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
15964                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
15965                        &self.schnorrVK,
15966                    ),
15967                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
15968                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
15969                        &self.schnorrSig,
15970                    ),
15971                )
15972            }
15973            #[inline]
15974            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15975                updateConsensusKeysV2Return::_tokenize(ret)
15976            }
15977            #[inline]
15978            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15979                <Self::ReturnTuple<
15980                    '_,
15981                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15982                    .map(Into::into)
15983            }
15984            #[inline]
15985            fn abi_decode_returns_validate(
15986                data: &[u8],
15987            ) -> alloy_sol_types::Result<Self::Return> {
15988                <Self::ReturnTuple<
15989                    '_,
15990                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15991                    .map(Into::into)
15992            }
15993        }
15994    };
15995    #[derive(serde::Serialize, serde::Deserialize)]
15996    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15997    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
15998```solidity
15999function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
16000```*/
16001    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16002    #[derive(Clone)]
16003    pub struct updateExitEscrowPeriodCall {
16004        #[allow(missing_docs)]
16005        pub newExitEscrowPeriod: u64,
16006    }
16007    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
16008    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16009    #[derive(Clone)]
16010    pub struct updateExitEscrowPeriodReturn {}
16011    #[allow(
16012        non_camel_case_types,
16013        non_snake_case,
16014        clippy::pub_underscore_fields,
16015        clippy::style
16016    )]
16017    const _: () = {
16018        use alloy::sol_types as alloy_sol_types;
16019        {
16020            #[doc(hidden)]
16021            #[allow(dead_code)]
16022            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
16023            #[doc(hidden)]
16024            type UnderlyingRustTuple<'a> = (u64,);
16025            #[cfg(test)]
16026            #[allow(dead_code, unreachable_patterns)]
16027            fn _type_assertion(
16028                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16029            ) {
16030                match _t {
16031                    alloy_sol_types::private::AssertTypeEq::<
16032                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16033                    >(_) => {}
16034                }
16035            }
16036            #[automatically_derived]
16037            #[doc(hidden)]
16038            impl ::core::convert::From<updateExitEscrowPeriodCall>
16039            for UnderlyingRustTuple<'_> {
16040                fn from(value: updateExitEscrowPeriodCall) -> Self {
16041                    (value.newExitEscrowPeriod,)
16042                }
16043            }
16044            #[automatically_derived]
16045            #[doc(hidden)]
16046            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16047            for updateExitEscrowPeriodCall {
16048                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16049                    Self {
16050                        newExitEscrowPeriod: tuple.0,
16051                    }
16052                }
16053            }
16054        }
16055        {
16056            #[doc(hidden)]
16057            #[allow(dead_code)]
16058            type UnderlyingSolTuple<'a> = ();
16059            #[doc(hidden)]
16060            type UnderlyingRustTuple<'a> = ();
16061            #[cfg(test)]
16062            #[allow(dead_code, unreachable_patterns)]
16063            fn _type_assertion(
16064                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16065            ) {
16066                match _t {
16067                    alloy_sol_types::private::AssertTypeEq::<
16068                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16069                    >(_) => {}
16070                }
16071            }
16072            #[automatically_derived]
16073            #[doc(hidden)]
16074            impl ::core::convert::From<updateExitEscrowPeriodReturn>
16075            for UnderlyingRustTuple<'_> {
16076                fn from(value: updateExitEscrowPeriodReturn) -> Self {
16077                    ()
16078                }
16079            }
16080            #[automatically_derived]
16081            #[doc(hidden)]
16082            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16083            for updateExitEscrowPeriodReturn {
16084                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16085                    Self {}
16086                }
16087            }
16088        }
16089        impl updateExitEscrowPeriodReturn {
16090            fn _tokenize(
16091                &self,
16092            ) -> <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
16093                '_,
16094            > {
16095                ()
16096            }
16097        }
16098        #[automatically_derived]
16099        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
16100            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
16101            type Token<'a> = <Self::Parameters<
16102                'a,
16103            > as alloy_sol_types::SolType>::Token<'a>;
16104            type Return = updateExitEscrowPeriodReturn;
16105            type ReturnTuple<'a> = ();
16106            type ReturnToken<'a> = <Self::ReturnTuple<
16107                'a,
16108            > as alloy_sol_types::SolType>::Token<'a>;
16109            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
16110            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
16111            #[inline]
16112            fn new<'a>(
16113                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16114            ) -> Self {
16115                tuple.into()
16116            }
16117            #[inline]
16118            fn tokenize(&self) -> Self::Token<'_> {
16119                (
16120                    <alloy::sol_types::sol_data::Uint<
16121                        64,
16122                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
16123                )
16124            }
16125            #[inline]
16126            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16127                updateExitEscrowPeriodReturn::_tokenize(ret)
16128            }
16129            #[inline]
16130            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16131                <Self::ReturnTuple<
16132                    '_,
16133                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16134                    .map(Into::into)
16135            }
16136            #[inline]
16137            fn abi_decode_returns_validate(
16138                data: &[u8],
16139            ) -> alloy_sol_types::Result<Self::Return> {
16140                <Self::ReturnTuple<
16141                    '_,
16142                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16143                    .map(Into::into)
16144            }
16145        }
16146    };
16147    #[derive(serde::Serialize, serde::Deserialize)]
16148    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16149    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
16150```solidity
16151function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
16152```*/
16153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16154    #[derive(Clone)]
16155    pub struct upgradeToAndCallCall {
16156        #[allow(missing_docs)]
16157        pub newImplementation: alloy::sol_types::private::Address,
16158        #[allow(missing_docs)]
16159        pub data: alloy::sol_types::private::Bytes,
16160    }
16161    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
16162    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16163    #[derive(Clone)]
16164    pub struct upgradeToAndCallReturn {}
16165    #[allow(
16166        non_camel_case_types,
16167        non_snake_case,
16168        clippy::pub_underscore_fields,
16169        clippy::style
16170    )]
16171    const _: () = {
16172        use alloy::sol_types as alloy_sol_types;
16173        {
16174            #[doc(hidden)]
16175            #[allow(dead_code)]
16176            type UnderlyingSolTuple<'a> = (
16177                alloy::sol_types::sol_data::Address,
16178                alloy::sol_types::sol_data::Bytes,
16179            );
16180            #[doc(hidden)]
16181            type UnderlyingRustTuple<'a> = (
16182                alloy::sol_types::private::Address,
16183                alloy::sol_types::private::Bytes,
16184            );
16185            #[cfg(test)]
16186            #[allow(dead_code, unreachable_patterns)]
16187            fn _type_assertion(
16188                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16189            ) {
16190                match _t {
16191                    alloy_sol_types::private::AssertTypeEq::<
16192                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16193                    >(_) => {}
16194                }
16195            }
16196            #[automatically_derived]
16197            #[doc(hidden)]
16198            impl ::core::convert::From<upgradeToAndCallCall>
16199            for UnderlyingRustTuple<'_> {
16200                fn from(value: upgradeToAndCallCall) -> Self {
16201                    (value.newImplementation, value.data)
16202                }
16203            }
16204            #[automatically_derived]
16205            #[doc(hidden)]
16206            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16207            for upgradeToAndCallCall {
16208                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16209                    Self {
16210                        newImplementation: tuple.0,
16211                        data: tuple.1,
16212                    }
16213                }
16214            }
16215        }
16216        {
16217            #[doc(hidden)]
16218            #[allow(dead_code)]
16219            type UnderlyingSolTuple<'a> = ();
16220            #[doc(hidden)]
16221            type UnderlyingRustTuple<'a> = ();
16222            #[cfg(test)]
16223            #[allow(dead_code, unreachable_patterns)]
16224            fn _type_assertion(
16225                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16226            ) {
16227                match _t {
16228                    alloy_sol_types::private::AssertTypeEq::<
16229                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16230                    >(_) => {}
16231                }
16232            }
16233            #[automatically_derived]
16234            #[doc(hidden)]
16235            impl ::core::convert::From<upgradeToAndCallReturn>
16236            for UnderlyingRustTuple<'_> {
16237                fn from(value: upgradeToAndCallReturn) -> Self {
16238                    ()
16239                }
16240            }
16241            #[automatically_derived]
16242            #[doc(hidden)]
16243            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16244            for upgradeToAndCallReturn {
16245                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16246                    Self {}
16247                }
16248            }
16249        }
16250        impl upgradeToAndCallReturn {
16251            fn _tokenize(
16252                &self,
16253            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16254                ()
16255            }
16256        }
16257        #[automatically_derived]
16258        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
16259            type Parameters<'a> = (
16260                alloy::sol_types::sol_data::Address,
16261                alloy::sol_types::sol_data::Bytes,
16262            );
16263            type Token<'a> = <Self::Parameters<
16264                'a,
16265            > as alloy_sol_types::SolType>::Token<'a>;
16266            type Return = upgradeToAndCallReturn;
16267            type ReturnTuple<'a> = ();
16268            type ReturnToken<'a> = <Self::ReturnTuple<
16269                'a,
16270            > as alloy_sol_types::SolType>::Token<'a>;
16271            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
16272            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
16273            #[inline]
16274            fn new<'a>(
16275                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16276            ) -> Self {
16277                tuple.into()
16278            }
16279            #[inline]
16280            fn tokenize(&self) -> Self::Token<'_> {
16281                (
16282                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16283                        &self.newImplementation,
16284                    ),
16285                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
16286                        &self.data,
16287                    ),
16288                )
16289            }
16290            #[inline]
16291            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16292                upgradeToAndCallReturn::_tokenize(ret)
16293            }
16294            #[inline]
16295            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16296                <Self::ReturnTuple<
16297                    '_,
16298                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16299                    .map(Into::into)
16300            }
16301            #[inline]
16302            fn abi_decode_returns_validate(
16303                data: &[u8],
16304            ) -> alloy_sol_types::Result<Self::Return> {
16305                <Self::ReturnTuple<
16306                    '_,
16307                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16308                    .map(Into::into)
16309            }
16310        }
16311    };
16312    #[derive(serde::Serialize, serde::Deserialize)]
16313    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16314    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
16315```solidity
16316function validatorExits(address validator) external view returns (uint256 unlocksAt);
16317```*/
16318    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16319    #[derive(Clone)]
16320    pub struct validatorExitsCall {
16321        #[allow(missing_docs)]
16322        pub validator: alloy::sol_types::private::Address,
16323    }
16324    #[derive(serde::Serialize, serde::Deserialize)]
16325    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16326    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
16327    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16328    #[derive(Clone)]
16329    pub struct validatorExitsReturn {
16330        #[allow(missing_docs)]
16331        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
16332    }
16333    #[allow(
16334        non_camel_case_types,
16335        non_snake_case,
16336        clippy::pub_underscore_fields,
16337        clippy::style
16338    )]
16339    const _: () = {
16340        use alloy::sol_types as alloy_sol_types;
16341        {
16342            #[doc(hidden)]
16343            #[allow(dead_code)]
16344            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
16345            #[doc(hidden)]
16346            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
16347            #[cfg(test)]
16348            #[allow(dead_code, unreachable_patterns)]
16349            fn _type_assertion(
16350                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16351            ) {
16352                match _t {
16353                    alloy_sol_types::private::AssertTypeEq::<
16354                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16355                    >(_) => {}
16356                }
16357            }
16358            #[automatically_derived]
16359            #[doc(hidden)]
16360            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
16361                fn from(value: validatorExitsCall) -> Self {
16362                    (value.validator,)
16363                }
16364            }
16365            #[automatically_derived]
16366            #[doc(hidden)]
16367            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
16368                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16369                    Self { validator: tuple.0 }
16370                }
16371            }
16372        }
16373        {
16374            #[doc(hidden)]
16375            #[allow(dead_code)]
16376            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16377            #[doc(hidden)]
16378            type UnderlyingRustTuple<'a> = (
16379                alloy::sol_types::private::primitives::aliases::U256,
16380            );
16381            #[cfg(test)]
16382            #[allow(dead_code, unreachable_patterns)]
16383            fn _type_assertion(
16384                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16385            ) {
16386                match _t {
16387                    alloy_sol_types::private::AssertTypeEq::<
16388                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16389                    >(_) => {}
16390                }
16391            }
16392            #[automatically_derived]
16393            #[doc(hidden)]
16394            impl ::core::convert::From<validatorExitsReturn>
16395            for UnderlyingRustTuple<'_> {
16396                fn from(value: validatorExitsReturn) -> Self {
16397                    (value.unlocksAt,)
16398                }
16399            }
16400            #[automatically_derived]
16401            #[doc(hidden)]
16402            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16403            for validatorExitsReturn {
16404                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16405                    Self { unlocksAt: tuple.0 }
16406                }
16407            }
16408        }
16409        #[automatically_derived]
16410        impl alloy_sol_types::SolCall for validatorExitsCall {
16411            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
16412            type Token<'a> = <Self::Parameters<
16413                'a,
16414            > as alloy_sol_types::SolType>::Token<'a>;
16415            type Return = alloy::sol_types::private::primitives::aliases::U256;
16416            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16417            type ReturnToken<'a> = <Self::ReturnTuple<
16418                'a,
16419            > as alloy_sol_types::SolType>::Token<'a>;
16420            const SIGNATURE: &'static str = "validatorExits(address)";
16421            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
16422            #[inline]
16423            fn new<'a>(
16424                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16425            ) -> Self {
16426                tuple.into()
16427            }
16428            #[inline]
16429            fn tokenize(&self) -> Self::Token<'_> {
16430                (
16431                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16432                        &self.validator,
16433                    ),
16434                )
16435            }
16436            #[inline]
16437            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16438                (
16439                    <alloy::sol_types::sol_data::Uint<
16440                        256,
16441                    > as alloy_sol_types::SolType>::tokenize(ret),
16442                )
16443            }
16444            #[inline]
16445            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16446                <Self::ReturnTuple<
16447                    '_,
16448                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16449                    .map(|r| {
16450                        let r: validatorExitsReturn = r.into();
16451                        r.unlocksAt
16452                    })
16453            }
16454            #[inline]
16455            fn abi_decode_returns_validate(
16456                data: &[u8],
16457            ) -> alloy_sol_types::Result<Self::Return> {
16458                <Self::ReturnTuple<
16459                    '_,
16460                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16461                    .map(|r| {
16462                        let r: validatorExitsReturn = r.into();
16463                        r.unlocksAt
16464                    })
16465            }
16466        }
16467    };
16468    #[derive(serde::Serialize, serde::Deserialize)]
16469    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16470    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
16471```solidity
16472function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
16473```*/
16474    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16475    #[derive(Clone)]
16476    pub struct validatorsCall {
16477        #[allow(missing_docs)]
16478        pub account: alloy::sol_types::private::Address,
16479    }
16480    #[derive(serde::Serialize, serde::Deserialize)]
16481    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16482    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
16483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16484    #[derive(Clone)]
16485    pub struct validatorsReturn {
16486        #[allow(missing_docs)]
16487        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
16488        #[allow(missing_docs)]
16489        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
16490    }
16491    #[allow(
16492        non_camel_case_types,
16493        non_snake_case,
16494        clippy::pub_underscore_fields,
16495        clippy::style
16496    )]
16497    const _: () = {
16498        use alloy::sol_types as alloy_sol_types;
16499        {
16500            #[doc(hidden)]
16501            #[allow(dead_code)]
16502            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
16503            #[doc(hidden)]
16504            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
16505            #[cfg(test)]
16506            #[allow(dead_code, unreachable_patterns)]
16507            fn _type_assertion(
16508                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16509            ) {
16510                match _t {
16511                    alloy_sol_types::private::AssertTypeEq::<
16512                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16513                    >(_) => {}
16514                }
16515            }
16516            #[automatically_derived]
16517            #[doc(hidden)]
16518            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
16519                fn from(value: validatorsCall) -> Self {
16520                    (value.account,)
16521                }
16522            }
16523            #[automatically_derived]
16524            #[doc(hidden)]
16525            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
16526                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16527                    Self { account: tuple.0 }
16528                }
16529            }
16530        }
16531        {
16532            #[doc(hidden)]
16533            #[allow(dead_code)]
16534            type UnderlyingSolTuple<'a> = (
16535                alloy::sol_types::sol_data::Uint<256>,
16536                StakeTable::ValidatorStatus,
16537            );
16538            #[doc(hidden)]
16539            type UnderlyingRustTuple<'a> = (
16540                alloy::sol_types::private::primitives::aliases::U256,
16541                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
16542            );
16543            #[cfg(test)]
16544            #[allow(dead_code, unreachable_patterns)]
16545            fn _type_assertion(
16546                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16547            ) {
16548                match _t {
16549                    alloy_sol_types::private::AssertTypeEq::<
16550                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16551                    >(_) => {}
16552                }
16553            }
16554            #[automatically_derived]
16555            #[doc(hidden)]
16556            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
16557                fn from(value: validatorsReturn) -> Self {
16558                    (value.delegatedAmount, value.status)
16559                }
16560            }
16561            #[automatically_derived]
16562            #[doc(hidden)]
16563            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
16564                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16565                    Self {
16566                        delegatedAmount: tuple.0,
16567                        status: tuple.1,
16568                    }
16569                }
16570            }
16571        }
16572        impl validatorsReturn {
16573            fn _tokenize(
16574                &self,
16575            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16576                (
16577                    <alloy::sol_types::sol_data::Uint<
16578                        256,
16579                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
16580                    <StakeTable::ValidatorStatus as alloy_sol_types::SolType>::tokenize(
16581                        &self.status,
16582                    ),
16583                )
16584            }
16585        }
16586        #[automatically_derived]
16587        impl alloy_sol_types::SolCall for validatorsCall {
16588            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
16589            type Token<'a> = <Self::Parameters<
16590                'a,
16591            > as alloy_sol_types::SolType>::Token<'a>;
16592            type Return = validatorsReturn;
16593            type ReturnTuple<'a> = (
16594                alloy::sol_types::sol_data::Uint<256>,
16595                StakeTable::ValidatorStatus,
16596            );
16597            type ReturnToken<'a> = <Self::ReturnTuple<
16598                'a,
16599            > as alloy_sol_types::SolType>::Token<'a>;
16600            const SIGNATURE: &'static str = "validators(address)";
16601            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
16602            #[inline]
16603            fn new<'a>(
16604                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16605            ) -> Self {
16606                tuple.into()
16607            }
16608            #[inline]
16609            fn tokenize(&self) -> Self::Token<'_> {
16610                (
16611                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16612                        &self.account,
16613                    ),
16614                )
16615            }
16616            #[inline]
16617            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16618                validatorsReturn::_tokenize(ret)
16619            }
16620            #[inline]
16621            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16622                <Self::ReturnTuple<
16623                    '_,
16624                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16625                    .map(Into::into)
16626            }
16627            #[inline]
16628            fn abi_decode_returns_validate(
16629                data: &[u8],
16630            ) -> alloy_sol_types::Result<Self::Return> {
16631                <Self::ReturnTuple<
16632                    '_,
16633                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16634                    .map(Into::into)
16635            }
16636        }
16637    };
16638    ///Container for all the [`StakeTableV2`](self) function calls.
16639    #[derive(serde::Serialize, serde::Deserialize)]
16640    #[derive()]
16641    pub enum StakeTableV2Calls {
16642        #[allow(missing_docs)]
16643        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
16644        #[allow(missing_docs)]
16645        PAUSER_ROLE(PAUSER_ROLECall),
16646        #[allow(missing_docs)]
16647        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
16648        #[allow(missing_docs)]
16649        _hashBlsKey(_hashBlsKeyCall),
16650        #[allow(missing_docs)]
16651        blsKeys(blsKeysCall),
16652        #[allow(missing_docs)]
16653        claimValidatorExit(claimValidatorExitCall),
16654        #[allow(missing_docs)]
16655        claimWithdrawal(claimWithdrawalCall),
16656        #[allow(missing_docs)]
16657        commissionTracking(commissionTrackingCall),
16658        #[allow(missing_docs)]
16659        delegate(delegateCall),
16660        #[allow(missing_docs)]
16661        delegations(delegationsCall),
16662        #[allow(missing_docs)]
16663        deregisterValidator(deregisterValidatorCall),
16664        #[allow(missing_docs)]
16665        exitEscrowPeriod(exitEscrowPeriodCall),
16666        #[allow(missing_docs)]
16667        getRoleAdmin(getRoleAdminCall),
16668        #[allow(missing_docs)]
16669        getVersion(getVersionCall),
16670        #[allow(missing_docs)]
16671        grantRole(grantRoleCall),
16672        #[allow(missing_docs)]
16673        hasRole(hasRoleCall),
16674        #[allow(missing_docs)]
16675        initialize(initializeCall),
16676        #[allow(missing_docs)]
16677        initializeV2(initializeV2Call),
16678        #[allow(missing_docs)]
16679        initializedAtBlock(initializedAtBlockCall),
16680        #[allow(missing_docs)]
16681        lightClient(lightClientCall),
16682        #[allow(missing_docs)]
16683        maxCommissionIncrease(maxCommissionIncreaseCall),
16684        #[allow(missing_docs)]
16685        minCommissionIncreaseInterval(minCommissionIncreaseIntervalCall),
16686        #[allow(missing_docs)]
16687        owner(ownerCall),
16688        #[allow(missing_docs)]
16689        pause(pauseCall),
16690        #[allow(missing_docs)]
16691        paused(pausedCall),
16692        #[allow(missing_docs)]
16693        proxiableUUID(proxiableUUIDCall),
16694        #[allow(missing_docs)]
16695        registerValidator(registerValidatorCall),
16696        #[allow(missing_docs)]
16697        registerValidatorV2(registerValidatorV2Call),
16698        #[allow(missing_docs)]
16699        renounceOwnership(renounceOwnershipCall),
16700        #[allow(missing_docs)]
16701        renounceRole(renounceRoleCall),
16702        #[allow(missing_docs)]
16703        revokeRole(revokeRoleCall),
16704        #[allow(missing_docs)]
16705        schnorrKeys(schnorrKeysCall),
16706        #[allow(missing_docs)]
16707        setMaxCommissionIncrease(setMaxCommissionIncreaseCall),
16708        #[allow(missing_docs)]
16709        setMinCommissionUpdateInterval(setMinCommissionUpdateIntervalCall),
16710        #[allow(missing_docs)]
16711        supportsInterface(supportsInterfaceCall),
16712        #[allow(missing_docs)]
16713        token(tokenCall),
16714        #[allow(missing_docs)]
16715        transferOwnership(transferOwnershipCall),
16716        #[allow(missing_docs)]
16717        undelegate(undelegateCall),
16718        #[allow(missing_docs)]
16719        undelegations(undelegationsCall),
16720        #[allow(missing_docs)]
16721        unpause(unpauseCall),
16722        #[allow(missing_docs)]
16723        updateCommission(updateCommissionCall),
16724        #[allow(missing_docs)]
16725        updateConsensusKeys(updateConsensusKeysCall),
16726        #[allow(missing_docs)]
16727        updateConsensusKeysV2(updateConsensusKeysV2Call),
16728        #[allow(missing_docs)]
16729        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
16730        #[allow(missing_docs)]
16731        upgradeToAndCall(upgradeToAndCallCall),
16732        #[allow(missing_docs)]
16733        validatorExits(validatorExitsCall),
16734        #[allow(missing_docs)]
16735        validators(validatorsCall),
16736    }
16737    #[automatically_derived]
16738    impl StakeTableV2Calls {
16739        /// All the selectors of this enum.
16740        ///
16741        /// Note that the selectors might not be in the same order as the variants.
16742        /// No guarantees are made about the order of the selectors.
16743        ///
16744        /// Prefer using `SolInterface` methods instead.
16745        pub const SELECTORS: &'static [[u8; 4usize]] = &[
16746            [1u8, 255u8, 201u8, 167u8],
16747            [2u8, 110u8, 64u8, 43u8],
16748            [13u8, 142u8, 110u8, 44u8],
16749            [19u8, 185u8, 5u8, 122u8],
16750            [26u8, 32u8, 205u8, 99u8],
16751            [33u8, 64u8, 254u8, 205u8],
16752            [36u8, 138u8, 156u8, 163u8],
16753            [45u8, 201u8, 186u8, 198u8],
16754            [47u8, 47u8, 241u8, 93u8],
16755            [48u8, 66u8, 64u8, 191u8],
16756            [54u8, 86u8, 138u8, 190u8],
16757            [57u8, 75u8, 52u8, 143u8],
16758            [59u8, 43u8, 127u8, 250u8],
16759            [62u8, 157u8, 249u8, 181u8],
16760            [63u8, 59u8, 179u8, 102u8],
16761            [63u8, 75u8, 168u8, 58u8],
16762            [77u8, 153u8, 221u8, 22u8],
16763            [79u8, 30u8, 242u8, 134u8],
16764            [82u8, 209u8, 144u8, 45u8],
16765            [85u8, 68u8, 194u8, 241u8],
16766            [92u8, 151u8, 90u8, 187u8],
16767            [95u8, 135u8, 84u8, 166u8],
16768            [106u8, 145u8, 28u8, 207u8],
16769            [113u8, 80u8, 24u8, 166u8],
16770            [132u8, 86u8, 203u8, 89u8],
16771            [141u8, 165u8, 203u8, 91u8],
16772            [145u8, 209u8, 72u8, 84u8],
16773            [155u8, 48u8, 165u8, 230u8],
16774            [158u8, 154u8, 143u8, 49u8],
16775            [159u8, 251u8, 107u8, 67u8],
16776            [162u8, 23u8, 253u8, 223u8],
16777            [162u8, 215u8, 141u8, 213u8],
16778            [163u8, 6u8, 106u8, 171u8],
16779            [172u8, 92u8, 42u8, 208u8],
16780            [173u8, 60u8, 177u8, 204u8],
16781            [179u8, 230u8, 235u8, 213u8],
16782            [181u8, 112u8, 14u8, 104u8],
16783            [181u8, 236u8, 179u8, 68u8],
16784            [190u8, 32u8, 48u8, 148u8],
16785            [198u8, 72u8, 20u8, 221u8],
16786            [199u8, 95u8, 84u8, 62u8],
16787            [213u8, 71u8, 116u8, 31u8],
16788            [217u8, 204u8, 125u8, 38u8],
16789            [230u8, 58u8, 177u8, 233u8],
16790            [242u8, 253u8, 227u8, 139u8],
16791            [250u8, 82u8, 199u8, 216u8],
16792            [252u8, 12u8, 84u8, 106u8],
16793        ];
16794    }
16795    #[automatically_derived]
16796    impl alloy_sol_types::SolInterface for StakeTableV2Calls {
16797        const NAME: &'static str = "StakeTableV2Calls";
16798        const MIN_DATA_LENGTH: usize = 0usize;
16799        const COUNT: usize = 47usize;
16800        #[inline]
16801        fn selector(&self) -> [u8; 4] {
16802            match self {
16803                Self::DEFAULT_ADMIN_ROLE(_) => {
16804                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
16805                }
16806                Self::PAUSER_ROLE(_) => {
16807                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
16808                }
16809                Self::UPGRADE_INTERFACE_VERSION(_) => {
16810                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
16811                }
16812                Self::_hashBlsKey(_) => {
16813                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
16814                }
16815                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
16816                Self::claimValidatorExit(_) => {
16817                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
16818                }
16819                Self::claimWithdrawal(_) => {
16820                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
16821                }
16822                Self::commissionTracking(_) => {
16823                    <commissionTrackingCall as alloy_sol_types::SolCall>::SELECTOR
16824                }
16825                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
16826                Self::delegations(_) => {
16827                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
16828                }
16829                Self::deregisterValidator(_) => {
16830                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
16831                }
16832                Self::exitEscrowPeriod(_) => {
16833                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16834                }
16835                Self::getRoleAdmin(_) => {
16836                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
16837                }
16838                Self::getVersion(_) => {
16839                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
16840                }
16841                Self::grantRole(_) => {
16842                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
16843                }
16844                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
16845                Self::initialize(_) => {
16846                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
16847                }
16848                Self::initializeV2(_) => {
16849                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
16850                }
16851                Self::initializedAtBlock(_) => {
16852                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
16853                }
16854                Self::lightClient(_) => {
16855                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
16856                }
16857                Self::maxCommissionIncrease(_) => {
16858                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
16859                }
16860                Self::minCommissionIncreaseInterval(_) => {
16861                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SELECTOR
16862                }
16863                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
16864                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
16865                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
16866                Self::proxiableUUID(_) => {
16867                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
16868                }
16869                Self::registerValidator(_) => {
16870                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
16871                }
16872                Self::registerValidatorV2(_) => {
16873                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
16874                }
16875                Self::renounceOwnership(_) => {
16876                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
16877                }
16878                Self::renounceRole(_) => {
16879                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
16880                }
16881                Self::revokeRole(_) => {
16882                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
16883                }
16884                Self::schnorrKeys(_) => {
16885                    <schnorrKeysCall as alloy_sol_types::SolCall>::SELECTOR
16886                }
16887                Self::setMaxCommissionIncrease(_) => {
16888                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
16889                }
16890                Self::setMinCommissionUpdateInterval(_) => {
16891                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SELECTOR
16892                }
16893                Self::supportsInterface(_) => {
16894                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
16895                }
16896                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
16897                Self::transferOwnership(_) => {
16898                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
16899                }
16900                Self::undelegate(_) => {
16901                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
16902                }
16903                Self::undelegations(_) => {
16904                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
16905                }
16906                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
16907                Self::updateCommission(_) => {
16908                    <updateCommissionCall as alloy_sol_types::SolCall>::SELECTOR
16909                }
16910                Self::updateConsensusKeys(_) => {
16911                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
16912                }
16913                Self::updateConsensusKeysV2(_) => {
16914                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
16915                }
16916                Self::updateExitEscrowPeriod(_) => {
16917                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16918                }
16919                Self::upgradeToAndCall(_) => {
16920                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
16921                }
16922                Self::validatorExits(_) => {
16923                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
16924                }
16925                Self::validators(_) => {
16926                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
16927                }
16928            }
16929        }
16930        #[inline]
16931        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16932            Self::SELECTORS.get(i).copied()
16933        }
16934        #[inline]
16935        fn valid_selector(selector: [u8; 4]) -> bool {
16936            Self::SELECTORS.binary_search(&selector).is_ok()
16937        }
16938        #[inline]
16939        #[allow(non_snake_case)]
16940        fn abi_decode_raw(
16941            selector: [u8; 4],
16942            data: &[u8],
16943        ) -> alloy_sol_types::Result<Self> {
16944            static DECODE_SHIMS: &[fn(
16945                &[u8],
16946            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
16947                {
16948                    fn supportsInterface(
16949                        data: &[u8],
16950                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
16951                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
16952                                data,
16953                            )
16954                            .map(StakeTableV2Calls::supportsInterface)
16955                    }
16956                    supportsInterface
16957                },
16958                {
16959                    fn delegate(
16960                        data: &[u8],
16961                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
16962                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16963                            .map(StakeTableV2Calls::delegate)
16964                    }
16965                    delegate
16966                },
16967                {
16968                    fn getVersion(
16969                        data: &[u8],
16970                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
16971                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
16972                                data,
16973                            )
16974                            .map(StakeTableV2Calls::getVersion)
16975                    }
16976                    getVersion
16977                },
16978                {
16979                    fn registerValidator(
16980                        data: &[u8],
16981                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
16982                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
16983                                data,
16984                            )
16985                            .map(StakeTableV2Calls::registerValidator)
16986                    }
16987                    registerValidator
16988                },
16989                {
16990                    fn updateExitEscrowPeriod(
16991                        data: &[u8],
16992                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
16993                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16994                                data,
16995                            )
16996                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
16997                    }
16998                    updateExitEscrowPeriod
16999                },
17000                {
17001                    fn claimValidatorExit(
17002                        data: &[u8],
17003                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17004                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
17005                                data,
17006                            )
17007                            .map(StakeTableV2Calls::claimValidatorExit)
17008                    }
17009                    claimValidatorExit
17010                },
17011                {
17012                    fn getRoleAdmin(
17013                        data: &[u8],
17014                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17015                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
17016                                data,
17017                            )
17018                            .map(StakeTableV2Calls::getRoleAdmin)
17019                    }
17020                    getRoleAdmin
17021                },
17022                {
17023                    fn setMaxCommissionIncrease(
17024                        data: &[u8],
17025                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17026                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
17027                                data,
17028                            )
17029                            .map(StakeTableV2Calls::setMaxCommissionIncrease)
17030                    }
17031                    setMaxCommissionIncrease
17032                },
17033                {
17034                    fn grantRole(
17035                        data: &[u8],
17036                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17037                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
17038                            .map(StakeTableV2Calls::grantRole)
17039                    }
17040                    grantRole
17041                },
17042                {
17043                    fn registerValidatorV2(
17044                        data: &[u8],
17045                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17046                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
17047                                data,
17048                            )
17049                            .map(StakeTableV2Calls::registerValidatorV2)
17050                    }
17051                    registerValidatorV2
17052                },
17053                {
17054                    fn renounceRole(
17055                        data: &[u8],
17056                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17057                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
17058                                data,
17059                            )
17060                            .map(StakeTableV2Calls::renounceRole)
17061                    }
17062                    renounceRole
17063                },
17064                {
17065                    fn setMinCommissionUpdateInterval(
17066                        data: &[u8],
17067                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17068                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
17069                                data,
17070                            )
17071                            .map(StakeTableV2Calls::setMinCommissionUpdateInterval)
17072                    }
17073                    setMinCommissionUpdateInterval
17074                },
17075                {
17076                    fn updateCommission(
17077                        data: &[u8],
17078                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17079                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
17080                                data,
17081                            )
17082                            .map(StakeTableV2Calls::updateCommission)
17083                    }
17084                    updateCommission
17085                },
17086                {
17087                    fn initializedAtBlock(
17088                        data: &[u8],
17089                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17090                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
17091                                data,
17092                            )
17093                            .map(StakeTableV2Calls::initializedAtBlock)
17094                    }
17095                    initializedAtBlock
17096                },
17097                {
17098                    fn maxCommissionIncrease(
17099                        data: &[u8],
17100                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17101                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
17102                                data,
17103                            )
17104                            .map(StakeTableV2Calls::maxCommissionIncrease)
17105                    }
17106                    maxCommissionIncrease
17107                },
17108                {
17109                    fn unpause(
17110                        data: &[u8],
17111                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17112                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
17113                            .map(StakeTableV2Calls::unpause)
17114                    }
17115                    unpause
17116                },
17117                {
17118                    fn undelegate(
17119                        data: &[u8],
17120                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17121                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
17122                                data,
17123                            )
17124                            .map(StakeTableV2Calls::undelegate)
17125                    }
17126                    undelegate
17127                },
17128                {
17129                    fn upgradeToAndCall(
17130                        data: &[u8],
17131                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17132                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
17133                                data,
17134                            )
17135                            .map(StakeTableV2Calls::upgradeToAndCall)
17136                    }
17137                    upgradeToAndCall
17138                },
17139                {
17140                    fn proxiableUUID(
17141                        data: &[u8],
17142                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17143                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
17144                                data,
17145                            )
17146                            .map(StakeTableV2Calls::proxiableUUID)
17147                    }
17148                    proxiableUUID
17149                },
17150                {
17151                    fn updateConsensusKeys(
17152                        data: &[u8],
17153                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17154                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
17155                                data,
17156                            )
17157                            .map(StakeTableV2Calls::updateConsensusKeys)
17158                    }
17159                    updateConsensusKeys
17160                },
17161                {
17162                    fn paused(
17163                        data: &[u8],
17164                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17165                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
17166                            .map(StakeTableV2Calls::paused)
17167                    }
17168                    paused
17169                },
17170                {
17171                    fn schnorrKeys(
17172                        data: &[u8],
17173                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17174                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
17175                                data,
17176                            )
17177                            .map(StakeTableV2Calls::schnorrKeys)
17178                    }
17179                    schnorrKeys
17180                },
17181                {
17182                    fn deregisterValidator(
17183                        data: &[u8],
17184                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17185                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
17186                                data,
17187                            )
17188                            .map(StakeTableV2Calls::deregisterValidator)
17189                    }
17190                    deregisterValidator
17191                },
17192                {
17193                    fn renounceOwnership(
17194                        data: &[u8],
17195                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17196                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
17197                                data,
17198                            )
17199                            .map(StakeTableV2Calls::renounceOwnership)
17200                    }
17201                    renounceOwnership
17202                },
17203                {
17204                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
17205                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
17206                            .map(StakeTableV2Calls::pause)
17207                    }
17208                    pause
17209                },
17210                {
17211                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
17212                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
17213                            .map(StakeTableV2Calls::owner)
17214                    }
17215                    owner
17216                },
17217                {
17218                    fn hasRole(
17219                        data: &[u8],
17220                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17221                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
17222                            .map(StakeTableV2Calls::hasRole)
17223                    }
17224                    hasRole
17225                },
17226                {
17227                    fn _hashBlsKey(
17228                        data: &[u8],
17229                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17230                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
17231                                data,
17232                            )
17233                            .map(StakeTableV2Calls::_hashBlsKey)
17234                    }
17235                    _hashBlsKey
17236                },
17237                {
17238                    fn exitEscrowPeriod(
17239                        data: &[u8],
17240                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17241                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
17242                                data,
17243                            )
17244                            .map(StakeTableV2Calls::exitEscrowPeriod)
17245                    }
17246                    exitEscrowPeriod
17247                },
17248                {
17249                    fn commissionTracking(
17250                        data: &[u8],
17251                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17252                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw(
17253                                data,
17254                            )
17255                            .map(StakeTableV2Calls::commissionTracking)
17256                    }
17257                    commissionTracking
17258                },
17259                {
17260                    fn DEFAULT_ADMIN_ROLE(
17261                        data: &[u8],
17262                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17263                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
17264                                data,
17265                            )
17266                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
17267                    }
17268                    DEFAULT_ADMIN_ROLE
17269                },
17270                {
17271                    fn undelegations(
17272                        data: &[u8],
17273                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17274                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
17275                                data,
17276                            )
17277                            .map(StakeTableV2Calls::undelegations)
17278                    }
17279                    undelegations
17280                },
17281                {
17282                    fn claimWithdrawal(
17283                        data: &[u8],
17284                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17285                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
17286                                data,
17287                            )
17288                            .map(StakeTableV2Calls::claimWithdrawal)
17289                    }
17290                    claimWithdrawal
17291                },
17292                {
17293                    fn updateConsensusKeysV2(
17294                        data: &[u8],
17295                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17296                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
17297                                data,
17298                            )
17299                            .map(StakeTableV2Calls::updateConsensusKeysV2)
17300                    }
17301                    updateConsensusKeysV2
17302                },
17303                {
17304                    fn UPGRADE_INTERFACE_VERSION(
17305                        data: &[u8],
17306                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17307                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
17308                                data,
17309                            )
17310                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
17311                    }
17312                    UPGRADE_INTERFACE_VERSION
17313                },
17314                {
17315                    fn blsKeys(
17316                        data: &[u8],
17317                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17318                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
17319                            .map(StakeTableV2Calls::blsKeys)
17320                    }
17321                    blsKeys
17322                },
17323                {
17324                    fn lightClient(
17325                        data: &[u8],
17326                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17327                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
17328                                data,
17329                            )
17330                            .map(StakeTableV2Calls::lightClient)
17331                    }
17332                    lightClient
17333                },
17334                {
17335                    fn validatorExits(
17336                        data: &[u8],
17337                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17338                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
17339                                data,
17340                            )
17341                            .map(StakeTableV2Calls::validatorExits)
17342                    }
17343                    validatorExits
17344                },
17345                {
17346                    fn initialize(
17347                        data: &[u8],
17348                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17349                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
17350                                data,
17351                            )
17352                            .map(StakeTableV2Calls::initialize)
17353                    }
17354                    initialize
17355                },
17356                {
17357                    fn delegations(
17358                        data: &[u8],
17359                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17360                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
17361                                data,
17362                            )
17363                            .map(StakeTableV2Calls::delegations)
17364                    }
17365                    delegations
17366                },
17367                {
17368                    fn initializeV2(
17369                        data: &[u8],
17370                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17371                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
17372                                data,
17373                            )
17374                            .map(StakeTableV2Calls::initializeV2)
17375                    }
17376                    initializeV2
17377                },
17378                {
17379                    fn revokeRole(
17380                        data: &[u8],
17381                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17382                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
17383                                data,
17384                            )
17385                            .map(StakeTableV2Calls::revokeRole)
17386                    }
17387                    revokeRole
17388                },
17389                {
17390                    fn minCommissionIncreaseInterval(
17391                        data: &[u8],
17392                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17393                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
17394                                data,
17395                            )
17396                            .map(StakeTableV2Calls::minCommissionIncreaseInterval)
17397                    }
17398                    minCommissionIncreaseInterval
17399                },
17400                {
17401                    fn PAUSER_ROLE(
17402                        data: &[u8],
17403                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17404                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
17405                                data,
17406                            )
17407                            .map(StakeTableV2Calls::PAUSER_ROLE)
17408                    }
17409                    PAUSER_ROLE
17410                },
17411                {
17412                    fn transferOwnership(
17413                        data: &[u8],
17414                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17415                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
17416                                data,
17417                            )
17418                            .map(StakeTableV2Calls::transferOwnership)
17419                    }
17420                    transferOwnership
17421                },
17422                {
17423                    fn validators(
17424                        data: &[u8],
17425                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17426                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
17427                                data,
17428                            )
17429                            .map(StakeTableV2Calls::validators)
17430                    }
17431                    validators
17432                },
17433                {
17434                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
17435                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
17436                            .map(StakeTableV2Calls::token)
17437                    }
17438                    token
17439                },
17440            ];
17441            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17442                return Err(
17443                    alloy_sol_types::Error::unknown_selector(
17444                        <Self as alloy_sol_types::SolInterface>::NAME,
17445                        selector,
17446                    ),
17447                );
17448            };
17449            DECODE_SHIMS[idx](data)
17450        }
17451        #[inline]
17452        #[allow(non_snake_case)]
17453        fn abi_decode_raw_validate(
17454            selector: [u8; 4],
17455            data: &[u8],
17456        ) -> alloy_sol_types::Result<Self> {
17457            static DECODE_VALIDATE_SHIMS: &[fn(
17458                &[u8],
17459            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
17460                {
17461                    fn supportsInterface(
17462                        data: &[u8],
17463                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17464                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17465                                data,
17466                            )
17467                            .map(StakeTableV2Calls::supportsInterface)
17468                    }
17469                    supportsInterface
17470                },
17471                {
17472                    fn delegate(
17473                        data: &[u8],
17474                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17475                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17476                                data,
17477                            )
17478                            .map(StakeTableV2Calls::delegate)
17479                    }
17480                    delegate
17481                },
17482                {
17483                    fn getVersion(
17484                        data: &[u8],
17485                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17486                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17487                                data,
17488                            )
17489                            .map(StakeTableV2Calls::getVersion)
17490                    }
17491                    getVersion
17492                },
17493                {
17494                    fn registerValidator(
17495                        data: &[u8],
17496                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17497                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17498                                data,
17499                            )
17500                            .map(StakeTableV2Calls::registerValidator)
17501                    }
17502                    registerValidator
17503                },
17504                {
17505                    fn updateExitEscrowPeriod(
17506                        data: &[u8],
17507                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17508                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17509                                data,
17510                            )
17511                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
17512                    }
17513                    updateExitEscrowPeriod
17514                },
17515                {
17516                    fn claimValidatorExit(
17517                        data: &[u8],
17518                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17519                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17520                                data,
17521                            )
17522                            .map(StakeTableV2Calls::claimValidatorExit)
17523                    }
17524                    claimValidatorExit
17525                },
17526                {
17527                    fn getRoleAdmin(
17528                        data: &[u8],
17529                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17530                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17531                                data,
17532                            )
17533                            .map(StakeTableV2Calls::getRoleAdmin)
17534                    }
17535                    getRoleAdmin
17536                },
17537                {
17538                    fn setMaxCommissionIncrease(
17539                        data: &[u8],
17540                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17541                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17542                                data,
17543                            )
17544                            .map(StakeTableV2Calls::setMaxCommissionIncrease)
17545                    }
17546                    setMaxCommissionIncrease
17547                },
17548                {
17549                    fn grantRole(
17550                        data: &[u8],
17551                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17552                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17553                                data,
17554                            )
17555                            .map(StakeTableV2Calls::grantRole)
17556                    }
17557                    grantRole
17558                },
17559                {
17560                    fn registerValidatorV2(
17561                        data: &[u8],
17562                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17563                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17564                                data,
17565                            )
17566                            .map(StakeTableV2Calls::registerValidatorV2)
17567                    }
17568                    registerValidatorV2
17569                },
17570                {
17571                    fn renounceRole(
17572                        data: &[u8],
17573                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17574                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17575                                data,
17576                            )
17577                            .map(StakeTableV2Calls::renounceRole)
17578                    }
17579                    renounceRole
17580                },
17581                {
17582                    fn setMinCommissionUpdateInterval(
17583                        data: &[u8],
17584                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17585                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17586                                data,
17587                            )
17588                            .map(StakeTableV2Calls::setMinCommissionUpdateInterval)
17589                    }
17590                    setMinCommissionUpdateInterval
17591                },
17592                {
17593                    fn updateCommission(
17594                        data: &[u8],
17595                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17596                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17597                                data,
17598                            )
17599                            .map(StakeTableV2Calls::updateCommission)
17600                    }
17601                    updateCommission
17602                },
17603                {
17604                    fn initializedAtBlock(
17605                        data: &[u8],
17606                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17607                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17608                                data,
17609                            )
17610                            .map(StakeTableV2Calls::initializedAtBlock)
17611                    }
17612                    initializedAtBlock
17613                },
17614                {
17615                    fn maxCommissionIncrease(
17616                        data: &[u8],
17617                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17618                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17619                                data,
17620                            )
17621                            .map(StakeTableV2Calls::maxCommissionIncrease)
17622                    }
17623                    maxCommissionIncrease
17624                },
17625                {
17626                    fn unpause(
17627                        data: &[u8],
17628                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17629                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17630                                data,
17631                            )
17632                            .map(StakeTableV2Calls::unpause)
17633                    }
17634                    unpause
17635                },
17636                {
17637                    fn undelegate(
17638                        data: &[u8],
17639                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17640                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17641                                data,
17642                            )
17643                            .map(StakeTableV2Calls::undelegate)
17644                    }
17645                    undelegate
17646                },
17647                {
17648                    fn upgradeToAndCall(
17649                        data: &[u8],
17650                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17651                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17652                                data,
17653                            )
17654                            .map(StakeTableV2Calls::upgradeToAndCall)
17655                    }
17656                    upgradeToAndCall
17657                },
17658                {
17659                    fn proxiableUUID(
17660                        data: &[u8],
17661                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17662                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17663                                data,
17664                            )
17665                            .map(StakeTableV2Calls::proxiableUUID)
17666                    }
17667                    proxiableUUID
17668                },
17669                {
17670                    fn updateConsensusKeys(
17671                        data: &[u8],
17672                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17673                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17674                                data,
17675                            )
17676                            .map(StakeTableV2Calls::updateConsensusKeys)
17677                    }
17678                    updateConsensusKeys
17679                },
17680                {
17681                    fn paused(
17682                        data: &[u8],
17683                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17684                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17685                                data,
17686                            )
17687                            .map(StakeTableV2Calls::paused)
17688                    }
17689                    paused
17690                },
17691                {
17692                    fn schnorrKeys(
17693                        data: &[u8],
17694                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17695                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17696                                data,
17697                            )
17698                            .map(StakeTableV2Calls::schnorrKeys)
17699                    }
17700                    schnorrKeys
17701                },
17702                {
17703                    fn deregisterValidator(
17704                        data: &[u8],
17705                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17706                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17707                                data,
17708                            )
17709                            .map(StakeTableV2Calls::deregisterValidator)
17710                    }
17711                    deregisterValidator
17712                },
17713                {
17714                    fn renounceOwnership(
17715                        data: &[u8],
17716                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17717                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17718                                data,
17719                            )
17720                            .map(StakeTableV2Calls::renounceOwnership)
17721                    }
17722                    renounceOwnership
17723                },
17724                {
17725                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
17726                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17727                                data,
17728                            )
17729                            .map(StakeTableV2Calls::pause)
17730                    }
17731                    pause
17732                },
17733                {
17734                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
17735                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17736                                data,
17737                            )
17738                            .map(StakeTableV2Calls::owner)
17739                    }
17740                    owner
17741                },
17742                {
17743                    fn hasRole(
17744                        data: &[u8],
17745                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17746                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17747                                data,
17748                            )
17749                            .map(StakeTableV2Calls::hasRole)
17750                    }
17751                    hasRole
17752                },
17753                {
17754                    fn _hashBlsKey(
17755                        data: &[u8],
17756                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17757                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17758                                data,
17759                            )
17760                            .map(StakeTableV2Calls::_hashBlsKey)
17761                    }
17762                    _hashBlsKey
17763                },
17764                {
17765                    fn exitEscrowPeriod(
17766                        data: &[u8],
17767                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17768                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17769                                data,
17770                            )
17771                            .map(StakeTableV2Calls::exitEscrowPeriod)
17772                    }
17773                    exitEscrowPeriod
17774                },
17775                {
17776                    fn commissionTracking(
17777                        data: &[u8],
17778                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17779                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17780                                data,
17781                            )
17782                            .map(StakeTableV2Calls::commissionTracking)
17783                    }
17784                    commissionTracking
17785                },
17786                {
17787                    fn DEFAULT_ADMIN_ROLE(
17788                        data: &[u8],
17789                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17790                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17791                                data,
17792                            )
17793                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
17794                    }
17795                    DEFAULT_ADMIN_ROLE
17796                },
17797                {
17798                    fn undelegations(
17799                        data: &[u8],
17800                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17801                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17802                                data,
17803                            )
17804                            .map(StakeTableV2Calls::undelegations)
17805                    }
17806                    undelegations
17807                },
17808                {
17809                    fn claimWithdrawal(
17810                        data: &[u8],
17811                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17812                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17813                                data,
17814                            )
17815                            .map(StakeTableV2Calls::claimWithdrawal)
17816                    }
17817                    claimWithdrawal
17818                },
17819                {
17820                    fn updateConsensusKeysV2(
17821                        data: &[u8],
17822                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17823                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17824                                data,
17825                            )
17826                            .map(StakeTableV2Calls::updateConsensusKeysV2)
17827                    }
17828                    updateConsensusKeysV2
17829                },
17830                {
17831                    fn UPGRADE_INTERFACE_VERSION(
17832                        data: &[u8],
17833                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17834                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17835                                data,
17836                            )
17837                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
17838                    }
17839                    UPGRADE_INTERFACE_VERSION
17840                },
17841                {
17842                    fn blsKeys(
17843                        data: &[u8],
17844                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17845                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17846                                data,
17847                            )
17848                            .map(StakeTableV2Calls::blsKeys)
17849                    }
17850                    blsKeys
17851                },
17852                {
17853                    fn lightClient(
17854                        data: &[u8],
17855                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17856                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17857                                data,
17858                            )
17859                            .map(StakeTableV2Calls::lightClient)
17860                    }
17861                    lightClient
17862                },
17863                {
17864                    fn validatorExits(
17865                        data: &[u8],
17866                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17867                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17868                                data,
17869                            )
17870                            .map(StakeTableV2Calls::validatorExits)
17871                    }
17872                    validatorExits
17873                },
17874                {
17875                    fn initialize(
17876                        data: &[u8],
17877                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17878                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17879                                data,
17880                            )
17881                            .map(StakeTableV2Calls::initialize)
17882                    }
17883                    initialize
17884                },
17885                {
17886                    fn delegations(
17887                        data: &[u8],
17888                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17889                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17890                                data,
17891                            )
17892                            .map(StakeTableV2Calls::delegations)
17893                    }
17894                    delegations
17895                },
17896                {
17897                    fn initializeV2(
17898                        data: &[u8],
17899                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17900                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17901                                data,
17902                            )
17903                            .map(StakeTableV2Calls::initializeV2)
17904                    }
17905                    initializeV2
17906                },
17907                {
17908                    fn revokeRole(
17909                        data: &[u8],
17910                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17911                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17912                                data,
17913                            )
17914                            .map(StakeTableV2Calls::revokeRole)
17915                    }
17916                    revokeRole
17917                },
17918                {
17919                    fn minCommissionIncreaseInterval(
17920                        data: &[u8],
17921                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17922                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17923                                data,
17924                            )
17925                            .map(StakeTableV2Calls::minCommissionIncreaseInterval)
17926                    }
17927                    minCommissionIncreaseInterval
17928                },
17929                {
17930                    fn PAUSER_ROLE(
17931                        data: &[u8],
17932                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17933                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17934                                data,
17935                            )
17936                            .map(StakeTableV2Calls::PAUSER_ROLE)
17937                    }
17938                    PAUSER_ROLE
17939                },
17940                {
17941                    fn transferOwnership(
17942                        data: &[u8],
17943                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17944                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17945                                data,
17946                            )
17947                            .map(StakeTableV2Calls::transferOwnership)
17948                    }
17949                    transferOwnership
17950                },
17951                {
17952                    fn validators(
17953                        data: &[u8],
17954                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
17955                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17956                                data,
17957                            )
17958                            .map(StakeTableV2Calls::validators)
17959                    }
17960                    validators
17961                },
17962                {
17963                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
17964                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17965                                data,
17966                            )
17967                            .map(StakeTableV2Calls::token)
17968                    }
17969                    token
17970                },
17971            ];
17972            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17973                return Err(
17974                    alloy_sol_types::Error::unknown_selector(
17975                        <Self as alloy_sol_types::SolInterface>::NAME,
17976                        selector,
17977                    ),
17978                );
17979            };
17980            DECODE_VALIDATE_SHIMS[idx](data)
17981        }
17982        #[inline]
17983        fn abi_encoded_size(&self) -> usize {
17984            match self {
17985                Self::DEFAULT_ADMIN_ROLE(inner) => {
17986                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
17987                        inner,
17988                    )
17989                }
17990                Self::PAUSER_ROLE(inner) => {
17991                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
17992                        inner,
17993                    )
17994                }
17995                Self::UPGRADE_INTERFACE_VERSION(inner) => {
17996                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
17997                        inner,
17998                    )
17999                }
18000                Self::_hashBlsKey(inner) => {
18001                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
18002                        inner,
18003                    )
18004                }
18005                Self::blsKeys(inner) => {
18006                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18007                }
18008                Self::claimValidatorExit(inner) => {
18009                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
18010                        inner,
18011                    )
18012                }
18013                Self::claimWithdrawal(inner) => {
18014                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
18015                        inner,
18016                    )
18017                }
18018                Self::commissionTracking(inner) => {
18019                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encoded_size(
18020                        inner,
18021                    )
18022                }
18023                Self::delegate(inner) => {
18024                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18025                }
18026                Self::delegations(inner) => {
18027                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
18028                        inner,
18029                    )
18030                }
18031                Self::deregisterValidator(inner) => {
18032                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
18033                        inner,
18034                    )
18035                }
18036                Self::exitEscrowPeriod(inner) => {
18037                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
18038                        inner,
18039                    )
18040                }
18041                Self::getRoleAdmin(inner) => {
18042                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
18043                        inner,
18044                    )
18045                }
18046                Self::getVersion(inner) => {
18047                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18048                }
18049                Self::grantRole(inner) => {
18050                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18051                }
18052                Self::hasRole(inner) => {
18053                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18054                }
18055                Self::initialize(inner) => {
18056                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18057                }
18058                Self::initializeV2(inner) => {
18059                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
18060                        inner,
18061                    )
18062                }
18063                Self::initializedAtBlock(inner) => {
18064                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
18065                        inner,
18066                    )
18067                }
18068                Self::lightClient(inner) => {
18069                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
18070                        inner,
18071                    )
18072                }
18073                Self::maxCommissionIncrease(inner) => {
18074                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
18075                        inner,
18076                    )
18077                }
18078                Self::minCommissionIncreaseInterval(inner) => {
18079                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
18080                        inner,
18081                    )
18082                }
18083                Self::owner(inner) => {
18084                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18085                }
18086                Self::pause(inner) => {
18087                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18088                }
18089                Self::paused(inner) => {
18090                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18091                }
18092                Self::proxiableUUID(inner) => {
18093                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
18094                        inner,
18095                    )
18096                }
18097                Self::registerValidator(inner) => {
18098                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
18099                        inner,
18100                    )
18101                }
18102                Self::registerValidatorV2(inner) => {
18103                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
18104                        inner,
18105                    )
18106                }
18107                Self::renounceOwnership(inner) => {
18108                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
18109                        inner,
18110                    )
18111                }
18112                Self::renounceRole(inner) => {
18113                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
18114                        inner,
18115                    )
18116                }
18117                Self::revokeRole(inner) => {
18118                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18119                }
18120                Self::schnorrKeys(inner) => {
18121                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
18122                        inner,
18123                    )
18124                }
18125                Self::setMaxCommissionIncrease(inner) => {
18126                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
18127                        inner,
18128                    )
18129                }
18130                Self::setMinCommissionUpdateInterval(inner) => {
18131                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
18132                        inner,
18133                    )
18134                }
18135                Self::supportsInterface(inner) => {
18136                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
18137                        inner,
18138                    )
18139                }
18140                Self::token(inner) => {
18141                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18142                }
18143                Self::transferOwnership(inner) => {
18144                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
18145                        inner,
18146                    )
18147                }
18148                Self::undelegate(inner) => {
18149                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18150                }
18151                Self::undelegations(inner) => {
18152                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
18153                        inner,
18154                    )
18155                }
18156                Self::unpause(inner) => {
18157                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18158                }
18159                Self::updateCommission(inner) => {
18160                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
18161                        inner,
18162                    )
18163                }
18164                Self::updateConsensusKeys(inner) => {
18165                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
18166                        inner,
18167                    )
18168                }
18169                Self::updateConsensusKeysV2(inner) => {
18170                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
18171                        inner,
18172                    )
18173                }
18174                Self::updateExitEscrowPeriod(inner) => {
18175                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
18176                        inner,
18177                    )
18178                }
18179                Self::upgradeToAndCall(inner) => {
18180                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
18181                        inner,
18182                    )
18183                }
18184                Self::validatorExits(inner) => {
18185                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
18186                        inner,
18187                    )
18188                }
18189                Self::validators(inner) => {
18190                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
18191                }
18192            }
18193        }
18194        #[inline]
18195        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
18196            match self {
18197                Self::DEFAULT_ADMIN_ROLE(inner) => {
18198                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
18199                        inner,
18200                        out,
18201                    )
18202                }
18203                Self::PAUSER_ROLE(inner) => {
18204                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
18205                        inner,
18206                        out,
18207                    )
18208                }
18209                Self::UPGRADE_INTERFACE_VERSION(inner) => {
18210                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
18211                        inner,
18212                        out,
18213                    )
18214                }
18215                Self::_hashBlsKey(inner) => {
18216                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
18217                        inner,
18218                        out,
18219                    )
18220                }
18221                Self::blsKeys(inner) => {
18222                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
18223                }
18224                Self::claimValidatorExit(inner) => {
18225                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
18226                        inner,
18227                        out,
18228                    )
18229                }
18230                Self::claimWithdrawal(inner) => {
18231                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
18232                        inner,
18233                        out,
18234                    )
18235                }
18236                Self::commissionTracking(inner) => {
18237                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encode_raw(
18238                        inner,
18239                        out,
18240                    )
18241                }
18242                Self::delegate(inner) => {
18243                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
18244                        inner,
18245                        out,
18246                    )
18247                }
18248                Self::delegations(inner) => {
18249                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
18250                        inner,
18251                        out,
18252                    )
18253                }
18254                Self::deregisterValidator(inner) => {
18255                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
18256                        inner,
18257                        out,
18258                    )
18259                }
18260                Self::exitEscrowPeriod(inner) => {
18261                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
18262                        inner,
18263                        out,
18264                    )
18265                }
18266                Self::getRoleAdmin(inner) => {
18267                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
18268                        inner,
18269                        out,
18270                    )
18271                }
18272                Self::getVersion(inner) => {
18273                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
18274                        inner,
18275                        out,
18276                    )
18277                }
18278                Self::grantRole(inner) => {
18279                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
18280                        inner,
18281                        out,
18282                    )
18283                }
18284                Self::hasRole(inner) => {
18285                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
18286                }
18287                Self::initialize(inner) => {
18288                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
18289                        inner,
18290                        out,
18291                    )
18292                }
18293                Self::initializeV2(inner) => {
18294                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
18295                        inner,
18296                        out,
18297                    )
18298                }
18299                Self::initializedAtBlock(inner) => {
18300                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
18301                        inner,
18302                        out,
18303                    )
18304                }
18305                Self::lightClient(inner) => {
18306                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
18307                        inner,
18308                        out,
18309                    )
18310                }
18311                Self::maxCommissionIncrease(inner) => {
18312                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
18313                        inner,
18314                        out,
18315                    )
18316                }
18317                Self::minCommissionIncreaseInterval(inner) => {
18318                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
18319                        inner,
18320                        out,
18321                    )
18322                }
18323                Self::owner(inner) => {
18324                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
18325                }
18326                Self::pause(inner) => {
18327                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
18328                }
18329                Self::paused(inner) => {
18330                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
18331                }
18332                Self::proxiableUUID(inner) => {
18333                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
18334                        inner,
18335                        out,
18336                    )
18337                }
18338                Self::registerValidator(inner) => {
18339                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
18340                        inner,
18341                        out,
18342                    )
18343                }
18344                Self::registerValidatorV2(inner) => {
18345                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
18346                        inner,
18347                        out,
18348                    )
18349                }
18350                Self::renounceOwnership(inner) => {
18351                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
18352                        inner,
18353                        out,
18354                    )
18355                }
18356                Self::renounceRole(inner) => {
18357                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
18358                        inner,
18359                        out,
18360                    )
18361                }
18362                Self::revokeRole(inner) => {
18363                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
18364                        inner,
18365                        out,
18366                    )
18367                }
18368                Self::schnorrKeys(inner) => {
18369                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
18370                        inner,
18371                        out,
18372                    )
18373                }
18374                Self::setMaxCommissionIncrease(inner) => {
18375                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
18376                        inner,
18377                        out,
18378                    )
18379                }
18380                Self::setMinCommissionUpdateInterval(inner) => {
18381                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
18382                        inner,
18383                        out,
18384                    )
18385                }
18386                Self::supportsInterface(inner) => {
18387                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
18388                        inner,
18389                        out,
18390                    )
18391                }
18392                Self::token(inner) => {
18393                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
18394                }
18395                Self::transferOwnership(inner) => {
18396                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
18397                        inner,
18398                        out,
18399                    )
18400                }
18401                Self::undelegate(inner) => {
18402                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
18403                        inner,
18404                        out,
18405                    )
18406                }
18407                Self::undelegations(inner) => {
18408                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
18409                        inner,
18410                        out,
18411                    )
18412                }
18413                Self::unpause(inner) => {
18414                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
18415                }
18416                Self::updateCommission(inner) => {
18417                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
18418                        inner,
18419                        out,
18420                    )
18421                }
18422                Self::updateConsensusKeys(inner) => {
18423                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
18424                        inner,
18425                        out,
18426                    )
18427                }
18428                Self::updateConsensusKeysV2(inner) => {
18429                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
18430                        inner,
18431                        out,
18432                    )
18433                }
18434                Self::updateExitEscrowPeriod(inner) => {
18435                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
18436                        inner,
18437                        out,
18438                    )
18439                }
18440                Self::upgradeToAndCall(inner) => {
18441                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
18442                        inner,
18443                        out,
18444                    )
18445                }
18446                Self::validatorExits(inner) => {
18447                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
18448                        inner,
18449                        out,
18450                    )
18451                }
18452                Self::validators(inner) => {
18453                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
18454                        inner,
18455                        out,
18456                    )
18457                }
18458            }
18459        }
18460    }
18461    ///Container for all the [`StakeTableV2`](self) custom errors.
18462    #[derive(serde::Serialize, serde::Deserialize)]
18463    #[derive(Debug, PartialEq, Eq, Hash)]
18464    pub enum StakeTableV2Errors {
18465        #[allow(missing_docs)]
18466        AccessControlBadConfirmation(AccessControlBadConfirmation),
18467        #[allow(missing_docs)]
18468        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
18469        #[allow(missing_docs)]
18470        AddressEmptyCode(AddressEmptyCode),
18471        #[allow(missing_docs)]
18472        BLSSigVerificationFailed(BLSSigVerificationFailed),
18473        #[allow(missing_docs)]
18474        BN254PairingProdFailed(BN254PairingProdFailed),
18475        #[allow(missing_docs)]
18476        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
18477        #[allow(missing_docs)]
18478        CommissionAlreadyInitialized(CommissionAlreadyInitialized),
18479        #[allow(missing_docs)]
18480        CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax),
18481        #[allow(missing_docs)]
18482        CommissionUnchanged(CommissionUnchanged),
18483        #[allow(missing_docs)]
18484        CommissionUpdateTooSoon(CommissionUpdateTooSoon),
18485        #[allow(missing_docs)]
18486        DeprecatedFunction(DeprecatedFunction),
18487        #[allow(missing_docs)]
18488        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
18489        #[allow(missing_docs)]
18490        ERC1967NonPayable(ERC1967NonPayable),
18491        #[allow(missing_docs)]
18492        EnforcedPause(EnforcedPause),
18493        #[allow(missing_docs)]
18494        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
18495        #[allow(missing_docs)]
18496        ExpectedPause(ExpectedPause),
18497        #[allow(missing_docs)]
18498        FailedInnerCall(FailedInnerCall),
18499        #[allow(missing_docs)]
18500        InsufficientAllowance(InsufficientAllowance),
18501        #[allow(missing_docs)]
18502        InsufficientBalance(InsufficientBalance),
18503        #[allow(missing_docs)]
18504        InvalidCommission(InvalidCommission),
18505        #[allow(missing_docs)]
18506        InvalidG1(InvalidG1),
18507        #[allow(missing_docs)]
18508        InvalidInitialization(InvalidInitialization),
18509        #[allow(missing_docs)]
18510        InvalidRateLimitParameters(InvalidRateLimitParameters),
18511        #[allow(missing_docs)]
18512        InvalidSchnorrSig(InvalidSchnorrSig),
18513        #[allow(missing_docs)]
18514        InvalidSchnorrVK(InvalidSchnorrVK),
18515        #[allow(missing_docs)]
18516        NotInitializing(NotInitializing),
18517        #[allow(missing_docs)]
18518        NothingToWithdraw(NothingToWithdraw),
18519        #[allow(missing_docs)]
18520        OwnableInvalidOwner(OwnableInvalidOwner),
18521        #[allow(missing_docs)]
18522        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
18523        #[allow(missing_docs)]
18524        PowPrecompileFailed(PowPrecompileFailed),
18525        #[allow(missing_docs)]
18526        PrematureWithdrawal(PrematureWithdrawal),
18527        #[allow(missing_docs)]
18528        SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed),
18529        #[allow(missing_docs)]
18530        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
18531        #[allow(missing_docs)]
18532        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
18533        #[allow(missing_docs)]
18534        UndelegationAlreadyExists(UndelegationAlreadyExists),
18535        #[allow(missing_docs)]
18536        ValidatorAlreadyExited(ValidatorAlreadyExited),
18537        #[allow(missing_docs)]
18538        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
18539        #[allow(missing_docs)]
18540        ValidatorInactive(ValidatorInactive),
18541        #[allow(missing_docs)]
18542        ValidatorNotExited(ValidatorNotExited),
18543        #[allow(missing_docs)]
18544        ZeroAddress(ZeroAddress),
18545        #[allow(missing_docs)]
18546        ZeroAmount(ZeroAmount),
18547    }
18548    #[automatically_derived]
18549    impl StakeTableV2Errors {
18550        /// All the selectors of this enum.
18551        ///
18552        /// Note that the selectors might not be in the same order as the variants.
18553        /// No guarantees are made about the order of the selectors.
18554        ///
18555        /// Prefer using `SolInterface` methods instead.
18556        pub const SELECTORS: &'static [[u8; 4usize]] = &[
18557            [1u8, 181u8, 20u8, 174u8],
18558            [6u8, 207u8, 67u8, 143u8],
18559            [12u8, 237u8, 62u8, 80u8],
18560            [17u8, 140u8, 218u8, 167u8],
18561            [20u8, 37u8, 234u8, 66u8],
18562            [22u8, 235u8, 148u8, 203u8],
18563            [30u8, 79u8, 189u8, 247u8],
18564            [31u8, 42u8, 32u8, 5u8],
18565            [37u8, 173u8, 72u8, 202u8],
18566            [42u8, 27u8, 45u8, 216u8],
18567            [50u8, 116u8, 250u8, 100u8],
18568            [66u8, 71u8, 6u8, 135u8],
18569            [76u8, 156u8, 140u8, 227u8],
18570            [80u8, 129u8, 78u8, 16u8],
18571            [80u8, 138u8, 121u8, 63u8],
18572            [90u8, 119u8, 67u8, 87u8],
18573            [102u8, 151u8, 178u8, 50u8],
18574            [103u8, 78u8, 142u8, 243u8],
18575            [141u8, 252u8, 32u8, 43u8],
18576            [146u8, 102u8, 83u8, 81u8],
18577            [153u8, 115u8, 247u8, 216u8],
18578            [153u8, 150u8, 179u8, 21u8],
18579            [158u8, 120u8, 209u8, 76u8],
18580            [170u8, 29u8, 73u8, 164u8],
18581            [174u8, 73u8, 59u8, 3u8],
18582            [179u8, 152u8, 151u8, 159u8],
18583            [181u8, 126u8, 33u8, 223u8],
18584            [194u8, 6u8, 51u8, 79u8],
18585            [194u8, 11u8, 172u8, 148u8],
18586            [194u8, 215u8, 248u8, 19u8],
18587            [208u8, 208u8, 79u8, 96u8],
18588            [212u8, 35u8, 164u8, 241u8],
18589            [215u8, 230u8, 188u8, 248u8],
18590            [217u8, 46u8, 35u8, 61u8],
18591            [217u8, 60u8, 6u8, 101u8],
18592            [220u8, 129u8, 219u8, 133u8],
18593            [224u8, 124u8, 141u8, 186u8],
18594            [226u8, 81u8, 125u8, 63u8],
18595            [234u8, 180u8, 169u8, 99u8],
18596            [242u8, 83u8, 20u8, 166u8],
18597            [249u8, 46u8, 232u8, 169u8],
18598        ];
18599    }
18600    #[automatically_derived]
18601    impl alloy_sol_types::SolInterface for StakeTableV2Errors {
18602        const NAME: &'static str = "StakeTableV2Errors";
18603        const MIN_DATA_LENGTH: usize = 0usize;
18604        const COUNT: usize = 41usize;
18605        #[inline]
18606        fn selector(&self) -> [u8; 4] {
18607            match self {
18608                Self::AccessControlBadConfirmation(_) => {
18609                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
18610                }
18611                Self::AccessControlUnauthorizedAccount(_) => {
18612                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
18613                }
18614                Self::AddressEmptyCode(_) => {
18615                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
18616                }
18617                Self::BLSSigVerificationFailed(_) => {
18618                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
18619                }
18620                Self::BN254PairingProdFailed(_) => {
18621                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
18622                }
18623                Self::BlsKeyAlreadyUsed(_) => {
18624                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
18625                }
18626                Self::CommissionAlreadyInitialized(_) => {
18627                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SELECTOR
18628                }
18629                Self::CommissionIncreaseExceedsMax(_) => {
18630                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SELECTOR
18631                }
18632                Self::CommissionUnchanged(_) => {
18633                    <CommissionUnchanged as alloy_sol_types::SolError>::SELECTOR
18634                }
18635                Self::CommissionUpdateTooSoon(_) => {
18636                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SELECTOR
18637                }
18638                Self::DeprecatedFunction(_) => {
18639                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
18640                }
18641                Self::ERC1967InvalidImplementation(_) => {
18642                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
18643                }
18644                Self::ERC1967NonPayable(_) => {
18645                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
18646                }
18647                Self::EnforcedPause(_) => {
18648                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
18649                }
18650                Self::ExitEscrowPeriodInvalid(_) => {
18651                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
18652                }
18653                Self::ExpectedPause(_) => {
18654                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
18655                }
18656                Self::FailedInnerCall(_) => {
18657                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
18658                }
18659                Self::InsufficientAllowance(_) => {
18660                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
18661                }
18662                Self::InsufficientBalance(_) => {
18663                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
18664                }
18665                Self::InvalidCommission(_) => {
18666                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
18667                }
18668                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
18669                Self::InvalidInitialization(_) => {
18670                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
18671                }
18672                Self::InvalidRateLimitParameters(_) => {
18673                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::SELECTOR
18674                }
18675                Self::InvalidSchnorrSig(_) => {
18676                    <InvalidSchnorrSig as alloy_sol_types::SolError>::SELECTOR
18677                }
18678                Self::InvalidSchnorrVK(_) => {
18679                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
18680                }
18681                Self::NotInitializing(_) => {
18682                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
18683                }
18684                Self::NothingToWithdraw(_) => {
18685                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
18686                }
18687                Self::OwnableInvalidOwner(_) => {
18688                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
18689                }
18690                Self::OwnableUnauthorizedAccount(_) => {
18691                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
18692                }
18693                Self::PowPrecompileFailed(_) => {
18694                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
18695                }
18696                Self::PrematureWithdrawal(_) => {
18697                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
18698                }
18699                Self::SchnorrKeyAlreadyUsed(_) => {
18700                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
18701                }
18702                Self::UUPSUnauthorizedCallContext(_) => {
18703                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
18704                }
18705                Self::UUPSUnsupportedProxiableUUID(_) => {
18706                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
18707                }
18708                Self::UndelegationAlreadyExists(_) => {
18709                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
18710                }
18711                Self::ValidatorAlreadyExited(_) => {
18712                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
18713                }
18714                Self::ValidatorAlreadyRegistered(_) => {
18715                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
18716                }
18717                Self::ValidatorInactive(_) => {
18718                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
18719                }
18720                Self::ValidatorNotExited(_) => {
18721                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
18722                }
18723                Self::ZeroAddress(_) => {
18724                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
18725                }
18726                Self::ZeroAmount(_) => {
18727                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
18728                }
18729            }
18730        }
18731        #[inline]
18732        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
18733            Self::SELECTORS.get(i).copied()
18734        }
18735        #[inline]
18736        fn valid_selector(selector: [u8; 4]) -> bool {
18737            Self::SELECTORS.binary_search(&selector).is_ok()
18738        }
18739        #[inline]
18740        #[allow(non_snake_case)]
18741        fn abi_decode_raw(
18742            selector: [u8; 4],
18743            data: &[u8],
18744        ) -> alloy_sol_types::Result<Self> {
18745            static DECODE_SHIMS: &[fn(
18746                &[u8],
18747            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
18748                {
18749                    fn BlsKeyAlreadyUsed(
18750                        data: &[u8],
18751                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18752                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
18753                                data,
18754                            )
18755                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
18756                    }
18757                    BlsKeyAlreadyUsed
18758                },
18759                {
18760                    fn InvalidSchnorrVK(
18761                        data: &[u8],
18762                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18763                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
18764                                data,
18765                            )
18766                            .map(StakeTableV2Errors::InvalidSchnorrVK)
18767                    }
18768                    InvalidSchnorrVK
18769                },
18770                {
18771                    fn BLSSigVerificationFailed(
18772                        data: &[u8],
18773                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18774                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
18775                                data,
18776                            )
18777                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
18778                    }
18779                    BLSSigVerificationFailed
18780                },
18781                {
18782                    fn OwnableUnauthorizedAccount(
18783                        data: &[u8],
18784                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18785                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
18786                                data,
18787                            )
18788                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
18789                    }
18790                    OwnableUnauthorizedAccount
18791                },
18792                {
18793                    fn FailedInnerCall(
18794                        data: &[u8],
18795                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18796                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
18797                                data,
18798                            )
18799                            .map(StakeTableV2Errors::FailedInnerCall)
18800                    }
18801                    FailedInnerCall
18802                },
18803                {
18804                    fn CommissionUpdateTooSoon(
18805                        data: &[u8],
18806                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18807                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw(
18808                                data,
18809                            )
18810                            .map(StakeTableV2Errors::CommissionUpdateTooSoon)
18811                    }
18812                    CommissionUpdateTooSoon
18813                },
18814                {
18815                    fn OwnableInvalidOwner(
18816                        data: &[u8],
18817                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18818                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
18819                                data,
18820                            )
18821                            .map(StakeTableV2Errors::OwnableInvalidOwner)
18822                    }
18823                    OwnableInvalidOwner
18824                },
18825                {
18826                    fn ZeroAmount(
18827                        data: &[u8],
18828                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18829                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data)
18830                            .map(StakeTableV2Errors::ZeroAmount)
18831                    }
18832                    ZeroAmount
18833                },
18834                {
18835                    fn CommissionIncreaseExceedsMax(
18836                        data: &[u8],
18837                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18838                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw(
18839                                data,
18840                            )
18841                            .map(StakeTableV2Errors::CommissionIncreaseExceedsMax)
18842                    }
18843                    CommissionIncreaseExceedsMax
18844                },
18845                {
18846                    fn InsufficientAllowance(
18847                        data: &[u8],
18848                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18849                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
18850                                data,
18851                            )
18852                            .map(StakeTableV2Errors::InsufficientAllowance)
18853                    }
18854                    InsufficientAllowance
18855                },
18856                {
18857                    fn PowPrecompileFailed(
18858                        data: &[u8],
18859                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18860                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
18861                                data,
18862                            )
18863                            .map(StakeTableV2Errors::PowPrecompileFailed)
18864                    }
18865                    PowPrecompileFailed
18866                },
18867                {
18868                    fn InvalidSchnorrSig(
18869                        data: &[u8],
18870                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18871                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw(
18872                                data,
18873                            )
18874                            .map(StakeTableV2Errors::InvalidSchnorrSig)
18875                    }
18876                    InvalidSchnorrSig
18877                },
18878                {
18879                    fn ERC1967InvalidImplementation(
18880                        data: &[u8],
18881                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18882                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
18883                                data,
18884                            )
18885                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
18886                    }
18887                    ERC1967InvalidImplementation
18888                },
18889                {
18890                    fn CommissionAlreadyInitialized(
18891                        data: &[u8],
18892                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18893                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw(
18894                                data,
18895                            )
18896                            .map(StakeTableV2Errors::CommissionAlreadyInitialized)
18897                    }
18898                    CommissionAlreadyInitialized
18899                },
18900                {
18901                    fn ValidatorInactive(
18902                        data: &[u8],
18903                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18904                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
18905                                data,
18906                            )
18907                            .map(StakeTableV2Errors::ValidatorInactive)
18908                    }
18909                    ValidatorInactive
18910                },
18911                {
18912                    fn PrematureWithdrawal(
18913                        data: &[u8],
18914                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18915                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
18916                                data,
18917                            )
18918                            .map(StakeTableV2Errors::PrematureWithdrawal)
18919                    }
18920                    PrematureWithdrawal
18921                },
18922                {
18923                    fn AccessControlBadConfirmation(
18924                        data: &[u8],
18925                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18926                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
18927                                data,
18928                            )
18929                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
18930                    }
18931                    AccessControlBadConfirmation
18932                },
18933                {
18934                    fn InvalidRateLimitParameters(
18935                        data: &[u8],
18936                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18937                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw(
18938                                data,
18939                            )
18940                            .map(StakeTableV2Errors::InvalidRateLimitParameters)
18941                    }
18942                    InvalidRateLimitParameters
18943                },
18944                {
18945                    fn ExpectedPause(
18946                        data: &[u8],
18947                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18948                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(
18949                                data,
18950                            )
18951                            .map(StakeTableV2Errors::ExpectedPause)
18952                    }
18953                    ExpectedPause
18954                },
18955                {
18956                    fn InsufficientBalance(
18957                        data: &[u8],
18958                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18959                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
18960                                data,
18961                            )
18962                            .map(StakeTableV2Errors::InsufficientBalance)
18963                    }
18964                    InsufficientBalance
18965                },
18966                {
18967                    fn ValidatorAlreadyRegistered(
18968                        data: &[u8],
18969                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18970                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
18971                                data,
18972                            )
18973                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
18974                    }
18975                    ValidatorAlreadyRegistered
18976                },
18977                {
18978                    fn AddressEmptyCode(
18979                        data: &[u8],
18980                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18981                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
18982                                data,
18983                            )
18984                            .map(StakeTableV2Errors::AddressEmptyCode)
18985                    }
18986                    AddressEmptyCode
18987                },
18988                {
18989                    fn InvalidG1(
18990                        data: &[u8],
18991                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
18992                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
18993                            .map(StakeTableV2Errors::InvalidG1)
18994                    }
18995                    InvalidG1
18996                },
18997                {
18998                    fn UUPSUnsupportedProxiableUUID(
18999                        data: &[u8],
19000                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19001                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
19002                                data,
19003                            )
19004                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
19005                    }
19006                    UUPSUnsupportedProxiableUUID
19007                },
19008                {
19009                    fn SchnorrKeyAlreadyUsed(
19010                        data: &[u8],
19011                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19012                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
19013                                data,
19014                            )
19015                            .map(StakeTableV2Errors::SchnorrKeyAlreadyUsed)
19016                    }
19017                    SchnorrKeyAlreadyUsed
19018                },
19019                {
19020                    fn ERC1967NonPayable(
19021                        data: &[u8],
19022                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19023                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
19024                                data,
19025                            )
19026                            .map(StakeTableV2Errors::ERC1967NonPayable)
19027                    }
19028                    ERC1967NonPayable
19029                },
19030                {
19031                    fn ExitEscrowPeriodInvalid(
19032                        data: &[u8],
19033                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19034                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
19035                                data,
19036                            )
19037                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
19038                    }
19039                    ExitEscrowPeriodInvalid
19040                },
19041                {
19042                    fn BN254PairingProdFailed(
19043                        data: &[u8],
19044                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19045                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
19046                                data,
19047                            )
19048                            .map(StakeTableV2Errors::BN254PairingProdFailed)
19049                    }
19050                    BN254PairingProdFailed
19051                },
19052                {
19053                    fn CommissionUnchanged(
19054                        data: &[u8],
19055                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19056                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw(
19057                                data,
19058                            )
19059                            .map(StakeTableV2Errors::CommissionUnchanged)
19060                    }
19061                    CommissionUnchanged
19062                },
19063                {
19064                    fn DeprecatedFunction(
19065                        data: &[u8],
19066                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19067                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw(
19068                                data,
19069                            )
19070                            .map(StakeTableV2Errors::DeprecatedFunction)
19071                    }
19072                    DeprecatedFunction
19073                },
19074                {
19075                    fn NothingToWithdraw(
19076                        data: &[u8],
19077                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19078                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
19079                                data,
19080                            )
19081                            .map(StakeTableV2Errors::NothingToWithdraw)
19082                    }
19083                    NothingToWithdraw
19084                },
19085                {
19086                    fn UndelegationAlreadyExists(
19087                        data: &[u8],
19088                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19089                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
19090                                data,
19091                            )
19092                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
19093                    }
19094                    UndelegationAlreadyExists
19095                },
19096                {
19097                    fn NotInitializing(
19098                        data: &[u8],
19099                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19100                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
19101                                data,
19102                            )
19103                            .map(StakeTableV2Errors::NotInitializing)
19104                    }
19105                    NotInitializing
19106                },
19107                {
19108                    fn ZeroAddress(
19109                        data: &[u8],
19110                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19111                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
19112                            .map(StakeTableV2Errors::ZeroAddress)
19113                    }
19114                    ZeroAddress
19115                },
19116                {
19117                    fn EnforcedPause(
19118                        data: &[u8],
19119                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19120                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(
19121                                data,
19122                            )
19123                            .map(StakeTableV2Errors::EnforcedPause)
19124                    }
19125                    EnforcedPause
19126                },
19127                {
19128                    fn InvalidCommission(
19129                        data: &[u8],
19130                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19131                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
19132                                data,
19133                            )
19134                            .map(StakeTableV2Errors::InvalidCommission)
19135                    }
19136                    InvalidCommission
19137                },
19138                {
19139                    fn UUPSUnauthorizedCallContext(
19140                        data: &[u8],
19141                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19142                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
19143                                data,
19144                            )
19145                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
19146                    }
19147                    UUPSUnauthorizedCallContext
19148                },
19149                {
19150                    fn AccessControlUnauthorizedAccount(
19151                        data: &[u8],
19152                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19153                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
19154                                data,
19155                            )
19156                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
19157                    }
19158                    AccessControlUnauthorizedAccount
19159                },
19160                {
19161                    fn ValidatorAlreadyExited(
19162                        data: &[u8],
19163                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19164                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
19165                                data,
19166                            )
19167                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
19168                    }
19169                    ValidatorAlreadyExited
19170                },
19171                {
19172                    fn ValidatorNotExited(
19173                        data: &[u8],
19174                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19175                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
19176                                data,
19177                            )
19178                            .map(StakeTableV2Errors::ValidatorNotExited)
19179                    }
19180                    ValidatorNotExited
19181                },
19182                {
19183                    fn InvalidInitialization(
19184                        data: &[u8],
19185                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19186                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
19187                                data,
19188                            )
19189                            .map(StakeTableV2Errors::InvalidInitialization)
19190                    }
19191                    InvalidInitialization
19192                },
19193            ];
19194            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
19195                return Err(
19196                    alloy_sol_types::Error::unknown_selector(
19197                        <Self as alloy_sol_types::SolInterface>::NAME,
19198                        selector,
19199                    ),
19200                );
19201            };
19202            DECODE_SHIMS[idx](data)
19203        }
19204        #[inline]
19205        #[allow(non_snake_case)]
19206        fn abi_decode_raw_validate(
19207            selector: [u8; 4],
19208            data: &[u8],
19209        ) -> alloy_sol_types::Result<Self> {
19210            static DECODE_VALIDATE_SHIMS: &[fn(
19211                &[u8],
19212            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
19213                {
19214                    fn BlsKeyAlreadyUsed(
19215                        data: &[u8],
19216                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19217                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
19218                                data,
19219                            )
19220                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
19221                    }
19222                    BlsKeyAlreadyUsed
19223                },
19224                {
19225                    fn InvalidSchnorrVK(
19226                        data: &[u8],
19227                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19228                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
19229                                data,
19230                            )
19231                            .map(StakeTableV2Errors::InvalidSchnorrVK)
19232                    }
19233                    InvalidSchnorrVK
19234                },
19235                {
19236                    fn BLSSigVerificationFailed(
19237                        data: &[u8],
19238                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19239                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
19240                                data,
19241                            )
19242                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
19243                    }
19244                    BLSSigVerificationFailed
19245                },
19246                {
19247                    fn OwnableUnauthorizedAccount(
19248                        data: &[u8],
19249                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19250                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
19251                                data,
19252                            )
19253                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
19254                    }
19255                    OwnableUnauthorizedAccount
19256                },
19257                {
19258                    fn FailedInnerCall(
19259                        data: &[u8],
19260                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19261                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
19262                                data,
19263                            )
19264                            .map(StakeTableV2Errors::FailedInnerCall)
19265                    }
19266                    FailedInnerCall
19267                },
19268                {
19269                    fn CommissionUpdateTooSoon(
19270                        data: &[u8],
19271                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19272                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw_validate(
19273                                data,
19274                            )
19275                            .map(StakeTableV2Errors::CommissionUpdateTooSoon)
19276                    }
19277                    CommissionUpdateTooSoon
19278                },
19279                {
19280                    fn OwnableInvalidOwner(
19281                        data: &[u8],
19282                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19283                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
19284                                data,
19285                            )
19286                            .map(StakeTableV2Errors::OwnableInvalidOwner)
19287                    }
19288                    OwnableInvalidOwner
19289                },
19290                {
19291                    fn ZeroAmount(
19292                        data: &[u8],
19293                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19294                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
19295                                data,
19296                            )
19297                            .map(StakeTableV2Errors::ZeroAmount)
19298                    }
19299                    ZeroAmount
19300                },
19301                {
19302                    fn CommissionIncreaseExceedsMax(
19303                        data: &[u8],
19304                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19305                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw_validate(
19306                                data,
19307                            )
19308                            .map(StakeTableV2Errors::CommissionIncreaseExceedsMax)
19309                    }
19310                    CommissionIncreaseExceedsMax
19311                },
19312                {
19313                    fn InsufficientAllowance(
19314                        data: &[u8],
19315                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19316                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_validate(
19317                                data,
19318                            )
19319                            .map(StakeTableV2Errors::InsufficientAllowance)
19320                    }
19321                    InsufficientAllowance
19322                },
19323                {
19324                    fn PowPrecompileFailed(
19325                        data: &[u8],
19326                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19327                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
19328                                data,
19329                            )
19330                            .map(StakeTableV2Errors::PowPrecompileFailed)
19331                    }
19332                    PowPrecompileFailed
19333                },
19334                {
19335                    fn InvalidSchnorrSig(
19336                        data: &[u8],
19337                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19338                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw_validate(
19339                                data,
19340                            )
19341                            .map(StakeTableV2Errors::InvalidSchnorrSig)
19342                    }
19343                    InvalidSchnorrSig
19344                },
19345                {
19346                    fn ERC1967InvalidImplementation(
19347                        data: &[u8],
19348                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19349                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
19350                                data,
19351                            )
19352                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
19353                    }
19354                    ERC1967InvalidImplementation
19355                },
19356                {
19357                    fn CommissionAlreadyInitialized(
19358                        data: &[u8],
19359                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19360                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw_validate(
19361                                data,
19362                            )
19363                            .map(StakeTableV2Errors::CommissionAlreadyInitialized)
19364                    }
19365                    CommissionAlreadyInitialized
19366                },
19367                {
19368                    fn ValidatorInactive(
19369                        data: &[u8],
19370                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19371                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_validate(
19372                                data,
19373                            )
19374                            .map(StakeTableV2Errors::ValidatorInactive)
19375                    }
19376                    ValidatorInactive
19377                },
19378                {
19379                    fn PrematureWithdrawal(
19380                        data: &[u8],
19381                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19382                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_validate(
19383                                data,
19384                            )
19385                            .map(StakeTableV2Errors::PrematureWithdrawal)
19386                    }
19387                    PrematureWithdrawal
19388                },
19389                {
19390                    fn AccessControlBadConfirmation(
19391                        data: &[u8],
19392                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19393                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
19394                                data,
19395                            )
19396                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
19397                    }
19398                    AccessControlBadConfirmation
19399                },
19400                {
19401                    fn InvalidRateLimitParameters(
19402                        data: &[u8],
19403                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19404                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw_validate(
19405                                data,
19406                            )
19407                            .map(StakeTableV2Errors::InvalidRateLimitParameters)
19408                    }
19409                    InvalidRateLimitParameters
19410                },
19411                {
19412                    fn ExpectedPause(
19413                        data: &[u8],
19414                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19415                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
19416                                data,
19417                            )
19418                            .map(StakeTableV2Errors::ExpectedPause)
19419                    }
19420                    ExpectedPause
19421                },
19422                {
19423                    fn InsufficientBalance(
19424                        data: &[u8],
19425                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19426                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
19427                                data,
19428                            )
19429                            .map(StakeTableV2Errors::InsufficientBalance)
19430                    }
19431                    InsufficientBalance
19432                },
19433                {
19434                    fn ValidatorAlreadyRegistered(
19435                        data: &[u8],
19436                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19437                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
19438                                data,
19439                            )
19440                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
19441                    }
19442                    ValidatorAlreadyRegistered
19443                },
19444                {
19445                    fn AddressEmptyCode(
19446                        data: &[u8],
19447                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19448                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
19449                                data,
19450                            )
19451                            .map(StakeTableV2Errors::AddressEmptyCode)
19452                    }
19453                    AddressEmptyCode
19454                },
19455                {
19456                    fn InvalidG1(
19457                        data: &[u8],
19458                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19459                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
19460                                data,
19461                            )
19462                            .map(StakeTableV2Errors::InvalidG1)
19463                    }
19464                    InvalidG1
19465                },
19466                {
19467                    fn UUPSUnsupportedProxiableUUID(
19468                        data: &[u8],
19469                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19470                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
19471                                data,
19472                            )
19473                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
19474                    }
19475                    UUPSUnsupportedProxiableUUID
19476                },
19477                {
19478                    fn SchnorrKeyAlreadyUsed(
19479                        data: &[u8],
19480                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19481                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
19482                                data,
19483                            )
19484                            .map(StakeTableV2Errors::SchnorrKeyAlreadyUsed)
19485                    }
19486                    SchnorrKeyAlreadyUsed
19487                },
19488                {
19489                    fn ERC1967NonPayable(
19490                        data: &[u8],
19491                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19492                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
19493                                data,
19494                            )
19495                            .map(StakeTableV2Errors::ERC1967NonPayable)
19496                    }
19497                    ERC1967NonPayable
19498                },
19499                {
19500                    fn ExitEscrowPeriodInvalid(
19501                        data: &[u8],
19502                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19503                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_validate(
19504                                data,
19505                            )
19506                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
19507                    }
19508                    ExitEscrowPeriodInvalid
19509                },
19510                {
19511                    fn BN254PairingProdFailed(
19512                        data: &[u8],
19513                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19514                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
19515                                data,
19516                            )
19517                            .map(StakeTableV2Errors::BN254PairingProdFailed)
19518                    }
19519                    BN254PairingProdFailed
19520                },
19521                {
19522                    fn CommissionUnchanged(
19523                        data: &[u8],
19524                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19525                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw_validate(
19526                                data,
19527                            )
19528                            .map(StakeTableV2Errors::CommissionUnchanged)
19529                    }
19530                    CommissionUnchanged
19531                },
19532                {
19533                    fn DeprecatedFunction(
19534                        data: &[u8],
19535                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19536                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw_validate(
19537                                data,
19538                            )
19539                            .map(StakeTableV2Errors::DeprecatedFunction)
19540                    }
19541                    DeprecatedFunction
19542                },
19543                {
19544                    fn NothingToWithdraw(
19545                        data: &[u8],
19546                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19547                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_validate(
19548                                data,
19549                            )
19550                            .map(StakeTableV2Errors::NothingToWithdraw)
19551                    }
19552                    NothingToWithdraw
19553                },
19554                {
19555                    fn UndelegationAlreadyExists(
19556                        data: &[u8],
19557                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19558                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
19559                                data,
19560                            )
19561                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
19562                    }
19563                    UndelegationAlreadyExists
19564                },
19565                {
19566                    fn NotInitializing(
19567                        data: &[u8],
19568                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19569                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
19570                                data,
19571                            )
19572                            .map(StakeTableV2Errors::NotInitializing)
19573                    }
19574                    NotInitializing
19575                },
19576                {
19577                    fn ZeroAddress(
19578                        data: &[u8],
19579                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19580                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
19581                                data,
19582                            )
19583                            .map(StakeTableV2Errors::ZeroAddress)
19584                    }
19585                    ZeroAddress
19586                },
19587                {
19588                    fn EnforcedPause(
19589                        data: &[u8],
19590                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19591                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
19592                                data,
19593                            )
19594                            .map(StakeTableV2Errors::EnforcedPause)
19595                    }
19596                    EnforcedPause
19597                },
19598                {
19599                    fn InvalidCommission(
19600                        data: &[u8],
19601                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19602                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_validate(
19603                                data,
19604                            )
19605                            .map(StakeTableV2Errors::InvalidCommission)
19606                    }
19607                    InvalidCommission
19608                },
19609                {
19610                    fn UUPSUnauthorizedCallContext(
19611                        data: &[u8],
19612                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19613                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
19614                                data,
19615                            )
19616                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
19617                    }
19618                    UUPSUnauthorizedCallContext
19619                },
19620                {
19621                    fn AccessControlUnauthorizedAccount(
19622                        data: &[u8],
19623                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19624                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
19625                                data,
19626                            )
19627                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
19628                    }
19629                    AccessControlUnauthorizedAccount
19630                },
19631                {
19632                    fn ValidatorAlreadyExited(
19633                        data: &[u8],
19634                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19635                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
19636                                data,
19637                            )
19638                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
19639                    }
19640                    ValidatorAlreadyExited
19641                },
19642                {
19643                    fn ValidatorNotExited(
19644                        data: &[u8],
19645                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19646                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
19647                                data,
19648                            )
19649                            .map(StakeTableV2Errors::ValidatorNotExited)
19650                    }
19651                    ValidatorNotExited
19652                },
19653                {
19654                    fn InvalidInitialization(
19655                        data: &[u8],
19656                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
19657                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
19658                                data,
19659                            )
19660                            .map(StakeTableV2Errors::InvalidInitialization)
19661                    }
19662                    InvalidInitialization
19663                },
19664            ];
19665            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
19666                return Err(
19667                    alloy_sol_types::Error::unknown_selector(
19668                        <Self as alloy_sol_types::SolInterface>::NAME,
19669                        selector,
19670                    ),
19671                );
19672            };
19673            DECODE_VALIDATE_SHIMS[idx](data)
19674        }
19675        #[inline]
19676        fn abi_encoded_size(&self) -> usize {
19677            match self {
19678                Self::AccessControlBadConfirmation(inner) => {
19679                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
19680                        inner,
19681                    )
19682                }
19683                Self::AccessControlUnauthorizedAccount(inner) => {
19684                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
19685                        inner,
19686                    )
19687                }
19688                Self::AddressEmptyCode(inner) => {
19689                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
19690                        inner,
19691                    )
19692                }
19693                Self::BLSSigVerificationFailed(inner) => {
19694                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
19695                        inner,
19696                    )
19697                }
19698                Self::BN254PairingProdFailed(inner) => {
19699                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
19700                        inner,
19701                    )
19702                }
19703                Self::BlsKeyAlreadyUsed(inner) => {
19704                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
19705                        inner,
19706                    )
19707                }
19708                Self::CommissionAlreadyInitialized(inner) => {
19709                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encoded_size(
19710                        inner,
19711                    )
19712                }
19713                Self::CommissionIncreaseExceedsMax(inner) => {
19714                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encoded_size(
19715                        inner,
19716                    )
19717                }
19718                Self::CommissionUnchanged(inner) => {
19719                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encoded_size(
19720                        inner,
19721                    )
19722                }
19723                Self::CommissionUpdateTooSoon(inner) => {
19724                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encoded_size(
19725                        inner,
19726                    )
19727                }
19728                Self::DeprecatedFunction(inner) => {
19729                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
19730                        inner,
19731                    )
19732                }
19733                Self::ERC1967InvalidImplementation(inner) => {
19734                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
19735                        inner,
19736                    )
19737                }
19738                Self::ERC1967NonPayable(inner) => {
19739                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
19740                        inner,
19741                    )
19742                }
19743                Self::EnforcedPause(inner) => {
19744                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
19745                }
19746                Self::ExitEscrowPeriodInvalid(inner) => {
19747                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
19748                        inner,
19749                    )
19750                }
19751                Self::ExpectedPause(inner) => {
19752                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
19753                }
19754                Self::FailedInnerCall(inner) => {
19755                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
19756                        inner,
19757                    )
19758                }
19759                Self::InsufficientAllowance(inner) => {
19760                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
19761                        inner,
19762                    )
19763                }
19764                Self::InsufficientBalance(inner) => {
19765                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
19766                        inner,
19767                    )
19768                }
19769                Self::InvalidCommission(inner) => {
19770                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
19771                        inner,
19772                    )
19773                }
19774                Self::InvalidG1(inner) => {
19775                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
19776                }
19777                Self::InvalidInitialization(inner) => {
19778                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
19779                        inner,
19780                    )
19781                }
19782                Self::InvalidRateLimitParameters(inner) => {
19783                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encoded_size(
19784                        inner,
19785                    )
19786                }
19787                Self::InvalidSchnorrSig(inner) => {
19788                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encoded_size(
19789                        inner,
19790                    )
19791                }
19792                Self::InvalidSchnorrVK(inner) => {
19793                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
19794                        inner,
19795                    )
19796                }
19797                Self::NotInitializing(inner) => {
19798                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
19799                        inner,
19800                    )
19801                }
19802                Self::NothingToWithdraw(inner) => {
19803                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
19804                        inner,
19805                    )
19806                }
19807                Self::OwnableInvalidOwner(inner) => {
19808                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
19809                        inner,
19810                    )
19811                }
19812                Self::OwnableUnauthorizedAccount(inner) => {
19813                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
19814                        inner,
19815                    )
19816                }
19817                Self::PowPrecompileFailed(inner) => {
19818                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
19819                        inner,
19820                    )
19821                }
19822                Self::PrematureWithdrawal(inner) => {
19823                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
19824                        inner,
19825                    )
19826                }
19827                Self::SchnorrKeyAlreadyUsed(inner) => {
19828                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
19829                        inner,
19830                    )
19831                }
19832                Self::UUPSUnauthorizedCallContext(inner) => {
19833                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
19834                        inner,
19835                    )
19836                }
19837                Self::UUPSUnsupportedProxiableUUID(inner) => {
19838                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
19839                        inner,
19840                    )
19841                }
19842                Self::UndelegationAlreadyExists(inner) => {
19843                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
19844                        inner,
19845                    )
19846                }
19847                Self::ValidatorAlreadyExited(inner) => {
19848                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
19849                        inner,
19850                    )
19851                }
19852                Self::ValidatorAlreadyRegistered(inner) => {
19853                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
19854                        inner,
19855                    )
19856                }
19857                Self::ValidatorInactive(inner) => {
19858                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
19859                        inner,
19860                    )
19861                }
19862                Self::ValidatorNotExited(inner) => {
19863                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
19864                        inner,
19865                    )
19866                }
19867                Self::ZeroAddress(inner) => {
19868                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
19869                }
19870                Self::ZeroAmount(inner) => {
19871                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
19872                }
19873            }
19874        }
19875        #[inline]
19876        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
19877            match self {
19878                Self::AccessControlBadConfirmation(inner) => {
19879                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
19880                        inner,
19881                        out,
19882                    )
19883                }
19884                Self::AccessControlUnauthorizedAccount(inner) => {
19885                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
19886                        inner,
19887                        out,
19888                    )
19889                }
19890                Self::AddressEmptyCode(inner) => {
19891                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
19892                        inner,
19893                        out,
19894                    )
19895                }
19896                Self::BLSSigVerificationFailed(inner) => {
19897                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
19898                        inner,
19899                        out,
19900                    )
19901                }
19902                Self::BN254PairingProdFailed(inner) => {
19903                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
19904                        inner,
19905                        out,
19906                    )
19907                }
19908                Self::BlsKeyAlreadyUsed(inner) => {
19909                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
19910                        inner,
19911                        out,
19912                    )
19913                }
19914                Self::CommissionAlreadyInitialized(inner) => {
19915                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encode_raw(
19916                        inner,
19917                        out,
19918                    )
19919                }
19920                Self::CommissionIncreaseExceedsMax(inner) => {
19921                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encode_raw(
19922                        inner,
19923                        out,
19924                    )
19925                }
19926                Self::CommissionUnchanged(inner) => {
19927                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encode_raw(
19928                        inner,
19929                        out,
19930                    )
19931                }
19932                Self::CommissionUpdateTooSoon(inner) => {
19933                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encode_raw(
19934                        inner,
19935                        out,
19936                    )
19937                }
19938                Self::DeprecatedFunction(inner) => {
19939                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(
19940                        inner,
19941                        out,
19942                    )
19943                }
19944                Self::ERC1967InvalidImplementation(inner) => {
19945                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
19946                        inner,
19947                        out,
19948                    )
19949                }
19950                Self::ERC1967NonPayable(inner) => {
19951                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
19952                        inner,
19953                        out,
19954                    )
19955                }
19956                Self::EnforcedPause(inner) => {
19957                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
19958                        inner,
19959                        out,
19960                    )
19961                }
19962                Self::ExitEscrowPeriodInvalid(inner) => {
19963                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
19964                        inner,
19965                        out,
19966                    )
19967                }
19968                Self::ExpectedPause(inner) => {
19969                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
19970                        inner,
19971                        out,
19972                    )
19973                }
19974                Self::FailedInnerCall(inner) => {
19975                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
19976                        inner,
19977                        out,
19978                    )
19979                }
19980                Self::InsufficientAllowance(inner) => {
19981                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
19982                        inner,
19983                        out,
19984                    )
19985                }
19986                Self::InsufficientBalance(inner) => {
19987                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
19988                        inner,
19989                        out,
19990                    )
19991                }
19992                Self::InvalidCommission(inner) => {
19993                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
19994                        inner,
19995                        out,
19996                    )
19997                }
19998                Self::InvalidG1(inner) => {
19999                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
20000                }
20001                Self::InvalidInitialization(inner) => {
20002                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
20003                        inner,
20004                        out,
20005                    )
20006                }
20007                Self::InvalidRateLimitParameters(inner) => {
20008                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encode_raw(
20009                        inner,
20010                        out,
20011                    )
20012                }
20013                Self::InvalidSchnorrSig(inner) => {
20014                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encode_raw(
20015                        inner,
20016                        out,
20017                    )
20018                }
20019                Self::InvalidSchnorrVK(inner) => {
20020                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
20021                        inner,
20022                        out,
20023                    )
20024                }
20025                Self::NotInitializing(inner) => {
20026                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
20027                        inner,
20028                        out,
20029                    )
20030                }
20031                Self::NothingToWithdraw(inner) => {
20032                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
20033                        inner,
20034                        out,
20035                    )
20036                }
20037                Self::OwnableInvalidOwner(inner) => {
20038                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
20039                        inner,
20040                        out,
20041                    )
20042                }
20043                Self::OwnableUnauthorizedAccount(inner) => {
20044                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
20045                        inner,
20046                        out,
20047                    )
20048                }
20049                Self::PowPrecompileFailed(inner) => {
20050                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
20051                        inner,
20052                        out,
20053                    )
20054                }
20055                Self::PrematureWithdrawal(inner) => {
20056                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
20057                        inner,
20058                        out,
20059                    )
20060                }
20061                Self::SchnorrKeyAlreadyUsed(inner) => {
20062                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
20063                        inner,
20064                        out,
20065                    )
20066                }
20067                Self::UUPSUnauthorizedCallContext(inner) => {
20068                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
20069                        inner,
20070                        out,
20071                    )
20072                }
20073                Self::UUPSUnsupportedProxiableUUID(inner) => {
20074                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
20075                        inner,
20076                        out,
20077                    )
20078                }
20079                Self::UndelegationAlreadyExists(inner) => {
20080                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
20081                        inner,
20082                        out,
20083                    )
20084                }
20085                Self::ValidatorAlreadyExited(inner) => {
20086                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
20087                        inner,
20088                        out,
20089                    )
20090                }
20091                Self::ValidatorAlreadyRegistered(inner) => {
20092                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
20093                        inner,
20094                        out,
20095                    )
20096                }
20097                Self::ValidatorInactive(inner) => {
20098                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
20099                        inner,
20100                        out,
20101                    )
20102                }
20103                Self::ValidatorNotExited(inner) => {
20104                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
20105                        inner,
20106                        out,
20107                    )
20108                }
20109                Self::ZeroAddress(inner) => {
20110                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
20111                        inner,
20112                        out,
20113                    )
20114                }
20115                Self::ZeroAmount(inner) => {
20116                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
20117                }
20118            }
20119        }
20120    }
20121    ///Container for all the [`StakeTableV2`](self) events.
20122    #[derive(serde::Serialize, serde::Deserialize)]
20123    #[derive()]
20124    pub enum StakeTableV2Events {
20125        #[allow(missing_docs)]
20126        CommissionUpdated(CommissionUpdated),
20127        #[allow(missing_docs)]
20128        ConsensusKeysUpdated(ConsensusKeysUpdated),
20129        #[allow(missing_docs)]
20130        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
20131        #[allow(missing_docs)]
20132        Delegated(Delegated),
20133        #[allow(missing_docs)]
20134        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
20135        #[allow(missing_docs)]
20136        Initialized(Initialized),
20137        #[allow(missing_docs)]
20138        MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated),
20139        #[allow(missing_docs)]
20140        MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated),
20141        #[allow(missing_docs)]
20142        OwnershipTransferred(OwnershipTransferred),
20143        #[allow(missing_docs)]
20144        Paused(Paused),
20145        #[allow(missing_docs)]
20146        RoleAdminChanged(RoleAdminChanged),
20147        #[allow(missing_docs)]
20148        RoleGranted(RoleGranted),
20149        #[allow(missing_docs)]
20150        RoleRevoked(RoleRevoked),
20151        #[allow(missing_docs)]
20152        Undelegated(Undelegated),
20153        #[allow(missing_docs)]
20154        Unpaused(Unpaused),
20155        #[allow(missing_docs)]
20156        Upgraded(Upgraded),
20157        #[allow(missing_docs)]
20158        ValidatorExit(ValidatorExit),
20159        #[allow(missing_docs)]
20160        ValidatorRegistered(ValidatorRegistered),
20161        #[allow(missing_docs)]
20162        ValidatorRegisteredV2(ValidatorRegisteredV2),
20163        #[allow(missing_docs)]
20164        Withdrawal(Withdrawal),
20165    }
20166    #[automatically_derived]
20167    impl StakeTableV2Events {
20168        /// All the selectors of this enum.
20169        ///
20170        /// Note that the selectors might not be in the same order as the variants.
20171        /// No guarantees are made about the order of the selectors.
20172        ///
20173        /// Prefer using `SolInterface` methods instead.
20174        pub const SELECTORS: &'static [[u8; 32usize]] = &[
20175            [
20176                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
20177                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
20178                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
20179            ],
20180            [
20181                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
20182                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
20183                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
20184            ],
20185            [
20186                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
20187                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
20188                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
20189            ],
20190            [
20191                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
20192                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
20193                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
20194            ],
20195            [
20196                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
20197                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
20198                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
20199            ],
20200            [
20201                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
20202                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
20203                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
20204            ],
20205            [
20206                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
20207                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
20208                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
20209            ],
20210            [
20211                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
20212                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
20213                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
20214            ],
20215            [
20216                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
20217                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
20218                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
20219            ],
20220            [
20221                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
20222                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
20223                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
20224            ],
20225            [
20226                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
20227                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
20228                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
20229            ],
20230            [
20231                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
20232                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
20233                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
20234            ],
20235            [
20236                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
20237                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
20238                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
20239            ],
20240            [
20241                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
20242                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
20243                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
20244            ],
20245            [
20246                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
20247                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
20248                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
20249            ],
20250            [
20251                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
20252                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
20253                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
20254            ],
20255            [
20256                240u8, 87u8, 212u8, 234u8, 129u8, 233u8, 134u8, 40u8, 101u8, 58u8, 143u8,
20257                144u8, 120u8, 133u8, 65u8, 151u8, 32u8, 120u8, 19u8, 115u8, 52u8, 169u8,
20258                43u8, 66u8, 52u8, 126u8, 172u8, 205u8, 168u8, 15u8, 196u8, 10u8,
20259            ],
20260            [
20261                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
20262                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
20263                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
20264            ],
20265            [
20266                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
20267                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
20268                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
20269            ],
20270            [
20271                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
20272                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
20273                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
20274            ],
20275        ];
20276    }
20277    #[automatically_derived]
20278    impl alloy_sol_types::SolEventInterface for StakeTableV2Events {
20279        const NAME: &'static str = "StakeTableV2Events";
20280        const COUNT: usize = 20usize;
20281        fn decode_raw_log(
20282            topics: &[alloy_sol_types::Word],
20283            data: &[u8],
20284        ) -> alloy_sol_types::Result<Self> {
20285            match topics.first().copied() {
20286                Some(
20287                    <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
20288                ) => {
20289                    <CommissionUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
20290                            topics,
20291                            data,
20292                        )
20293                        .map(Self::CommissionUpdated)
20294                }
20295                Some(
20296                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
20297                ) => {
20298                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
20299                            topics,
20300                            data,
20301                        )
20302                        .map(Self::ConsensusKeysUpdated)
20303                }
20304                Some(
20305                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
20306                ) => {
20307                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
20308                            topics,
20309                            data,
20310                        )
20311                        .map(Self::ConsensusKeysUpdatedV2)
20312                }
20313                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20314                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
20315                            topics,
20316                            data,
20317                        )
20318                        .map(Self::Delegated)
20319                }
20320                Some(
20321                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
20322                ) => {
20323                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
20324                            topics,
20325                            data,
20326                        )
20327                        .map(Self::ExitEscrowPeriodUpdated)
20328                }
20329                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20330                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
20331                            topics,
20332                            data,
20333                        )
20334                        .map(Self::Initialized)
20335                }
20336                Some(
20337                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
20338                ) => {
20339                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
20340                            topics,
20341                            data,
20342                        )
20343                        .map(Self::MaxCommissionIncreaseUpdated)
20344                }
20345                Some(
20346                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
20347                ) => {
20348                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
20349                            topics,
20350                            data,
20351                        )
20352                        .map(Self::MinCommissionUpdateIntervalUpdated)
20353                }
20354                Some(
20355                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
20356                ) => {
20357                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
20358                            topics,
20359                            data,
20360                        )
20361                        .map(Self::OwnershipTransferred)
20362                }
20363                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20364                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
20365                        .map(Self::Paused)
20366                }
20367                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20368                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
20369                            topics,
20370                            data,
20371                        )
20372                        .map(Self::RoleAdminChanged)
20373                }
20374                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20375                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
20376                            topics,
20377                            data,
20378                        )
20379                        .map(Self::RoleGranted)
20380                }
20381                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20382                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
20383                            topics,
20384                            data,
20385                        )
20386                        .map(Self::RoleRevoked)
20387                }
20388                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20389                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
20390                            topics,
20391                            data,
20392                        )
20393                        .map(Self::Undelegated)
20394                }
20395                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20396                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
20397                        .map(Self::Unpaused)
20398                }
20399                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20400                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
20401                        .map(Self::Upgraded)
20402                }
20403                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20404                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
20405                            topics,
20406                            data,
20407                        )
20408                        .map(Self::ValidatorExit)
20409                }
20410                Some(
20411                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
20412                ) => {
20413                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
20414                            topics,
20415                            data,
20416                        )
20417                        .map(Self::ValidatorRegistered)
20418                }
20419                Some(
20420                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
20421                ) => {
20422                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log(
20423                            topics,
20424                            data,
20425                        )
20426                        .map(Self::ValidatorRegisteredV2)
20427                }
20428                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
20429                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
20430                            topics,
20431                            data,
20432                        )
20433                        .map(Self::Withdrawal)
20434                }
20435                _ => {
20436                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
20437                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
20438                        log: alloy_sol_types::private::Box::new(
20439                            alloy_sol_types::private::LogData::new_unchecked(
20440                                topics.to_vec(),
20441                                data.to_vec().into(),
20442                            ),
20443                        ),
20444                    })
20445                }
20446            }
20447        }
20448    }
20449    #[automatically_derived]
20450    impl alloy_sol_types::private::IntoLogData for StakeTableV2Events {
20451        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
20452            match self {
20453                Self::CommissionUpdated(inner) => {
20454                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20455                }
20456                Self::ConsensusKeysUpdated(inner) => {
20457                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20458                }
20459                Self::ConsensusKeysUpdatedV2(inner) => {
20460                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20461                }
20462                Self::Delegated(inner) => {
20463                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20464                }
20465                Self::ExitEscrowPeriodUpdated(inner) => {
20466                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20467                }
20468                Self::Initialized(inner) => {
20469                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20470                }
20471                Self::MaxCommissionIncreaseUpdated(inner) => {
20472                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20473                }
20474                Self::MinCommissionUpdateIntervalUpdated(inner) => {
20475                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20476                }
20477                Self::OwnershipTransferred(inner) => {
20478                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20479                }
20480                Self::Paused(inner) => {
20481                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20482                }
20483                Self::RoleAdminChanged(inner) => {
20484                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20485                }
20486                Self::RoleGranted(inner) => {
20487                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20488                }
20489                Self::RoleRevoked(inner) => {
20490                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20491                }
20492                Self::Undelegated(inner) => {
20493                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20494                }
20495                Self::Unpaused(inner) => {
20496                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20497                }
20498                Self::Upgraded(inner) => {
20499                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20500                }
20501                Self::ValidatorExit(inner) => {
20502                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20503                }
20504                Self::ValidatorRegistered(inner) => {
20505                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20506                }
20507                Self::ValidatorRegisteredV2(inner) => {
20508                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20509                }
20510                Self::Withdrawal(inner) => {
20511                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
20512                }
20513            }
20514        }
20515        fn into_log_data(self) -> alloy_sol_types::private::LogData {
20516            match self {
20517                Self::CommissionUpdated(inner) => {
20518                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20519                }
20520                Self::ConsensusKeysUpdated(inner) => {
20521                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20522                }
20523                Self::ConsensusKeysUpdatedV2(inner) => {
20524                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20525                }
20526                Self::Delegated(inner) => {
20527                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20528                }
20529                Self::ExitEscrowPeriodUpdated(inner) => {
20530                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20531                }
20532                Self::Initialized(inner) => {
20533                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20534                }
20535                Self::MaxCommissionIncreaseUpdated(inner) => {
20536                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20537                }
20538                Self::MinCommissionUpdateIntervalUpdated(inner) => {
20539                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20540                }
20541                Self::OwnershipTransferred(inner) => {
20542                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20543                }
20544                Self::Paused(inner) => {
20545                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20546                }
20547                Self::RoleAdminChanged(inner) => {
20548                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20549                }
20550                Self::RoleGranted(inner) => {
20551                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20552                }
20553                Self::RoleRevoked(inner) => {
20554                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20555                }
20556                Self::Undelegated(inner) => {
20557                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20558                }
20559                Self::Unpaused(inner) => {
20560                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20561                }
20562                Self::Upgraded(inner) => {
20563                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20564                }
20565                Self::ValidatorExit(inner) => {
20566                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20567                }
20568                Self::ValidatorRegistered(inner) => {
20569                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20570                }
20571                Self::ValidatorRegisteredV2(inner) => {
20572                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20573                }
20574                Self::Withdrawal(inner) => {
20575                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
20576                }
20577            }
20578        }
20579    }
20580    use alloy::contract as alloy_contract;
20581    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
20582
20583See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
20584    #[inline]
20585    pub const fn new<
20586        P: alloy_contract::private::Provider<N>,
20587        N: alloy_contract::private::Network,
20588    >(
20589        address: alloy_sol_types::private::Address,
20590        __provider: P,
20591    ) -> StakeTableV2Instance<P, N> {
20592        StakeTableV2Instance::<P, N>::new(address, __provider)
20593    }
20594    /**Deploys this contract using the given `provider` and constructor arguments, if any.
20595
20596Returns a new instance of the contract, if the deployment was successful.
20597
20598For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
20599    #[inline]
20600    pub fn deploy<
20601        P: alloy_contract::private::Provider<N>,
20602        N: alloy_contract::private::Network,
20603    >(
20604        __provider: P,
20605    ) -> impl ::core::future::Future<
20606        Output = alloy_contract::Result<StakeTableV2Instance<P, N>>,
20607    > {
20608        StakeTableV2Instance::<P, N>::deploy(__provider)
20609    }
20610    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
20611and constructor arguments, if any.
20612
20613This is a simple wrapper around creating a `RawCallBuilder` with the data set to
20614the bytecode concatenated with the constructor's ABI-encoded arguments.*/
20615    #[inline]
20616    pub fn deploy_builder<
20617        P: alloy_contract::private::Provider<N>,
20618        N: alloy_contract::private::Network,
20619    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
20620        StakeTableV2Instance::<P, N>::deploy_builder(__provider)
20621    }
20622    /**A [`StakeTableV2`](self) instance.
20623
20624Contains type-safe methods for interacting with an on-chain instance of the
20625[`StakeTableV2`](self) contract located at a given `address`, using a given
20626provider `P`.
20627
20628If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
20629documentation on how to provide it), the `deploy` and `deploy_builder` methods can
20630be used to deploy a new instance of the contract.
20631
20632See the [module-level documentation](self) for all the available methods.*/
20633    #[derive(Clone)]
20634    pub struct StakeTableV2Instance<P, N = alloy_contract::private::Ethereum> {
20635        address: alloy_sol_types::private::Address,
20636        provider: P,
20637        _network: ::core::marker::PhantomData<N>,
20638    }
20639    #[automatically_derived]
20640    impl<P, N> ::core::fmt::Debug for StakeTableV2Instance<P, N> {
20641        #[inline]
20642        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
20643            f.debug_tuple("StakeTableV2Instance").field(&self.address).finish()
20644        }
20645    }
20646    /// Instantiation and getters/setters.
20647    #[automatically_derived]
20648    impl<
20649        P: alloy_contract::private::Provider<N>,
20650        N: alloy_contract::private::Network,
20651    > StakeTableV2Instance<P, N> {
20652        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
20653
20654See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
20655        #[inline]
20656        pub const fn new(
20657            address: alloy_sol_types::private::Address,
20658            __provider: P,
20659        ) -> Self {
20660            Self {
20661                address,
20662                provider: __provider,
20663                _network: ::core::marker::PhantomData,
20664            }
20665        }
20666        /**Deploys this contract using the given `provider` and constructor arguments, if any.
20667
20668Returns a new instance of the contract, if the deployment was successful.
20669
20670For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
20671        #[inline]
20672        pub async fn deploy(
20673            __provider: P,
20674        ) -> alloy_contract::Result<StakeTableV2Instance<P, N>> {
20675            let call_builder = Self::deploy_builder(__provider);
20676            let contract_address = call_builder.deploy().await?;
20677            Ok(Self::new(contract_address, call_builder.provider))
20678        }
20679        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
20680and constructor arguments, if any.
20681
20682This is a simple wrapper around creating a `RawCallBuilder` with the data set to
20683the bytecode concatenated with the constructor's ABI-encoded arguments.*/
20684        #[inline]
20685        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
20686            alloy_contract::RawCallBuilder::new_raw_deploy(
20687                __provider,
20688                ::core::clone::Clone::clone(&BYTECODE),
20689            )
20690        }
20691        /// Returns a reference to the address.
20692        #[inline]
20693        pub const fn address(&self) -> &alloy_sol_types::private::Address {
20694            &self.address
20695        }
20696        /// Sets the address.
20697        #[inline]
20698        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
20699            self.address = address;
20700        }
20701        /// Sets the address and returns `self`.
20702        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
20703            self.set_address(address);
20704            self
20705        }
20706        /// Returns a reference to the provider.
20707        #[inline]
20708        pub const fn provider(&self) -> &P {
20709            &self.provider
20710        }
20711    }
20712    impl<P: ::core::clone::Clone, N> StakeTableV2Instance<&P, N> {
20713        /// Clones the provider and returns a new instance with the cloned provider.
20714        #[inline]
20715        pub fn with_cloned_provider(self) -> StakeTableV2Instance<P, N> {
20716            StakeTableV2Instance {
20717                address: self.address,
20718                provider: ::core::clone::Clone::clone(&self.provider),
20719                _network: ::core::marker::PhantomData,
20720            }
20721        }
20722    }
20723    /// Function calls.
20724    #[automatically_derived]
20725    impl<
20726        P: alloy_contract::private::Provider<N>,
20727        N: alloy_contract::private::Network,
20728    > StakeTableV2Instance<P, N> {
20729        /// Creates a new call builder using this contract instance's provider and address.
20730        ///
20731        /// Note that the call can be any function call, not just those defined in this
20732        /// contract. Prefer using the other methods for building type-safe contract calls.
20733        pub fn call_builder<C: alloy_sol_types::SolCall>(
20734            &self,
20735            call: &C,
20736        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
20737            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
20738        }
20739        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
20740        pub fn DEFAULT_ADMIN_ROLE(
20741            &self,
20742        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
20743            self.call_builder(&DEFAULT_ADMIN_ROLECall)
20744        }
20745        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
20746        pub fn PAUSER_ROLE(
20747            &self,
20748        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
20749            self.call_builder(&PAUSER_ROLECall)
20750        }
20751        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
20752        pub fn UPGRADE_INTERFACE_VERSION(
20753            &self,
20754        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
20755            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
20756        }
20757        ///Creates a new call builder for the [`_hashBlsKey`] function.
20758        pub fn _hashBlsKey(
20759            &self,
20760            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20761        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
20762            self.call_builder(&_hashBlsKeyCall { blsVK })
20763        }
20764        ///Creates a new call builder for the [`blsKeys`] function.
20765        pub fn blsKeys(
20766            &self,
20767            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
20768        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
20769            self.call_builder(&blsKeysCall { blsKeyHash })
20770        }
20771        ///Creates a new call builder for the [`claimValidatorExit`] function.
20772        pub fn claimValidatorExit(
20773            &self,
20774            validator: alloy::sol_types::private::Address,
20775        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
20776            self.call_builder(
20777                &claimValidatorExitCall {
20778                    validator,
20779                },
20780            )
20781        }
20782        ///Creates a new call builder for the [`claimWithdrawal`] function.
20783        pub fn claimWithdrawal(
20784            &self,
20785            validator: alloy::sol_types::private::Address,
20786        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
20787            self.call_builder(&claimWithdrawalCall { validator })
20788        }
20789        ///Creates a new call builder for the [`commissionTracking`] function.
20790        pub fn commissionTracking(
20791            &self,
20792            validator: alloy::sol_types::private::Address,
20793        ) -> alloy_contract::SolCallBuilder<&P, commissionTrackingCall, N> {
20794            self.call_builder(
20795                &commissionTrackingCall {
20796                    validator,
20797                },
20798            )
20799        }
20800        ///Creates a new call builder for the [`delegate`] function.
20801        pub fn delegate(
20802            &self,
20803            validator: alloy::sol_types::private::Address,
20804            amount: alloy::sol_types::private::primitives::aliases::U256,
20805        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
20806            self.call_builder(&delegateCall { validator, amount })
20807        }
20808        ///Creates a new call builder for the [`delegations`] function.
20809        pub fn delegations(
20810            &self,
20811            validator: alloy::sol_types::private::Address,
20812            delegator: alloy::sol_types::private::Address,
20813        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
20814            self.call_builder(
20815                &delegationsCall {
20816                    validator,
20817                    delegator,
20818                },
20819            )
20820        }
20821        ///Creates a new call builder for the [`deregisterValidator`] function.
20822        pub fn deregisterValidator(
20823            &self,
20824        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
20825            self.call_builder(&deregisterValidatorCall)
20826        }
20827        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
20828        pub fn exitEscrowPeriod(
20829            &self,
20830        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
20831            self.call_builder(&exitEscrowPeriodCall)
20832        }
20833        ///Creates a new call builder for the [`getRoleAdmin`] function.
20834        pub fn getRoleAdmin(
20835            &self,
20836            role: alloy::sol_types::private::FixedBytes<32>,
20837        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
20838            self.call_builder(&getRoleAdminCall { role })
20839        }
20840        ///Creates a new call builder for the [`getVersion`] function.
20841        pub fn getVersion(
20842            &self,
20843        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
20844            self.call_builder(&getVersionCall)
20845        }
20846        ///Creates a new call builder for the [`grantRole`] function.
20847        pub fn grantRole(
20848            &self,
20849            role: alloy::sol_types::private::FixedBytes<32>,
20850            account: alloy::sol_types::private::Address,
20851        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
20852            self.call_builder(&grantRoleCall { role, account })
20853        }
20854        ///Creates a new call builder for the [`hasRole`] function.
20855        pub fn hasRole(
20856            &self,
20857            role: alloy::sol_types::private::FixedBytes<32>,
20858            account: alloy::sol_types::private::Address,
20859        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
20860            self.call_builder(&hasRoleCall { role, account })
20861        }
20862        ///Creates a new call builder for the [`initialize`] function.
20863        pub fn initialize(
20864            &self,
20865            _tokenAddress: alloy::sol_types::private::Address,
20866            _lightClientAddress: alloy::sol_types::private::Address,
20867            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
20868            _timelock: alloy::sol_types::private::Address,
20869        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
20870            self.call_builder(
20871                &initializeCall {
20872                    _tokenAddress,
20873                    _lightClientAddress,
20874                    _exitEscrowPeriod,
20875                    _timelock,
20876                },
20877            )
20878        }
20879        ///Creates a new call builder for the [`initializeV2`] function.
20880        pub fn initializeV2(
20881            &self,
20882            pauser: alloy::sol_types::private::Address,
20883            admin: alloy::sol_types::private::Address,
20884            initialCommissions: alloy::sol_types::private::Vec<
20885                <InitialCommission as alloy::sol_types::SolType>::RustType,
20886            >,
20887        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
20888            self.call_builder(
20889                &initializeV2Call {
20890                    pauser,
20891                    admin,
20892                    initialCommissions,
20893                },
20894            )
20895        }
20896        ///Creates a new call builder for the [`initializedAtBlock`] function.
20897        pub fn initializedAtBlock(
20898            &self,
20899        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
20900            self.call_builder(&initializedAtBlockCall)
20901        }
20902        ///Creates a new call builder for the [`lightClient`] function.
20903        pub fn lightClient(
20904            &self,
20905        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
20906            self.call_builder(&lightClientCall)
20907        }
20908        ///Creates a new call builder for the [`maxCommissionIncrease`] function.
20909        pub fn maxCommissionIncrease(
20910            &self,
20911        ) -> alloy_contract::SolCallBuilder<&P, maxCommissionIncreaseCall, N> {
20912            self.call_builder(&maxCommissionIncreaseCall)
20913        }
20914        ///Creates a new call builder for the [`minCommissionIncreaseInterval`] function.
20915        pub fn minCommissionIncreaseInterval(
20916            &self,
20917        ) -> alloy_contract::SolCallBuilder<&P, minCommissionIncreaseIntervalCall, N> {
20918            self.call_builder(&minCommissionIncreaseIntervalCall)
20919        }
20920        ///Creates a new call builder for the [`owner`] function.
20921        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
20922            self.call_builder(&ownerCall)
20923        }
20924        ///Creates a new call builder for the [`pause`] function.
20925        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
20926            self.call_builder(&pauseCall)
20927        }
20928        ///Creates a new call builder for the [`paused`] function.
20929        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
20930            self.call_builder(&pausedCall)
20931        }
20932        ///Creates a new call builder for the [`proxiableUUID`] function.
20933        pub fn proxiableUUID(
20934            &self,
20935        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
20936            self.call_builder(&proxiableUUIDCall)
20937        }
20938        ///Creates a new call builder for the [`registerValidator`] function.
20939        pub fn registerValidator(
20940            &self,
20941            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20942            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20943            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20944            _3: u16,
20945        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
20946            self.call_builder(
20947                &registerValidatorCall {
20948                    _0,
20949                    _1,
20950                    _2,
20951                    _3,
20952                },
20953            )
20954        }
20955        ///Creates a new call builder for the [`registerValidatorV2`] function.
20956        pub fn registerValidatorV2(
20957            &self,
20958            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
20959            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
20960            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
20961            schnorrSig: alloy::sol_types::private::Bytes,
20962            commission: u16,
20963        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV2Call, N> {
20964            self.call_builder(
20965                &registerValidatorV2Call {
20966                    blsVK,
20967                    schnorrVK,
20968                    blsSig,
20969                    schnorrSig,
20970                    commission,
20971                },
20972            )
20973        }
20974        ///Creates a new call builder for the [`renounceOwnership`] function.
20975        pub fn renounceOwnership(
20976            &self,
20977        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
20978            self.call_builder(&renounceOwnershipCall)
20979        }
20980        ///Creates a new call builder for the [`renounceRole`] function.
20981        pub fn renounceRole(
20982            &self,
20983            role: alloy::sol_types::private::FixedBytes<32>,
20984            callerConfirmation: alloy::sol_types::private::Address,
20985        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
20986            self.call_builder(
20987                &renounceRoleCall {
20988                    role,
20989                    callerConfirmation,
20990                },
20991            )
20992        }
20993        ///Creates a new call builder for the [`revokeRole`] function.
20994        pub fn revokeRole(
20995            &self,
20996            role: alloy::sol_types::private::FixedBytes<32>,
20997            account: alloy::sol_types::private::Address,
20998        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
20999            self.call_builder(&revokeRoleCall { role, account })
21000        }
21001        ///Creates a new call builder for the [`schnorrKeys`] function.
21002        pub fn schnorrKeys(
21003            &self,
21004            schnorrKey: alloy::sol_types::private::FixedBytes<32>,
21005        ) -> alloy_contract::SolCallBuilder<&P, schnorrKeysCall, N> {
21006            self.call_builder(&schnorrKeysCall { schnorrKey })
21007        }
21008        ///Creates a new call builder for the [`setMaxCommissionIncrease`] function.
21009        pub fn setMaxCommissionIncrease(
21010            &self,
21011            newMaxIncrease: u16,
21012        ) -> alloy_contract::SolCallBuilder<&P, setMaxCommissionIncreaseCall, N> {
21013            self.call_builder(
21014                &setMaxCommissionIncreaseCall {
21015                    newMaxIncrease,
21016                },
21017            )
21018        }
21019        ///Creates a new call builder for the [`setMinCommissionUpdateInterval`] function.
21020        pub fn setMinCommissionUpdateInterval(
21021            &self,
21022            newInterval: alloy::sol_types::private::primitives::aliases::U256,
21023        ) -> alloy_contract::SolCallBuilder<&P, setMinCommissionUpdateIntervalCall, N> {
21024            self.call_builder(
21025                &setMinCommissionUpdateIntervalCall {
21026                    newInterval,
21027                },
21028            )
21029        }
21030        ///Creates a new call builder for the [`supportsInterface`] function.
21031        pub fn supportsInterface(
21032            &self,
21033            interfaceId: alloy::sol_types::private::FixedBytes<4>,
21034        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
21035            self.call_builder(
21036                &supportsInterfaceCall {
21037                    interfaceId,
21038                },
21039            )
21040        }
21041        ///Creates a new call builder for the [`token`] function.
21042        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
21043            self.call_builder(&tokenCall)
21044        }
21045        ///Creates a new call builder for the [`transferOwnership`] function.
21046        pub fn transferOwnership(
21047            &self,
21048            newOwner: alloy::sol_types::private::Address,
21049        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
21050            self.call_builder(&transferOwnershipCall { newOwner })
21051        }
21052        ///Creates a new call builder for the [`undelegate`] function.
21053        pub fn undelegate(
21054            &self,
21055            validator: alloy::sol_types::private::Address,
21056            amount: alloy::sol_types::private::primitives::aliases::U256,
21057        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
21058            self.call_builder(
21059                &undelegateCall {
21060                    validator,
21061                    amount,
21062                },
21063            )
21064        }
21065        ///Creates a new call builder for the [`undelegations`] function.
21066        pub fn undelegations(
21067            &self,
21068            validator: alloy::sol_types::private::Address,
21069            delegator: alloy::sol_types::private::Address,
21070        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
21071            self.call_builder(
21072                &undelegationsCall {
21073                    validator,
21074                    delegator,
21075                },
21076            )
21077        }
21078        ///Creates a new call builder for the [`unpause`] function.
21079        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
21080            self.call_builder(&unpauseCall)
21081        }
21082        ///Creates a new call builder for the [`updateCommission`] function.
21083        pub fn updateCommission(
21084            &self,
21085            newCommission: u16,
21086        ) -> alloy_contract::SolCallBuilder<&P, updateCommissionCall, N> {
21087            self.call_builder(
21088                &updateCommissionCall {
21089                    newCommission,
21090                },
21091            )
21092        }
21093        ///Creates a new call builder for the [`updateConsensusKeys`] function.
21094        pub fn updateConsensusKeys(
21095            &self,
21096            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
21097            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
21098            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
21099        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
21100            self.call_builder(
21101                &updateConsensusKeysCall {
21102                    _0,
21103                    _1,
21104                    _2,
21105                },
21106            )
21107        }
21108        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
21109        pub fn updateConsensusKeysV2(
21110            &self,
21111            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
21112            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
21113            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
21114            schnorrSig: alloy::sol_types::private::Bytes,
21115        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysV2Call, N> {
21116            self.call_builder(
21117                &updateConsensusKeysV2Call {
21118                    blsVK,
21119                    schnorrVK,
21120                    blsSig,
21121                    schnorrSig,
21122                },
21123            )
21124        }
21125        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
21126        pub fn updateExitEscrowPeriod(
21127            &self,
21128            newExitEscrowPeriod: u64,
21129        ) -> alloy_contract::SolCallBuilder<&P, updateExitEscrowPeriodCall, N> {
21130            self.call_builder(
21131                &updateExitEscrowPeriodCall {
21132                    newExitEscrowPeriod,
21133                },
21134            )
21135        }
21136        ///Creates a new call builder for the [`upgradeToAndCall`] function.
21137        pub fn upgradeToAndCall(
21138            &self,
21139            newImplementation: alloy::sol_types::private::Address,
21140            data: alloy::sol_types::private::Bytes,
21141        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
21142            self.call_builder(
21143                &upgradeToAndCallCall {
21144                    newImplementation,
21145                    data,
21146                },
21147            )
21148        }
21149        ///Creates a new call builder for the [`validatorExits`] function.
21150        pub fn validatorExits(
21151            &self,
21152            validator: alloy::sol_types::private::Address,
21153        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
21154            self.call_builder(&validatorExitsCall { validator })
21155        }
21156        ///Creates a new call builder for the [`validators`] function.
21157        pub fn validators(
21158            &self,
21159            account: alloy::sol_types::private::Address,
21160        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
21161            self.call_builder(&validatorsCall { account })
21162        }
21163    }
21164    /// Event filters.
21165    #[automatically_derived]
21166    impl<
21167        P: alloy_contract::private::Provider<N>,
21168        N: alloy_contract::private::Network,
21169    > StakeTableV2Instance<P, N> {
21170        /// Creates a new event filter using this contract instance's provider and address.
21171        ///
21172        /// Note that the type can be any event, not just those defined in this contract.
21173        /// Prefer using the other methods for building type-safe event filters.
21174        pub fn event_filter<E: alloy_sol_types::SolEvent>(
21175            &self,
21176        ) -> alloy_contract::Event<&P, E, N> {
21177            alloy_contract::Event::new_sol(&self.provider, &self.address)
21178        }
21179        ///Creates a new event filter for the [`CommissionUpdated`] event.
21180        pub fn CommissionUpdated_filter(
21181            &self,
21182        ) -> alloy_contract::Event<&P, CommissionUpdated, N> {
21183            self.event_filter::<CommissionUpdated>()
21184        }
21185        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
21186        pub fn ConsensusKeysUpdated_filter(
21187            &self,
21188        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
21189            self.event_filter::<ConsensusKeysUpdated>()
21190        }
21191        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
21192        pub fn ConsensusKeysUpdatedV2_filter(
21193            &self,
21194        ) -> alloy_contract::Event<&P, ConsensusKeysUpdatedV2, N> {
21195            self.event_filter::<ConsensusKeysUpdatedV2>()
21196        }
21197        ///Creates a new event filter for the [`Delegated`] event.
21198        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
21199            self.event_filter::<Delegated>()
21200        }
21201        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
21202        pub fn ExitEscrowPeriodUpdated_filter(
21203            &self,
21204        ) -> alloy_contract::Event<&P, ExitEscrowPeriodUpdated, N> {
21205            self.event_filter::<ExitEscrowPeriodUpdated>()
21206        }
21207        ///Creates a new event filter for the [`Initialized`] event.
21208        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
21209            self.event_filter::<Initialized>()
21210        }
21211        ///Creates a new event filter for the [`MaxCommissionIncreaseUpdated`] event.
21212        pub fn MaxCommissionIncreaseUpdated_filter(
21213            &self,
21214        ) -> alloy_contract::Event<&P, MaxCommissionIncreaseUpdated, N> {
21215            self.event_filter::<MaxCommissionIncreaseUpdated>()
21216        }
21217        ///Creates a new event filter for the [`MinCommissionUpdateIntervalUpdated`] event.
21218        pub fn MinCommissionUpdateIntervalUpdated_filter(
21219            &self,
21220        ) -> alloy_contract::Event<&P, MinCommissionUpdateIntervalUpdated, N> {
21221            self.event_filter::<MinCommissionUpdateIntervalUpdated>()
21222        }
21223        ///Creates a new event filter for the [`OwnershipTransferred`] event.
21224        pub fn OwnershipTransferred_filter(
21225            &self,
21226        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
21227            self.event_filter::<OwnershipTransferred>()
21228        }
21229        ///Creates a new event filter for the [`Paused`] event.
21230        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
21231            self.event_filter::<Paused>()
21232        }
21233        ///Creates a new event filter for the [`RoleAdminChanged`] event.
21234        pub fn RoleAdminChanged_filter(
21235            &self,
21236        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
21237            self.event_filter::<RoleAdminChanged>()
21238        }
21239        ///Creates a new event filter for the [`RoleGranted`] event.
21240        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
21241            self.event_filter::<RoleGranted>()
21242        }
21243        ///Creates a new event filter for the [`RoleRevoked`] event.
21244        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
21245            self.event_filter::<RoleRevoked>()
21246        }
21247        ///Creates a new event filter for the [`Undelegated`] event.
21248        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
21249            self.event_filter::<Undelegated>()
21250        }
21251        ///Creates a new event filter for the [`Unpaused`] event.
21252        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
21253            self.event_filter::<Unpaused>()
21254        }
21255        ///Creates a new event filter for the [`Upgraded`] event.
21256        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
21257            self.event_filter::<Upgraded>()
21258        }
21259        ///Creates a new event filter for the [`ValidatorExit`] event.
21260        pub fn ValidatorExit_filter(
21261            &self,
21262        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
21263            self.event_filter::<ValidatorExit>()
21264        }
21265        ///Creates a new event filter for the [`ValidatorRegistered`] event.
21266        pub fn ValidatorRegistered_filter(
21267            &self,
21268        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
21269            self.event_filter::<ValidatorRegistered>()
21270        }
21271        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
21272        pub fn ValidatorRegisteredV2_filter(
21273            &self,
21274        ) -> alloy_contract::Event<&P, ValidatorRegisteredV2, N> {
21275            self.event_filter::<ValidatorRegisteredV2>()
21276        }
21277        ///Creates a new event filter for the [`Withdrawal`] event.
21278        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
21279            self.event_filter::<Withdrawal>()
21280        }
21281    }
21282}