eigenlayer_contract_deployer/bindings/core/
delegation_manager.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use DelegationManager::*;
3
4///Module containing a contract's types and functions.
5/**
6
7```solidity
8library IDelegationManagerTypes {
9    struct QueuedWithdrawalParams { address[] strategies; uint256[] depositShares; address __deprecated_withdrawer; }
10    struct Withdrawal { address staker; address delegatedTo; address withdrawer; uint256 nonce; uint32 startBlock; address[] strategies; uint256[] scaledShares; }
11}
12```*/
13#[allow(
14    non_camel_case_types,
15    non_snake_case,
16    clippy::pub_underscore_fields,
17    clippy::style,
18    clippy::empty_structs_with_brackets
19)]
20pub mod IDelegationManagerTypes {
21    use super::*;
22    use alloy::sol_types as alloy_sol_types;
23    #[derive(serde::Serialize, serde::Deserialize)]
24    #[derive(Default, Debug, PartialEq, Eq, Hash)]
25    /**```solidity
26struct QueuedWithdrawalParams { address[] strategies; uint256[] depositShares; address __deprecated_withdrawer; }
27```*/
28    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
29    #[derive(Clone)]
30    pub struct QueuedWithdrawalParams {
31        #[allow(missing_docs)]
32        pub strategies: alloy::sol_types::private::Vec<
33            alloy::sol_types::private::Address,
34        >,
35        #[allow(missing_docs)]
36        pub depositShares: alloy::sol_types::private::Vec<
37            alloy::sol_types::private::primitives::aliases::U256,
38        >,
39        #[allow(missing_docs)]
40        pub __deprecated_withdrawer: alloy::sol_types::private::Address,
41    }
42    #[allow(
43        non_camel_case_types,
44        non_snake_case,
45        clippy::pub_underscore_fields,
46        clippy::style
47    )]
48    const _: () = {
49        use alloy::sol_types as alloy_sol_types;
50        #[doc(hidden)]
51        type UnderlyingSolTuple<'a> = (
52            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
53            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
54            alloy::sol_types::sol_data::Address,
55        );
56        #[doc(hidden)]
57        type UnderlyingRustTuple<'a> = (
58            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
59            alloy::sol_types::private::Vec<
60                alloy::sol_types::private::primitives::aliases::U256,
61            >,
62            alloy::sol_types::private::Address,
63        );
64        #[cfg(test)]
65        #[allow(dead_code, unreachable_patterns)]
66        fn _type_assertion(
67            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
68        ) {
69            match _t {
70                alloy_sol_types::private::AssertTypeEq::<
71                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
72                >(_) => {}
73            }
74        }
75        #[automatically_derived]
76        #[doc(hidden)]
77        impl ::core::convert::From<QueuedWithdrawalParams> for UnderlyingRustTuple<'_> {
78            fn from(value: QueuedWithdrawalParams) -> Self {
79                (value.strategies, value.depositShares, value.__deprecated_withdrawer)
80            }
81        }
82        #[automatically_derived]
83        #[doc(hidden)]
84        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QueuedWithdrawalParams {
85            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
86                Self {
87                    strategies: tuple.0,
88                    depositShares: tuple.1,
89                    __deprecated_withdrawer: tuple.2,
90                }
91            }
92        }
93        #[automatically_derived]
94        impl alloy_sol_types::SolValue for QueuedWithdrawalParams {
95            type SolType = Self;
96        }
97        #[automatically_derived]
98        impl alloy_sol_types::private::SolTypeValue<Self> for QueuedWithdrawalParams {
99            #[inline]
100            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
101                (
102                    <alloy::sol_types::sol_data::Array<
103                        alloy::sol_types::sol_data::Address,
104                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
105                    <alloy::sol_types::sol_data::Array<
106                        alloy::sol_types::sol_data::Uint<256>,
107                    > as alloy_sol_types::SolType>::tokenize(&self.depositShares),
108                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
109                        &self.__deprecated_withdrawer,
110                    ),
111                )
112            }
113            #[inline]
114            fn stv_abi_encoded_size(&self) -> usize {
115                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
116                    return size;
117                }
118                let tuple = <UnderlyingRustTuple<
119                    '_,
120                > as ::core::convert::From<Self>>::from(self.clone());
121                <UnderlyingSolTuple<
122                    '_,
123                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
124            }
125            #[inline]
126            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
127                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
128            }
129            #[inline]
130            fn stv_abi_encode_packed_to(
131                &self,
132                out: &mut alloy_sol_types::private::Vec<u8>,
133            ) {
134                let tuple = <UnderlyingRustTuple<
135                    '_,
136                > as ::core::convert::From<Self>>::from(self.clone());
137                <UnderlyingSolTuple<
138                    '_,
139                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
140            }
141            #[inline]
142            fn stv_abi_packed_encoded_size(&self) -> usize {
143                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
144                    return size;
145                }
146                let tuple = <UnderlyingRustTuple<
147                    '_,
148                > as ::core::convert::From<Self>>::from(self.clone());
149                <UnderlyingSolTuple<
150                    '_,
151                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
152            }
153        }
154        #[automatically_derived]
155        impl alloy_sol_types::SolType for QueuedWithdrawalParams {
156            type RustType = Self;
157            type Token<'a> = <UnderlyingSolTuple<
158                'a,
159            > as alloy_sol_types::SolType>::Token<'a>;
160            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
161            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
162                '_,
163            > as alloy_sol_types::SolType>::ENCODED_SIZE;
164            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
165                '_,
166            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
167            #[inline]
168            fn valid_token(token: &Self::Token<'_>) -> bool {
169                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
170            }
171            #[inline]
172            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
173                let tuple = <UnderlyingSolTuple<
174                    '_,
175                > as alloy_sol_types::SolType>::detokenize(token);
176                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
177            }
178        }
179        #[automatically_derived]
180        impl alloy_sol_types::SolStruct for QueuedWithdrawalParams {
181            const NAME: &'static str = "QueuedWithdrawalParams";
182            #[inline]
183            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
184                alloy_sol_types::private::Cow::Borrowed(
185                    "QueuedWithdrawalParams(address[] strategies,uint256[] depositShares,address __deprecated_withdrawer)",
186                )
187            }
188            #[inline]
189            fn eip712_components() -> alloy_sol_types::private::Vec<
190                alloy_sol_types::private::Cow<'static, str>,
191            > {
192                alloy_sol_types::private::Vec::new()
193            }
194            #[inline]
195            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
196                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
197            }
198            #[inline]
199            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
200                [
201                    <alloy::sol_types::sol_data::Array<
202                        alloy::sol_types::sol_data::Address,
203                    > as alloy_sol_types::SolType>::eip712_data_word(&self.strategies)
204                        .0,
205                    <alloy::sol_types::sol_data::Array<
206                        alloy::sol_types::sol_data::Uint<256>,
207                    > as alloy_sol_types::SolType>::eip712_data_word(&self.depositShares)
208                        .0,
209                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
210                            &self.__deprecated_withdrawer,
211                        )
212                        .0,
213                ]
214                    .concat()
215            }
216        }
217        #[automatically_derived]
218        impl alloy_sol_types::EventTopic for QueuedWithdrawalParams {
219            #[inline]
220            fn topic_preimage_length(rust: &Self::RustType) -> usize {
221                0usize
222                    + <alloy::sol_types::sol_data::Array<
223                        alloy::sol_types::sol_data::Address,
224                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
225                        &rust.strategies,
226                    )
227                    + <alloy::sol_types::sol_data::Array<
228                        alloy::sol_types::sol_data::Uint<256>,
229                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
230                        &rust.depositShares,
231                    )
232                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
233                        &rust.__deprecated_withdrawer,
234                    )
235            }
236            #[inline]
237            fn encode_topic_preimage(
238                rust: &Self::RustType,
239                out: &mut alloy_sol_types::private::Vec<u8>,
240            ) {
241                out.reserve(
242                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
243                );
244                <alloy::sol_types::sol_data::Array<
245                    alloy::sol_types::sol_data::Address,
246                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
247                    &rust.strategies,
248                    out,
249                );
250                <alloy::sol_types::sol_data::Array<
251                    alloy::sol_types::sol_data::Uint<256>,
252                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
253                    &rust.depositShares,
254                    out,
255                );
256                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
257                    &rust.__deprecated_withdrawer,
258                    out,
259                );
260            }
261            #[inline]
262            fn encode_topic(
263                rust: &Self::RustType,
264            ) -> alloy_sol_types::abi::token::WordToken {
265                let mut out = alloy_sol_types::private::Vec::new();
266                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
267                    rust,
268                    &mut out,
269                );
270                alloy_sol_types::abi::token::WordToken(
271                    alloy_sol_types::private::keccak256(out),
272                )
273            }
274        }
275    };
276    #[derive(serde::Serialize, serde::Deserialize)]
277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
278    /**```solidity
279struct Withdrawal { address staker; address delegatedTo; address withdrawer; uint256 nonce; uint32 startBlock; address[] strategies; uint256[] scaledShares; }
280```*/
281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
282    #[derive(Clone)]
283    pub struct Withdrawal {
284        #[allow(missing_docs)]
285        pub staker: alloy::sol_types::private::Address,
286        #[allow(missing_docs)]
287        pub delegatedTo: alloy::sol_types::private::Address,
288        #[allow(missing_docs)]
289        pub withdrawer: alloy::sol_types::private::Address,
290        #[allow(missing_docs)]
291        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
292        #[allow(missing_docs)]
293        pub startBlock: u32,
294        #[allow(missing_docs)]
295        pub strategies: alloy::sol_types::private::Vec<
296            alloy::sol_types::private::Address,
297        >,
298        #[allow(missing_docs)]
299        pub scaledShares: alloy::sol_types::private::Vec<
300            alloy::sol_types::private::primitives::aliases::U256,
301        >,
302    }
303    #[allow(
304        non_camel_case_types,
305        non_snake_case,
306        clippy::pub_underscore_fields,
307        clippy::style
308    )]
309    const _: () = {
310        use alloy::sol_types as alloy_sol_types;
311        #[doc(hidden)]
312        type UnderlyingSolTuple<'a> = (
313            alloy::sol_types::sol_data::Address,
314            alloy::sol_types::sol_data::Address,
315            alloy::sol_types::sol_data::Address,
316            alloy::sol_types::sol_data::Uint<256>,
317            alloy::sol_types::sol_data::Uint<32>,
318            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
319            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
320        );
321        #[doc(hidden)]
322        type UnderlyingRustTuple<'a> = (
323            alloy::sol_types::private::Address,
324            alloy::sol_types::private::Address,
325            alloy::sol_types::private::Address,
326            alloy::sol_types::private::primitives::aliases::U256,
327            u32,
328            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
329            alloy::sol_types::private::Vec<
330                alloy::sol_types::private::primitives::aliases::U256,
331            >,
332        );
333        #[cfg(test)]
334        #[allow(dead_code, unreachable_patterns)]
335        fn _type_assertion(
336            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
337        ) {
338            match _t {
339                alloy_sol_types::private::AssertTypeEq::<
340                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
341                >(_) => {}
342            }
343        }
344        #[automatically_derived]
345        #[doc(hidden)]
346        impl ::core::convert::From<Withdrawal> for UnderlyingRustTuple<'_> {
347            fn from(value: Withdrawal) -> Self {
348                (
349                    value.staker,
350                    value.delegatedTo,
351                    value.withdrawer,
352                    value.nonce,
353                    value.startBlock,
354                    value.strategies,
355                    value.scaledShares,
356                )
357            }
358        }
359        #[automatically_derived]
360        #[doc(hidden)]
361        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Withdrawal {
362            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
363                Self {
364                    staker: tuple.0,
365                    delegatedTo: tuple.1,
366                    withdrawer: tuple.2,
367                    nonce: tuple.3,
368                    startBlock: tuple.4,
369                    strategies: tuple.5,
370                    scaledShares: tuple.6,
371                }
372            }
373        }
374        #[automatically_derived]
375        impl alloy_sol_types::SolValue for Withdrawal {
376            type SolType = Self;
377        }
378        #[automatically_derived]
379        impl alloy_sol_types::private::SolTypeValue<Self> for Withdrawal {
380            #[inline]
381            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
382                (
383                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
384                        &self.staker,
385                    ),
386                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
387                        &self.delegatedTo,
388                    ),
389                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
390                        &self.withdrawer,
391                    ),
392                    <alloy::sol_types::sol_data::Uint<
393                        256,
394                    > as alloy_sol_types::SolType>::tokenize(&self.nonce),
395                    <alloy::sol_types::sol_data::Uint<
396                        32,
397                    > as alloy_sol_types::SolType>::tokenize(&self.startBlock),
398                    <alloy::sol_types::sol_data::Array<
399                        alloy::sol_types::sol_data::Address,
400                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
401                    <alloy::sol_types::sol_data::Array<
402                        alloy::sol_types::sol_data::Uint<256>,
403                    > as alloy_sol_types::SolType>::tokenize(&self.scaledShares),
404                )
405            }
406            #[inline]
407            fn stv_abi_encoded_size(&self) -> usize {
408                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
409                    return size;
410                }
411                let tuple = <UnderlyingRustTuple<
412                    '_,
413                > as ::core::convert::From<Self>>::from(self.clone());
414                <UnderlyingSolTuple<
415                    '_,
416                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
417            }
418            #[inline]
419            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
420                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
421            }
422            #[inline]
423            fn stv_abi_encode_packed_to(
424                &self,
425                out: &mut alloy_sol_types::private::Vec<u8>,
426            ) {
427                let tuple = <UnderlyingRustTuple<
428                    '_,
429                > as ::core::convert::From<Self>>::from(self.clone());
430                <UnderlyingSolTuple<
431                    '_,
432                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
433            }
434            #[inline]
435            fn stv_abi_packed_encoded_size(&self) -> usize {
436                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
437                    return size;
438                }
439                let tuple = <UnderlyingRustTuple<
440                    '_,
441                > as ::core::convert::From<Self>>::from(self.clone());
442                <UnderlyingSolTuple<
443                    '_,
444                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
445            }
446        }
447        #[automatically_derived]
448        impl alloy_sol_types::SolType for Withdrawal {
449            type RustType = Self;
450            type Token<'a> = <UnderlyingSolTuple<
451                'a,
452            > as alloy_sol_types::SolType>::Token<'a>;
453            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
454            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
455                '_,
456            > as alloy_sol_types::SolType>::ENCODED_SIZE;
457            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
458                '_,
459            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
460            #[inline]
461            fn valid_token(token: &Self::Token<'_>) -> bool {
462                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
463            }
464            #[inline]
465            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
466                let tuple = <UnderlyingSolTuple<
467                    '_,
468                > as alloy_sol_types::SolType>::detokenize(token);
469                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
470            }
471        }
472        #[automatically_derived]
473        impl alloy_sol_types::SolStruct for Withdrawal {
474            const NAME: &'static str = "Withdrawal";
475            #[inline]
476            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
477                alloy_sol_types::private::Cow::Borrowed(
478                    "Withdrawal(address staker,address delegatedTo,address withdrawer,uint256 nonce,uint32 startBlock,address[] strategies,uint256[] scaledShares)",
479                )
480            }
481            #[inline]
482            fn eip712_components() -> alloy_sol_types::private::Vec<
483                alloy_sol_types::private::Cow<'static, str>,
484            > {
485                alloy_sol_types::private::Vec::new()
486            }
487            #[inline]
488            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
489                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
490            }
491            #[inline]
492            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
493                [
494                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
495                            &self.staker,
496                        )
497                        .0,
498                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
499                            &self.delegatedTo,
500                        )
501                        .0,
502                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
503                            &self.withdrawer,
504                        )
505                        .0,
506                    <alloy::sol_types::sol_data::Uint<
507                        256,
508                    > as alloy_sol_types::SolType>::eip712_data_word(&self.nonce)
509                        .0,
510                    <alloy::sol_types::sol_data::Uint<
511                        32,
512                    > as alloy_sol_types::SolType>::eip712_data_word(&self.startBlock)
513                        .0,
514                    <alloy::sol_types::sol_data::Array<
515                        alloy::sol_types::sol_data::Address,
516                    > as alloy_sol_types::SolType>::eip712_data_word(&self.strategies)
517                        .0,
518                    <alloy::sol_types::sol_data::Array<
519                        alloy::sol_types::sol_data::Uint<256>,
520                    > as alloy_sol_types::SolType>::eip712_data_word(&self.scaledShares)
521                        .0,
522                ]
523                    .concat()
524            }
525        }
526        #[automatically_derived]
527        impl alloy_sol_types::EventTopic for Withdrawal {
528            #[inline]
529            fn topic_preimage_length(rust: &Self::RustType) -> usize {
530                0usize
531                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
532                        &rust.staker,
533                    )
534                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
535                        &rust.delegatedTo,
536                    )
537                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
538                        &rust.withdrawer,
539                    )
540                    + <alloy::sol_types::sol_data::Uint<
541                        256,
542                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce)
543                    + <alloy::sol_types::sol_data::Uint<
544                        32,
545                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
546                        &rust.startBlock,
547                    )
548                    + <alloy::sol_types::sol_data::Array<
549                        alloy::sol_types::sol_data::Address,
550                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
551                        &rust.strategies,
552                    )
553                    + <alloy::sol_types::sol_data::Array<
554                        alloy::sol_types::sol_data::Uint<256>,
555                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
556                        &rust.scaledShares,
557                    )
558            }
559            #[inline]
560            fn encode_topic_preimage(
561                rust: &Self::RustType,
562                out: &mut alloy_sol_types::private::Vec<u8>,
563            ) {
564                out.reserve(
565                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
566                );
567                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
568                    &rust.staker,
569                    out,
570                );
571                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
572                    &rust.delegatedTo,
573                    out,
574                );
575                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
576                    &rust.withdrawer,
577                    out,
578                );
579                <alloy::sol_types::sol_data::Uint<
580                    256,
581                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
582                    &rust.nonce,
583                    out,
584                );
585                <alloy::sol_types::sol_data::Uint<
586                    32,
587                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
588                    &rust.startBlock,
589                    out,
590                );
591                <alloy::sol_types::sol_data::Array<
592                    alloy::sol_types::sol_data::Address,
593                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
594                    &rust.strategies,
595                    out,
596                );
597                <alloy::sol_types::sol_data::Array<
598                    alloy::sol_types::sol_data::Uint<256>,
599                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
600                    &rust.scaledShares,
601                    out,
602                );
603            }
604            #[inline]
605            fn encode_topic(
606                rust: &Self::RustType,
607            ) -> alloy_sol_types::abi::token::WordToken {
608                let mut out = alloy_sol_types::private::Vec::new();
609                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
610                    rust,
611                    &mut out,
612                );
613                alloy_sol_types::abi::token::WordToken(
614                    alloy_sol_types::private::keccak256(out),
615                )
616            }
617        }
618    };
619    use alloy::contract as alloy_contract;
620    /**Creates a new wrapper around an on-chain [`IDelegationManagerTypes`](self) contract instance.
621
622See the [wrapper's documentation](`IDelegationManagerTypesInstance`) for more details.*/
623    #[inline]
624    pub const fn new<
625        P: alloy_contract::private::Provider<N>,
626        N: alloy_contract::private::Network,
627    >(
628        address: alloy_sol_types::private::Address,
629        provider: P,
630    ) -> IDelegationManagerTypesInstance<P, N> {
631        IDelegationManagerTypesInstance::<P, N>::new(address, provider)
632    }
633    /**A [`IDelegationManagerTypes`](self) instance.
634
635Contains type-safe methods for interacting with an on-chain instance of the
636[`IDelegationManagerTypes`](self) contract located at a given `address`, using a given
637provider `P`.
638
639If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
640documentation on how to provide it), the `deploy` and `deploy_builder` methods can
641be used to deploy a new instance of the contract.
642
643See the [module-level documentation](self) for all the available methods.*/
644    #[derive(Clone)]
645    pub struct IDelegationManagerTypesInstance<
646        P,
647        N = alloy_contract::private::Ethereum,
648    > {
649        address: alloy_sol_types::private::Address,
650        provider: P,
651        _network: ::core::marker::PhantomData<N>,
652    }
653    #[automatically_derived]
654    impl<P, N> ::core::fmt::Debug for IDelegationManagerTypesInstance<P, N> {
655        #[inline]
656        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
657            f.debug_tuple("IDelegationManagerTypesInstance")
658                .field(&self.address)
659                .finish()
660        }
661    }
662    /// Instantiation and getters/setters.
663    #[automatically_derived]
664    impl<
665        P: alloy_contract::private::Provider<N>,
666        N: alloy_contract::private::Network,
667    > IDelegationManagerTypesInstance<P, N> {
668        /**Creates a new wrapper around an on-chain [`IDelegationManagerTypes`](self) contract instance.
669
670See the [wrapper's documentation](`IDelegationManagerTypesInstance`) for more details.*/
671        #[inline]
672        pub const fn new(
673            address: alloy_sol_types::private::Address,
674            provider: P,
675        ) -> Self {
676            Self {
677                address,
678                provider,
679                _network: ::core::marker::PhantomData,
680            }
681        }
682        /// Returns a reference to the address.
683        #[inline]
684        pub const fn address(&self) -> &alloy_sol_types::private::Address {
685            &self.address
686        }
687        /// Sets the address.
688        #[inline]
689        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
690            self.address = address;
691        }
692        /// Sets the address and returns `self`.
693        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
694            self.set_address(address);
695            self
696        }
697        /// Returns a reference to the provider.
698        #[inline]
699        pub const fn provider(&self) -> &P {
700            &self.provider
701        }
702    }
703    impl<P: ::core::clone::Clone, N> IDelegationManagerTypesInstance<&P, N> {
704        /// Clones the provider and returns a new instance with the cloned provider.
705        #[inline]
706        pub fn with_cloned_provider(self) -> IDelegationManagerTypesInstance<P, N> {
707            IDelegationManagerTypesInstance {
708                address: self.address,
709                provider: ::core::clone::Clone::clone(&self.provider),
710                _network: ::core::marker::PhantomData,
711            }
712        }
713    }
714    /// Function calls.
715    #[automatically_derived]
716    impl<
717        P: alloy_contract::private::Provider<N>,
718        N: alloy_contract::private::Network,
719    > IDelegationManagerTypesInstance<P, N> {
720        /// Creates a new call builder using this contract instance's provider and address.
721        ///
722        /// Note that the call can be any function call, not just those defined in this
723        /// contract. Prefer using the other methods for building type-safe contract calls.
724        pub fn call_builder<C: alloy_sol_types::SolCall>(
725            &self,
726            call: &C,
727        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
728            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
729        }
730    }
731    /// Event filters.
732    #[automatically_derived]
733    impl<
734        P: alloy_contract::private::Provider<N>,
735        N: alloy_contract::private::Network,
736    > IDelegationManagerTypesInstance<P, N> {
737        /// Creates a new event filter using this contract instance's provider and address.
738        ///
739        /// Note that the type can be any event, not just those defined in this contract.
740        /// Prefer using the other methods for building type-safe event filters.
741        pub fn event_filter<E: alloy_sol_types::SolEvent>(
742            &self,
743        ) -> alloy_contract::Event<&P, E, N> {
744            alloy_contract::Event::new_sol(&self.provider, &self.address)
745        }
746    }
747}
748///Module containing a contract's types and functions.
749/**
750
751```solidity
752library ISignatureUtilsMixinTypes {
753    struct SignatureWithExpiry { bytes signature; uint256 expiry; }
754}
755```*/
756#[allow(
757    non_camel_case_types,
758    non_snake_case,
759    clippy::pub_underscore_fields,
760    clippy::style,
761    clippy::empty_structs_with_brackets
762)]
763pub mod ISignatureUtilsMixinTypes {
764    use super::*;
765    use alloy::sol_types as alloy_sol_types;
766    #[derive(serde::Serialize, serde::Deserialize)]
767    #[derive(Default, Debug, PartialEq, Eq, Hash)]
768    /**```solidity
769struct SignatureWithExpiry { bytes signature; uint256 expiry; }
770```*/
771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
772    #[derive(Clone)]
773    pub struct SignatureWithExpiry {
774        #[allow(missing_docs)]
775        pub signature: alloy::sol_types::private::Bytes,
776        #[allow(missing_docs)]
777        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
778    }
779    #[allow(
780        non_camel_case_types,
781        non_snake_case,
782        clippy::pub_underscore_fields,
783        clippy::style
784    )]
785    const _: () = {
786        use alloy::sol_types as alloy_sol_types;
787        #[doc(hidden)]
788        type UnderlyingSolTuple<'a> = (
789            alloy::sol_types::sol_data::Bytes,
790            alloy::sol_types::sol_data::Uint<256>,
791        );
792        #[doc(hidden)]
793        type UnderlyingRustTuple<'a> = (
794            alloy::sol_types::private::Bytes,
795            alloy::sol_types::private::primitives::aliases::U256,
796        );
797        #[cfg(test)]
798        #[allow(dead_code, unreachable_patterns)]
799        fn _type_assertion(
800            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
801        ) {
802            match _t {
803                alloy_sol_types::private::AssertTypeEq::<
804                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
805                >(_) => {}
806            }
807        }
808        #[automatically_derived]
809        #[doc(hidden)]
810        impl ::core::convert::From<SignatureWithExpiry> for UnderlyingRustTuple<'_> {
811            fn from(value: SignatureWithExpiry) -> Self {
812                (value.signature, value.expiry)
813            }
814        }
815        #[automatically_derived]
816        #[doc(hidden)]
817        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SignatureWithExpiry {
818            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
819                Self {
820                    signature: tuple.0,
821                    expiry: tuple.1,
822                }
823            }
824        }
825        #[automatically_derived]
826        impl alloy_sol_types::SolValue for SignatureWithExpiry {
827            type SolType = Self;
828        }
829        #[automatically_derived]
830        impl alloy_sol_types::private::SolTypeValue<Self> for SignatureWithExpiry {
831            #[inline]
832            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
833                (
834                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
835                        &self.signature,
836                    ),
837                    <alloy::sol_types::sol_data::Uint<
838                        256,
839                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
840                )
841            }
842            #[inline]
843            fn stv_abi_encoded_size(&self) -> usize {
844                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
845                    return size;
846                }
847                let tuple = <UnderlyingRustTuple<
848                    '_,
849                > as ::core::convert::From<Self>>::from(self.clone());
850                <UnderlyingSolTuple<
851                    '_,
852                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
853            }
854            #[inline]
855            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
856                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
857            }
858            #[inline]
859            fn stv_abi_encode_packed_to(
860                &self,
861                out: &mut alloy_sol_types::private::Vec<u8>,
862            ) {
863                let tuple = <UnderlyingRustTuple<
864                    '_,
865                > as ::core::convert::From<Self>>::from(self.clone());
866                <UnderlyingSolTuple<
867                    '_,
868                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
869            }
870            #[inline]
871            fn stv_abi_packed_encoded_size(&self) -> usize {
872                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
873                    return size;
874                }
875                let tuple = <UnderlyingRustTuple<
876                    '_,
877                > as ::core::convert::From<Self>>::from(self.clone());
878                <UnderlyingSolTuple<
879                    '_,
880                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
881            }
882        }
883        #[automatically_derived]
884        impl alloy_sol_types::SolType for SignatureWithExpiry {
885            type RustType = Self;
886            type Token<'a> = <UnderlyingSolTuple<
887                'a,
888            > as alloy_sol_types::SolType>::Token<'a>;
889            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
890            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
891                '_,
892            > as alloy_sol_types::SolType>::ENCODED_SIZE;
893            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
894                '_,
895            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
896            #[inline]
897            fn valid_token(token: &Self::Token<'_>) -> bool {
898                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
899            }
900            #[inline]
901            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
902                let tuple = <UnderlyingSolTuple<
903                    '_,
904                > as alloy_sol_types::SolType>::detokenize(token);
905                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
906            }
907        }
908        #[automatically_derived]
909        impl alloy_sol_types::SolStruct for SignatureWithExpiry {
910            const NAME: &'static str = "SignatureWithExpiry";
911            #[inline]
912            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
913                alloy_sol_types::private::Cow::Borrowed(
914                    "SignatureWithExpiry(bytes signature,uint256 expiry)",
915                )
916            }
917            #[inline]
918            fn eip712_components() -> alloy_sol_types::private::Vec<
919                alloy_sol_types::private::Cow<'static, str>,
920            > {
921                alloy_sol_types::private::Vec::new()
922            }
923            #[inline]
924            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
925                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
926            }
927            #[inline]
928            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
929                [
930                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
931                            &self.signature,
932                        )
933                        .0,
934                    <alloy::sol_types::sol_data::Uint<
935                        256,
936                    > as alloy_sol_types::SolType>::eip712_data_word(&self.expiry)
937                        .0,
938                ]
939                    .concat()
940            }
941        }
942        #[automatically_derived]
943        impl alloy_sol_types::EventTopic for SignatureWithExpiry {
944            #[inline]
945            fn topic_preimage_length(rust: &Self::RustType) -> usize {
946                0usize
947                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
948                        &rust.signature,
949                    )
950                    + <alloy::sol_types::sol_data::Uint<
951                        256,
952                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
953                        &rust.expiry,
954                    )
955            }
956            #[inline]
957            fn encode_topic_preimage(
958                rust: &Self::RustType,
959                out: &mut alloy_sol_types::private::Vec<u8>,
960            ) {
961                out.reserve(
962                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
963                );
964                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
965                    &rust.signature,
966                    out,
967                );
968                <alloy::sol_types::sol_data::Uint<
969                    256,
970                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
971                    &rust.expiry,
972                    out,
973                );
974            }
975            #[inline]
976            fn encode_topic(
977                rust: &Self::RustType,
978            ) -> alloy_sol_types::abi::token::WordToken {
979                let mut out = alloy_sol_types::private::Vec::new();
980                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
981                    rust,
982                    &mut out,
983                );
984                alloy_sol_types::abi::token::WordToken(
985                    alloy_sol_types::private::keccak256(out),
986                )
987            }
988        }
989    };
990    use alloy::contract as alloy_contract;
991    /**Creates a new wrapper around an on-chain [`ISignatureUtilsMixinTypes`](self) contract instance.
992
993See the [wrapper's documentation](`ISignatureUtilsMixinTypesInstance`) for more details.*/
994    #[inline]
995    pub const fn new<
996        P: alloy_contract::private::Provider<N>,
997        N: alloy_contract::private::Network,
998    >(
999        address: alloy_sol_types::private::Address,
1000        provider: P,
1001    ) -> ISignatureUtilsMixinTypesInstance<P, N> {
1002        ISignatureUtilsMixinTypesInstance::<P, N>::new(address, provider)
1003    }
1004    /**A [`ISignatureUtilsMixinTypes`](self) instance.
1005
1006Contains type-safe methods for interacting with an on-chain instance of the
1007[`ISignatureUtilsMixinTypes`](self) contract located at a given `address`, using a given
1008provider `P`.
1009
1010If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1011documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1012be used to deploy a new instance of the contract.
1013
1014See the [module-level documentation](self) for all the available methods.*/
1015    #[derive(Clone)]
1016    pub struct ISignatureUtilsMixinTypesInstance<
1017        P,
1018        N = alloy_contract::private::Ethereum,
1019    > {
1020        address: alloy_sol_types::private::Address,
1021        provider: P,
1022        _network: ::core::marker::PhantomData<N>,
1023    }
1024    #[automatically_derived]
1025    impl<P, N> ::core::fmt::Debug for ISignatureUtilsMixinTypesInstance<P, N> {
1026        #[inline]
1027        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1028            f.debug_tuple("ISignatureUtilsMixinTypesInstance")
1029                .field(&self.address)
1030                .finish()
1031        }
1032    }
1033    /// Instantiation and getters/setters.
1034    #[automatically_derived]
1035    impl<
1036        P: alloy_contract::private::Provider<N>,
1037        N: alloy_contract::private::Network,
1038    > ISignatureUtilsMixinTypesInstance<P, N> {
1039        /**Creates a new wrapper around an on-chain [`ISignatureUtilsMixinTypes`](self) contract instance.
1040
1041See the [wrapper's documentation](`ISignatureUtilsMixinTypesInstance`) for more details.*/
1042        #[inline]
1043        pub const fn new(
1044            address: alloy_sol_types::private::Address,
1045            provider: P,
1046        ) -> Self {
1047            Self {
1048                address,
1049                provider,
1050                _network: ::core::marker::PhantomData,
1051            }
1052        }
1053        /// Returns a reference to the address.
1054        #[inline]
1055        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1056            &self.address
1057        }
1058        /// Sets the address.
1059        #[inline]
1060        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1061            self.address = address;
1062        }
1063        /// Sets the address and returns `self`.
1064        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1065            self.set_address(address);
1066            self
1067        }
1068        /// Returns a reference to the provider.
1069        #[inline]
1070        pub const fn provider(&self) -> &P {
1071            &self.provider
1072        }
1073    }
1074    impl<P: ::core::clone::Clone, N> ISignatureUtilsMixinTypesInstance<&P, N> {
1075        /// Clones the provider and returns a new instance with the cloned provider.
1076        #[inline]
1077        pub fn with_cloned_provider(self) -> ISignatureUtilsMixinTypesInstance<P, N> {
1078            ISignatureUtilsMixinTypesInstance {
1079                address: self.address,
1080                provider: ::core::clone::Clone::clone(&self.provider),
1081                _network: ::core::marker::PhantomData,
1082            }
1083        }
1084    }
1085    /// Function calls.
1086    #[automatically_derived]
1087    impl<
1088        P: alloy_contract::private::Provider<N>,
1089        N: alloy_contract::private::Network,
1090    > ISignatureUtilsMixinTypesInstance<P, N> {
1091        /// Creates a new call builder using this contract instance's provider and address.
1092        ///
1093        /// Note that the call can be any function call, not just those defined in this
1094        /// contract. Prefer using the other methods for building type-safe contract calls.
1095        pub fn call_builder<C: alloy_sol_types::SolCall>(
1096            &self,
1097            call: &C,
1098        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1099            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1100        }
1101    }
1102    /// Event filters.
1103    #[automatically_derived]
1104    impl<
1105        P: alloy_contract::private::Provider<N>,
1106        N: alloy_contract::private::Network,
1107    > ISignatureUtilsMixinTypesInstance<P, N> {
1108        /// Creates a new event filter using this contract instance's provider and address.
1109        ///
1110        /// Note that the type can be any event, not just those defined in this contract.
1111        /// Prefer using the other methods for building type-safe event filters.
1112        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1113            &self,
1114        ) -> alloy_contract::Event<&P, E, N> {
1115            alloy_contract::Event::new_sol(&self.provider, &self.address)
1116        }
1117    }
1118}
1119/**
1120
1121Generated by the following Solidity interface...
1122```solidity
1123library IDelegationManagerTypes {
1124    struct QueuedWithdrawalParams {
1125        address[] strategies;
1126        uint256[] depositShares;
1127        address __deprecated_withdrawer;
1128    }
1129    struct Withdrawal {
1130        address staker;
1131        address delegatedTo;
1132        address withdrawer;
1133        uint256 nonce;
1134        uint32 startBlock;
1135        address[] strategies;
1136        uint256[] scaledShares;
1137    }
1138}
1139
1140library ISignatureUtilsMixinTypes {
1141    struct SignatureWithExpiry {
1142        bytes signature;
1143        uint256 expiry;
1144    }
1145}
1146
1147interface DelegationManager {
1148    error ActivelyDelegated();
1149    error CallerCannotUndelegate();
1150    error CurrentlyPaused();
1151    error FullySlashed();
1152    error InputAddressZero();
1153    error InputArrayLengthMismatch();
1154    error InputArrayLengthZero();
1155    error InvalidNewPausedStatus();
1156    error InvalidPermissions();
1157    error InvalidShortString();
1158    error InvalidSignature();
1159    error InvalidSnapshotOrdering();
1160    error NotActivelyDelegated();
1161    error OnlyAllocationManager();
1162    error OnlyEigenPodManager();
1163    error OnlyPauser();
1164    error OnlyStrategyManagerOrEigenPodManager();
1165    error OnlyUnpauser();
1166    error OperatorNotRegistered();
1167    error OperatorsCannotUndelegate();
1168    error SaltSpent();
1169    error SignatureExpired();
1170    error StringTooLong(string str);
1171    error WithdrawalDelayNotElapsed();
1172    error WithdrawalNotQueued();
1173    error WithdrawerNotCaller();
1174
1175    event DelegationApproverUpdated(address indexed operator, address newDelegationApprover);
1176    event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor);
1177    event Initialized(uint8 version);
1178    event OperatorMetadataURIUpdated(address indexed operator, string metadataURI);
1179    event OperatorRegistered(address indexed operator, address delegationApprover);
1180    event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares);
1181    event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares);
1182    event OperatorSharesSlashed(address indexed operator, address strategy, uint256 totalSlashedShares);
1183    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1184    event Paused(address indexed account, uint256 newPausedStatus);
1185    event SlashingWithdrawalCompleted(bytes32 withdrawalRoot);
1186    event SlashingWithdrawalQueued(bytes32 withdrawalRoot, IDelegationManagerTypes.Withdrawal withdrawal, uint256[] sharesToWithdraw);
1187    event StakerDelegated(address indexed staker, address indexed operator);
1188    event StakerForceUndelegated(address indexed staker, address indexed operator);
1189    event StakerUndelegated(address indexed staker, address indexed operator);
1190    event Unpaused(address indexed account, uint256 newPausedStatus);
1191
1192    constructor(address _strategyManager, address _eigenPodManager, address _allocationManager, address _pauserRegistry, address _permissionController, uint32 _MIN_WITHDRAWAL_DELAY, string _version);
1193
1194    function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32);
1195    function allocationManager() external view returns (address);
1196    function beaconChainETHStrategy() external view returns (address);
1197    function calculateDelegationApprovalDigestHash(address staker, address operator, address approver, bytes32 approverSalt, uint256 expiry) external view returns (bytes32);
1198    function calculateWithdrawalRoot(IDelegationManagerTypes.Withdrawal memory withdrawal) external pure returns (bytes32);
1199    function completeQueuedWithdrawal(IDelegationManagerTypes.Withdrawal memory withdrawal, address[] memory tokens, bool receiveAsTokens) external;
1200    function completeQueuedWithdrawals(IDelegationManagerTypes.Withdrawal[] memory withdrawals, address[][] memory tokens, bool[] memory receiveAsTokens) external;
1201    function convertToDepositShares(address staker, address[] memory strategies, uint256[] memory withdrawableShares) external view returns (uint256[] memory);
1202    function cumulativeWithdrawalsQueued(address staker) external view returns (uint256 totalQueued);
1203    function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) external;
1204    function delegateTo(address operator, ISignatureUtilsMixinTypes.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external;
1205    function delegatedTo(address staker) external view returns (address operator);
1206    function delegationApprover(address operator) external view returns (address);
1207    function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) external view returns (bool spent);
1208    function depositScalingFactor(address staker, address strategy) external view returns (uint256);
1209    function domainSeparator() external view returns (bytes32);
1210    function eigenPodManager() external view returns (address);
1211    function getDepositedShares(address staker) external view returns (address[] memory, uint256[] memory);
1212    function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory);
1213    function getOperatorsShares(address[] memory operators, address[] memory strategies) external view returns (uint256[][] memory);
1214    function getQueuedWithdrawal(bytes32 withdrawalRoot) external view returns (IDelegationManagerTypes.Withdrawal memory withdrawal, uint256[] memory shares);
1215    function getQueuedWithdrawalRoots(address staker) external view returns (bytes32[] memory);
1216    function getQueuedWithdrawals(address staker) external view returns (IDelegationManagerTypes.Withdrawal[] memory withdrawals, uint256[][] memory shares);
1217    function getSlashableSharesInQueue(address operator, address strategy) external view returns (uint256);
1218    function getWithdrawableShares(address staker, address[] memory strategies) external view returns (uint256[] memory withdrawableShares, uint256[] memory depositShares);
1219    function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) external;
1220    function initialize(address initialOwner, uint256 initialPausedStatus) external;
1221    function isDelegated(address staker) external view returns (bool);
1222    function isOperator(address operator) external view returns (bool);
1223    function minWithdrawalDelayBlocks() external view returns (uint32);
1224    function modifyOperatorDetails(address operator, address newDelegationApprover) external;
1225    function operatorShares(address operator, address strategy) external view returns (uint256 shares);
1226    function owner() external view returns (address);
1227    function pause(uint256 newPausedStatus) external;
1228    function pauseAll() external;
1229    function paused(uint8 index) external view returns (bool);
1230    function paused() external view returns (uint256);
1231    function pauserRegistry() external view returns (address);
1232    function pendingWithdrawals(bytes32 withdrawalRoot) external view returns (bool pending);
1233    function permissionController() external view returns (address);
1234    function queueWithdrawals(IDelegationManagerTypes.QueuedWithdrawalParams[] memory params) external returns (bytes32[] memory);
1235    function queuedWithdrawals(bytes32 withdrawalRoot) external view returns (IDelegationManagerTypes.Withdrawal memory withdrawal);
1236    function redelegate(address newOperator, ISignatureUtilsMixinTypes.SignatureWithExpiry memory newOperatorApproverSig, bytes32 approverSalt) external returns (bytes32[] memory withdrawalRoots);
1237    function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string memory metadataURI) external;
1238    function renounceOwnership() external;
1239    function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) external;
1240    function strategyManager() external view returns (address);
1241    function transferOwnership(address newOwner) external;
1242    function undelegate(address staker) external returns (bytes32[] memory withdrawalRoots);
1243    function unpause(uint256 newPausedStatus) external;
1244    function updateOperatorMetadataURI(address operator, string memory metadataURI) external;
1245    function version() external view returns (string memory);
1246}
1247```
1248
1249...which was generated by the following JSON ABI:
1250```json
1251[
1252  {
1253    "type": "constructor",
1254    "inputs": [
1255      {
1256        "name": "_strategyManager",
1257        "type": "address",
1258        "internalType": "contract IStrategyManager"
1259      },
1260      {
1261        "name": "_eigenPodManager",
1262        "type": "address",
1263        "internalType": "contract IEigenPodManager"
1264      },
1265      {
1266        "name": "_allocationManager",
1267        "type": "address",
1268        "internalType": "contract IAllocationManager"
1269      },
1270      {
1271        "name": "_pauserRegistry",
1272        "type": "address",
1273        "internalType": "contract IPauserRegistry"
1274      },
1275      {
1276        "name": "_permissionController",
1277        "type": "address",
1278        "internalType": "contract IPermissionController"
1279      },
1280      {
1281        "name": "_MIN_WITHDRAWAL_DELAY",
1282        "type": "uint32",
1283        "internalType": "uint32"
1284      },
1285      {
1286        "name": "_version",
1287        "type": "string",
1288        "internalType": "string"
1289      }
1290    ],
1291    "stateMutability": "nonpayable"
1292  },
1293  {
1294    "type": "function",
1295    "name": "DELEGATION_APPROVAL_TYPEHASH",
1296    "inputs": [],
1297    "outputs": [
1298      {
1299        "name": "",
1300        "type": "bytes32",
1301        "internalType": "bytes32"
1302      }
1303    ],
1304    "stateMutability": "view"
1305  },
1306  {
1307    "type": "function",
1308    "name": "allocationManager",
1309    "inputs": [],
1310    "outputs": [
1311      {
1312        "name": "",
1313        "type": "address",
1314        "internalType": "contract IAllocationManager"
1315      }
1316    ],
1317    "stateMutability": "view"
1318  },
1319  {
1320    "type": "function",
1321    "name": "beaconChainETHStrategy",
1322    "inputs": [],
1323    "outputs": [
1324      {
1325        "name": "",
1326        "type": "address",
1327        "internalType": "contract IStrategy"
1328      }
1329    ],
1330    "stateMutability": "view"
1331  },
1332  {
1333    "type": "function",
1334    "name": "calculateDelegationApprovalDigestHash",
1335    "inputs": [
1336      {
1337        "name": "staker",
1338        "type": "address",
1339        "internalType": "address"
1340      },
1341      {
1342        "name": "operator",
1343        "type": "address",
1344        "internalType": "address"
1345      },
1346      {
1347        "name": "approver",
1348        "type": "address",
1349        "internalType": "address"
1350      },
1351      {
1352        "name": "approverSalt",
1353        "type": "bytes32",
1354        "internalType": "bytes32"
1355      },
1356      {
1357        "name": "expiry",
1358        "type": "uint256",
1359        "internalType": "uint256"
1360      }
1361    ],
1362    "outputs": [
1363      {
1364        "name": "",
1365        "type": "bytes32",
1366        "internalType": "bytes32"
1367      }
1368    ],
1369    "stateMutability": "view"
1370  },
1371  {
1372    "type": "function",
1373    "name": "calculateWithdrawalRoot",
1374    "inputs": [
1375      {
1376        "name": "withdrawal",
1377        "type": "tuple",
1378        "internalType": "struct IDelegationManagerTypes.Withdrawal",
1379        "components": [
1380          {
1381            "name": "staker",
1382            "type": "address",
1383            "internalType": "address"
1384          },
1385          {
1386            "name": "delegatedTo",
1387            "type": "address",
1388            "internalType": "address"
1389          },
1390          {
1391            "name": "withdrawer",
1392            "type": "address",
1393            "internalType": "address"
1394          },
1395          {
1396            "name": "nonce",
1397            "type": "uint256",
1398            "internalType": "uint256"
1399          },
1400          {
1401            "name": "startBlock",
1402            "type": "uint32",
1403            "internalType": "uint32"
1404          },
1405          {
1406            "name": "strategies",
1407            "type": "address[]",
1408            "internalType": "contract IStrategy[]"
1409          },
1410          {
1411            "name": "scaledShares",
1412            "type": "uint256[]",
1413            "internalType": "uint256[]"
1414          }
1415        ]
1416      }
1417    ],
1418    "outputs": [
1419      {
1420        "name": "",
1421        "type": "bytes32",
1422        "internalType": "bytes32"
1423      }
1424    ],
1425    "stateMutability": "pure"
1426  },
1427  {
1428    "type": "function",
1429    "name": "completeQueuedWithdrawal",
1430    "inputs": [
1431      {
1432        "name": "withdrawal",
1433        "type": "tuple",
1434        "internalType": "struct IDelegationManagerTypes.Withdrawal",
1435        "components": [
1436          {
1437            "name": "staker",
1438            "type": "address",
1439            "internalType": "address"
1440          },
1441          {
1442            "name": "delegatedTo",
1443            "type": "address",
1444            "internalType": "address"
1445          },
1446          {
1447            "name": "withdrawer",
1448            "type": "address",
1449            "internalType": "address"
1450          },
1451          {
1452            "name": "nonce",
1453            "type": "uint256",
1454            "internalType": "uint256"
1455          },
1456          {
1457            "name": "startBlock",
1458            "type": "uint32",
1459            "internalType": "uint32"
1460          },
1461          {
1462            "name": "strategies",
1463            "type": "address[]",
1464            "internalType": "contract IStrategy[]"
1465          },
1466          {
1467            "name": "scaledShares",
1468            "type": "uint256[]",
1469            "internalType": "uint256[]"
1470          }
1471        ]
1472      },
1473      {
1474        "name": "tokens",
1475        "type": "address[]",
1476        "internalType": "contract IERC20[]"
1477      },
1478      {
1479        "name": "receiveAsTokens",
1480        "type": "bool",
1481        "internalType": "bool"
1482      }
1483    ],
1484    "outputs": [],
1485    "stateMutability": "nonpayable"
1486  },
1487  {
1488    "type": "function",
1489    "name": "completeQueuedWithdrawals",
1490    "inputs": [
1491      {
1492        "name": "withdrawals",
1493        "type": "tuple[]",
1494        "internalType": "struct IDelegationManagerTypes.Withdrawal[]",
1495        "components": [
1496          {
1497            "name": "staker",
1498            "type": "address",
1499            "internalType": "address"
1500          },
1501          {
1502            "name": "delegatedTo",
1503            "type": "address",
1504            "internalType": "address"
1505          },
1506          {
1507            "name": "withdrawer",
1508            "type": "address",
1509            "internalType": "address"
1510          },
1511          {
1512            "name": "nonce",
1513            "type": "uint256",
1514            "internalType": "uint256"
1515          },
1516          {
1517            "name": "startBlock",
1518            "type": "uint32",
1519            "internalType": "uint32"
1520          },
1521          {
1522            "name": "strategies",
1523            "type": "address[]",
1524            "internalType": "contract IStrategy[]"
1525          },
1526          {
1527            "name": "scaledShares",
1528            "type": "uint256[]",
1529            "internalType": "uint256[]"
1530          }
1531        ]
1532      },
1533      {
1534        "name": "tokens",
1535        "type": "address[][]",
1536        "internalType": "contract IERC20[][]"
1537      },
1538      {
1539        "name": "receiveAsTokens",
1540        "type": "bool[]",
1541        "internalType": "bool[]"
1542      }
1543    ],
1544    "outputs": [],
1545    "stateMutability": "nonpayable"
1546  },
1547  {
1548    "type": "function",
1549    "name": "convertToDepositShares",
1550    "inputs": [
1551      {
1552        "name": "staker",
1553        "type": "address",
1554        "internalType": "address"
1555      },
1556      {
1557        "name": "strategies",
1558        "type": "address[]",
1559        "internalType": "contract IStrategy[]"
1560      },
1561      {
1562        "name": "withdrawableShares",
1563        "type": "uint256[]",
1564        "internalType": "uint256[]"
1565      }
1566    ],
1567    "outputs": [
1568      {
1569        "name": "",
1570        "type": "uint256[]",
1571        "internalType": "uint256[]"
1572      }
1573    ],
1574    "stateMutability": "view"
1575  },
1576  {
1577    "type": "function",
1578    "name": "cumulativeWithdrawalsQueued",
1579    "inputs": [
1580      {
1581        "name": "staker",
1582        "type": "address",
1583        "internalType": "address"
1584      }
1585    ],
1586    "outputs": [
1587      {
1588        "name": "totalQueued",
1589        "type": "uint256",
1590        "internalType": "uint256"
1591      }
1592    ],
1593    "stateMutability": "view"
1594  },
1595  {
1596    "type": "function",
1597    "name": "decreaseDelegatedShares",
1598    "inputs": [
1599      {
1600        "name": "staker",
1601        "type": "address",
1602        "internalType": "address"
1603      },
1604      {
1605        "name": "curDepositShares",
1606        "type": "uint256",
1607        "internalType": "uint256"
1608      },
1609      {
1610        "name": "beaconChainSlashingFactorDecrease",
1611        "type": "uint64",
1612        "internalType": "uint64"
1613      }
1614    ],
1615    "outputs": [],
1616    "stateMutability": "nonpayable"
1617  },
1618  {
1619    "type": "function",
1620    "name": "delegateTo",
1621    "inputs": [
1622      {
1623        "name": "operator",
1624        "type": "address",
1625        "internalType": "address"
1626      },
1627      {
1628        "name": "approverSignatureAndExpiry",
1629        "type": "tuple",
1630        "internalType": "struct ISignatureUtilsMixinTypes.SignatureWithExpiry",
1631        "components": [
1632          {
1633            "name": "signature",
1634            "type": "bytes",
1635            "internalType": "bytes"
1636          },
1637          {
1638            "name": "expiry",
1639            "type": "uint256",
1640            "internalType": "uint256"
1641          }
1642        ]
1643      },
1644      {
1645        "name": "approverSalt",
1646        "type": "bytes32",
1647        "internalType": "bytes32"
1648      }
1649    ],
1650    "outputs": [],
1651    "stateMutability": "nonpayable"
1652  },
1653  {
1654    "type": "function",
1655    "name": "delegatedTo",
1656    "inputs": [
1657      {
1658        "name": "staker",
1659        "type": "address",
1660        "internalType": "address"
1661      }
1662    ],
1663    "outputs": [
1664      {
1665        "name": "operator",
1666        "type": "address",
1667        "internalType": "address"
1668      }
1669    ],
1670    "stateMutability": "view"
1671  },
1672  {
1673    "type": "function",
1674    "name": "delegationApprover",
1675    "inputs": [
1676      {
1677        "name": "operator",
1678        "type": "address",
1679        "internalType": "address"
1680      }
1681    ],
1682    "outputs": [
1683      {
1684        "name": "",
1685        "type": "address",
1686        "internalType": "address"
1687      }
1688    ],
1689    "stateMutability": "view"
1690  },
1691  {
1692    "type": "function",
1693    "name": "delegationApproverSaltIsSpent",
1694    "inputs": [
1695      {
1696        "name": "delegationApprover",
1697        "type": "address",
1698        "internalType": "address"
1699      },
1700      {
1701        "name": "salt",
1702        "type": "bytes32",
1703        "internalType": "bytes32"
1704      }
1705    ],
1706    "outputs": [
1707      {
1708        "name": "spent",
1709        "type": "bool",
1710        "internalType": "bool"
1711      }
1712    ],
1713    "stateMutability": "view"
1714  },
1715  {
1716    "type": "function",
1717    "name": "depositScalingFactor",
1718    "inputs": [
1719      {
1720        "name": "staker",
1721        "type": "address",
1722        "internalType": "address"
1723      },
1724      {
1725        "name": "strategy",
1726        "type": "address",
1727        "internalType": "contract IStrategy"
1728      }
1729    ],
1730    "outputs": [
1731      {
1732        "name": "",
1733        "type": "uint256",
1734        "internalType": "uint256"
1735      }
1736    ],
1737    "stateMutability": "view"
1738  },
1739  {
1740    "type": "function",
1741    "name": "domainSeparator",
1742    "inputs": [],
1743    "outputs": [
1744      {
1745        "name": "",
1746        "type": "bytes32",
1747        "internalType": "bytes32"
1748      }
1749    ],
1750    "stateMutability": "view"
1751  },
1752  {
1753    "type": "function",
1754    "name": "eigenPodManager",
1755    "inputs": [],
1756    "outputs": [
1757      {
1758        "name": "",
1759        "type": "address",
1760        "internalType": "contract IEigenPodManager"
1761      }
1762    ],
1763    "stateMutability": "view"
1764  },
1765  {
1766    "type": "function",
1767    "name": "getDepositedShares",
1768    "inputs": [
1769      {
1770        "name": "staker",
1771        "type": "address",
1772        "internalType": "address"
1773      }
1774    ],
1775    "outputs": [
1776      {
1777        "name": "",
1778        "type": "address[]",
1779        "internalType": "contract IStrategy[]"
1780      },
1781      {
1782        "name": "",
1783        "type": "uint256[]",
1784        "internalType": "uint256[]"
1785      }
1786    ],
1787    "stateMutability": "view"
1788  },
1789  {
1790    "type": "function",
1791    "name": "getOperatorShares",
1792    "inputs": [
1793      {
1794        "name": "operator",
1795        "type": "address",
1796        "internalType": "address"
1797      },
1798      {
1799        "name": "strategies",
1800        "type": "address[]",
1801        "internalType": "contract IStrategy[]"
1802      }
1803    ],
1804    "outputs": [
1805      {
1806        "name": "",
1807        "type": "uint256[]",
1808        "internalType": "uint256[]"
1809      }
1810    ],
1811    "stateMutability": "view"
1812  },
1813  {
1814    "type": "function",
1815    "name": "getOperatorsShares",
1816    "inputs": [
1817      {
1818        "name": "operators",
1819        "type": "address[]",
1820        "internalType": "address[]"
1821      },
1822      {
1823        "name": "strategies",
1824        "type": "address[]",
1825        "internalType": "contract IStrategy[]"
1826      }
1827    ],
1828    "outputs": [
1829      {
1830        "name": "",
1831        "type": "uint256[][]",
1832        "internalType": "uint256[][]"
1833      }
1834    ],
1835    "stateMutability": "view"
1836  },
1837  {
1838    "type": "function",
1839    "name": "getQueuedWithdrawal",
1840    "inputs": [
1841      {
1842        "name": "withdrawalRoot",
1843        "type": "bytes32",
1844        "internalType": "bytes32"
1845      }
1846    ],
1847    "outputs": [
1848      {
1849        "name": "withdrawal",
1850        "type": "tuple",
1851        "internalType": "struct IDelegationManagerTypes.Withdrawal",
1852        "components": [
1853          {
1854            "name": "staker",
1855            "type": "address",
1856            "internalType": "address"
1857          },
1858          {
1859            "name": "delegatedTo",
1860            "type": "address",
1861            "internalType": "address"
1862          },
1863          {
1864            "name": "withdrawer",
1865            "type": "address",
1866            "internalType": "address"
1867          },
1868          {
1869            "name": "nonce",
1870            "type": "uint256",
1871            "internalType": "uint256"
1872          },
1873          {
1874            "name": "startBlock",
1875            "type": "uint32",
1876            "internalType": "uint32"
1877          },
1878          {
1879            "name": "strategies",
1880            "type": "address[]",
1881            "internalType": "contract IStrategy[]"
1882          },
1883          {
1884            "name": "scaledShares",
1885            "type": "uint256[]",
1886            "internalType": "uint256[]"
1887          }
1888        ]
1889      },
1890      {
1891        "name": "shares",
1892        "type": "uint256[]",
1893        "internalType": "uint256[]"
1894      }
1895    ],
1896    "stateMutability": "view"
1897  },
1898  {
1899    "type": "function",
1900    "name": "getQueuedWithdrawalRoots",
1901    "inputs": [
1902      {
1903        "name": "staker",
1904        "type": "address",
1905        "internalType": "address"
1906      }
1907    ],
1908    "outputs": [
1909      {
1910        "name": "",
1911        "type": "bytes32[]",
1912        "internalType": "bytes32[]"
1913      }
1914    ],
1915    "stateMutability": "view"
1916  },
1917  {
1918    "type": "function",
1919    "name": "getQueuedWithdrawals",
1920    "inputs": [
1921      {
1922        "name": "staker",
1923        "type": "address",
1924        "internalType": "address"
1925      }
1926    ],
1927    "outputs": [
1928      {
1929        "name": "withdrawals",
1930        "type": "tuple[]",
1931        "internalType": "struct IDelegationManagerTypes.Withdrawal[]",
1932        "components": [
1933          {
1934            "name": "staker",
1935            "type": "address",
1936            "internalType": "address"
1937          },
1938          {
1939            "name": "delegatedTo",
1940            "type": "address",
1941            "internalType": "address"
1942          },
1943          {
1944            "name": "withdrawer",
1945            "type": "address",
1946            "internalType": "address"
1947          },
1948          {
1949            "name": "nonce",
1950            "type": "uint256",
1951            "internalType": "uint256"
1952          },
1953          {
1954            "name": "startBlock",
1955            "type": "uint32",
1956            "internalType": "uint32"
1957          },
1958          {
1959            "name": "strategies",
1960            "type": "address[]",
1961            "internalType": "contract IStrategy[]"
1962          },
1963          {
1964            "name": "scaledShares",
1965            "type": "uint256[]",
1966            "internalType": "uint256[]"
1967          }
1968        ]
1969      },
1970      {
1971        "name": "shares",
1972        "type": "uint256[][]",
1973        "internalType": "uint256[][]"
1974      }
1975    ],
1976    "stateMutability": "view"
1977  },
1978  {
1979    "type": "function",
1980    "name": "getSlashableSharesInQueue",
1981    "inputs": [
1982      {
1983        "name": "operator",
1984        "type": "address",
1985        "internalType": "address"
1986      },
1987      {
1988        "name": "strategy",
1989        "type": "address",
1990        "internalType": "contract IStrategy"
1991      }
1992    ],
1993    "outputs": [
1994      {
1995        "name": "",
1996        "type": "uint256",
1997        "internalType": "uint256"
1998      }
1999    ],
2000    "stateMutability": "view"
2001  },
2002  {
2003    "type": "function",
2004    "name": "getWithdrawableShares",
2005    "inputs": [
2006      {
2007        "name": "staker",
2008        "type": "address",
2009        "internalType": "address"
2010      },
2011      {
2012        "name": "strategies",
2013        "type": "address[]",
2014        "internalType": "contract IStrategy[]"
2015      }
2016    ],
2017    "outputs": [
2018      {
2019        "name": "withdrawableShares",
2020        "type": "uint256[]",
2021        "internalType": "uint256[]"
2022      },
2023      {
2024        "name": "depositShares",
2025        "type": "uint256[]",
2026        "internalType": "uint256[]"
2027      }
2028    ],
2029    "stateMutability": "view"
2030  },
2031  {
2032    "type": "function",
2033    "name": "increaseDelegatedShares",
2034    "inputs": [
2035      {
2036        "name": "staker",
2037        "type": "address",
2038        "internalType": "address"
2039      },
2040      {
2041        "name": "strategy",
2042        "type": "address",
2043        "internalType": "contract IStrategy"
2044      },
2045      {
2046        "name": "prevDepositShares",
2047        "type": "uint256",
2048        "internalType": "uint256"
2049      },
2050      {
2051        "name": "addedShares",
2052        "type": "uint256",
2053        "internalType": "uint256"
2054      }
2055    ],
2056    "outputs": [],
2057    "stateMutability": "nonpayable"
2058  },
2059  {
2060    "type": "function",
2061    "name": "initialize",
2062    "inputs": [
2063      {
2064        "name": "initialOwner",
2065        "type": "address",
2066        "internalType": "address"
2067      },
2068      {
2069        "name": "initialPausedStatus",
2070        "type": "uint256",
2071        "internalType": "uint256"
2072      }
2073    ],
2074    "outputs": [],
2075    "stateMutability": "nonpayable"
2076  },
2077  {
2078    "type": "function",
2079    "name": "isDelegated",
2080    "inputs": [
2081      {
2082        "name": "staker",
2083        "type": "address",
2084        "internalType": "address"
2085      }
2086    ],
2087    "outputs": [
2088      {
2089        "name": "",
2090        "type": "bool",
2091        "internalType": "bool"
2092      }
2093    ],
2094    "stateMutability": "view"
2095  },
2096  {
2097    "type": "function",
2098    "name": "isOperator",
2099    "inputs": [
2100      {
2101        "name": "operator",
2102        "type": "address",
2103        "internalType": "address"
2104      }
2105    ],
2106    "outputs": [
2107      {
2108        "name": "",
2109        "type": "bool",
2110        "internalType": "bool"
2111      }
2112    ],
2113    "stateMutability": "view"
2114  },
2115  {
2116    "type": "function",
2117    "name": "minWithdrawalDelayBlocks",
2118    "inputs": [],
2119    "outputs": [
2120      {
2121        "name": "",
2122        "type": "uint32",
2123        "internalType": "uint32"
2124      }
2125    ],
2126    "stateMutability": "view"
2127  },
2128  {
2129    "type": "function",
2130    "name": "modifyOperatorDetails",
2131    "inputs": [
2132      {
2133        "name": "operator",
2134        "type": "address",
2135        "internalType": "address"
2136      },
2137      {
2138        "name": "newDelegationApprover",
2139        "type": "address",
2140        "internalType": "address"
2141      }
2142    ],
2143    "outputs": [],
2144    "stateMutability": "nonpayable"
2145  },
2146  {
2147    "type": "function",
2148    "name": "operatorShares",
2149    "inputs": [
2150      {
2151        "name": "operator",
2152        "type": "address",
2153        "internalType": "address"
2154      },
2155      {
2156        "name": "strategy",
2157        "type": "address",
2158        "internalType": "contract IStrategy"
2159      }
2160    ],
2161    "outputs": [
2162      {
2163        "name": "shares",
2164        "type": "uint256",
2165        "internalType": "uint256"
2166      }
2167    ],
2168    "stateMutability": "view"
2169  },
2170  {
2171    "type": "function",
2172    "name": "owner",
2173    "inputs": [],
2174    "outputs": [
2175      {
2176        "name": "",
2177        "type": "address",
2178        "internalType": "address"
2179      }
2180    ],
2181    "stateMutability": "view"
2182  },
2183  {
2184    "type": "function",
2185    "name": "pause",
2186    "inputs": [
2187      {
2188        "name": "newPausedStatus",
2189        "type": "uint256",
2190        "internalType": "uint256"
2191      }
2192    ],
2193    "outputs": [],
2194    "stateMutability": "nonpayable"
2195  },
2196  {
2197    "type": "function",
2198    "name": "pauseAll",
2199    "inputs": [],
2200    "outputs": [],
2201    "stateMutability": "nonpayable"
2202  },
2203  {
2204    "type": "function",
2205    "name": "paused",
2206    "inputs": [
2207      {
2208        "name": "index",
2209        "type": "uint8",
2210        "internalType": "uint8"
2211      }
2212    ],
2213    "outputs": [
2214      {
2215        "name": "",
2216        "type": "bool",
2217        "internalType": "bool"
2218      }
2219    ],
2220    "stateMutability": "view"
2221  },
2222  {
2223    "type": "function",
2224    "name": "paused",
2225    "inputs": [],
2226    "outputs": [
2227      {
2228        "name": "",
2229        "type": "uint256",
2230        "internalType": "uint256"
2231      }
2232    ],
2233    "stateMutability": "view"
2234  },
2235  {
2236    "type": "function",
2237    "name": "pauserRegistry",
2238    "inputs": [],
2239    "outputs": [
2240      {
2241        "name": "",
2242        "type": "address",
2243        "internalType": "contract IPauserRegistry"
2244      }
2245    ],
2246    "stateMutability": "view"
2247  },
2248  {
2249    "type": "function",
2250    "name": "pendingWithdrawals",
2251    "inputs": [
2252      {
2253        "name": "withdrawalRoot",
2254        "type": "bytes32",
2255        "internalType": "bytes32"
2256      }
2257    ],
2258    "outputs": [
2259      {
2260        "name": "pending",
2261        "type": "bool",
2262        "internalType": "bool"
2263      }
2264    ],
2265    "stateMutability": "view"
2266  },
2267  {
2268    "type": "function",
2269    "name": "permissionController",
2270    "inputs": [],
2271    "outputs": [
2272      {
2273        "name": "",
2274        "type": "address",
2275        "internalType": "contract IPermissionController"
2276      }
2277    ],
2278    "stateMutability": "view"
2279  },
2280  {
2281    "type": "function",
2282    "name": "queueWithdrawals",
2283    "inputs": [
2284      {
2285        "name": "params",
2286        "type": "tuple[]",
2287        "internalType": "struct IDelegationManagerTypes.QueuedWithdrawalParams[]",
2288        "components": [
2289          {
2290            "name": "strategies",
2291            "type": "address[]",
2292            "internalType": "contract IStrategy[]"
2293          },
2294          {
2295            "name": "depositShares",
2296            "type": "uint256[]",
2297            "internalType": "uint256[]"
2298          },
2299          {
2300            "name": "__deprecated_withdrawer",
2301            "type": "address",
2302            "internalType": "address"
2303          }
2304        ]
2305      }
2306    ],
2307    "outputs": [
2308      {
2309        "name": "",
2310        "type": "bytes32[]",
2311        "internalType": "bytes32[]"
2312      }
2313    ],
2314    "stateMutability": "nonpayable"
2315  },
2316  {
2317    "type": "function",
2318    "name": "queuedWithdrawals",
2319    "inputs": [
2320      {
2321        "name": "withdrawalRoot",
2322        "type": "bytes32",
2323        "internalType": "bytes32"
2324      }
2325    ],
2326    "outputs": [
2327      {
2328        "name": "withdrawal",
2329        "type": "tuple",
2330        "internalType": "struct IDelegationManagerTypes.Withdrawal",
2331        "components": [
2332          {
2333            "name": "staker",
2334            "type": "address",
2335            "internalType": "address"
2336          },
2337          {
2338            "name": "delegatedTo",
2339            "type": "address",
2340            "internalType": "address"
2341          },
2342          {
2343            "name": "withdrawer",
2344            "type": "address",
2345            "internalType": "address"
2346          },
2347          {
2348            "name": "nonce",
2349            "type": "uint256",
2350            "internalType": "uint256"
2351          },
2352          {
2353            "name": "startBlock",
2354            "type": "uint32",
2355            "internalType": "uint32"
2356          },
2357          {
2358            "name": "strategies",
2359            "type": "address[]",
2360            "internalType": "contract IStrategy[]"
2361          },
2362          {
2363            "name": "scaledShares",
2364            "type": "uint256[]",
2365            "internalType": "uint256[]"
2366          }
2367        ]
2368      }
2369    ],
2370    "stateMutability": "view"
2371  },
2372  {
2373    "type": "function",
2374    "name": "redelegate",
2375    "inputs": [
2376      {
2377        "name": "newOperator",
2378        "type": "address",
2379        "internalType": "address"
2380      },
2381      {
2382        "name": "newOperatorApproverSig",
2383        "type": "tuple",
2384        "internalType": "struct ISignatureUtilsMixinTypes.SignatureWithExpiry",
2385        "components": [
2386          {
2387            "name": "signature",
2388            "type": "bytes",
2389            "internalType": "bytes"
2390          },
2391          {
2392            "name": "expiry",
2393            "type": "uint256",
2394            "internalType": "uint256"
2395          }
2396        ]
2397      },
2398      {
2399        "name": "approverSalt",
2400        "type": "bytes32",
2401        "internalType": "bytes32"
2402      }
2403    ],
2404    "outputs": [
2405      {
2406        "name": "withdrawalRoots",
2407        "type": "bytes32[]",
2408        "internalType": "bytes32[]"
2409      }
2410    ],
2411    "stateMutability": "nonpayable"
2412  },
2413  {
2414    "type": "function",
2415    "name": "registerAsOperator",
2416    "inputs": [
2417      {
2418        "name": "initDelegationApprover",
2419        "type": "address",
2420        "internalType": "address"
2421      },
2422      {
2423        "name": "allocationDelay",
2424        "type": "uint32",
2425        "internalType": "uint32"
2426      },
2427      {
2428        "name": "metadataURI",
2429        "type": "string",
2430        "internalType": "string"
2431      }
2432    ],
2433    "outputs": [],
2434    "stateMutability": "nonpayable"
2435  },
2436  {
2437    "type": "function",
2438    "name": "renounceOwnership",
2439    "inputs": [],
2440    "outputs": [],
2441    "stateMutability": "nonpayable"
2442  },
2443  {
2444    "type": "function",
2445    "name": "slashOperatorShares",
2446    "inputs": [
2447      {
2448        "name": "operator",
2449        "type": "address",
2450        "internalType": "address"
2451      },
2452      {
2453        "name": "strategy",
2454        "type": "address",
2455        "internalType": "contract IStrategy"
2456      },
2457      {
2458        "name": "prevMaxMagnitude",
2459        "type": "uint64",
2460        "internalType": "uint64"
2461      },
2462      {
2463        "name": "newMaxMagnitude",
2464        "type": "uint64",
2465        "internalType": "uint64"
2466      }
2467    ],
2468    "outputs": [],
2469    "stateMutability": "nonpayable"
2470  },
2471  {
2472    "type": "function",
2473    "name": "strategyManager",
2474    "inputs": [],
2475    "outputs": [
2476      {
2477        "name": "",
2478        "type": "address",
2479        "internalType": "contract IStrategyManager"
2480      }
2481    ],
2482    "stateMutability": "view"
2483  },
2484  {
2485    "type": "function",
2486    "name": "transferOwnership",
2487    "inputs": [
2488      {
2489        "name": "newOwner",
2490        "type": "address",
2491        "internalType": "address"
2492      }
2493    ],
2494    "outputs": [],
2495    "stateMutability": "nonpayable"
2496  },
2497  {
2498    "type": "function",
2499    "name": "undelegate",
2500    "inputs": [
2501      {
2502        "name": "staker",
2503        "type": "address",
2504        "internalType": "address"
2505      }
2506    ],
2507    "outputs": [
2508      {
2509        "name": "withdrawalRoots",
2510        "type": "bytes32[]",
2511        "internalType": "bytes32[]"
2512      }
2513    ],
2514    "stateMutability": "nonpayable"
2515  },
2516  {
2517    "type": "function",
2518    "name": "unpause",
2519    "inputs": [
2520      {
2521        "name": "newPausedStatus",
2522        "type": "uint256",
2523        "internalType": "uint256"
2524      }
2525    ],
2526    "outputs": [],
2527    "stateMutability": "nonpayable"
2528  },
2529  {
2530    "type": "function",
2531    "name": "updateOperatorMetadataURI",
2532    "inputs": [
2533      {
2534        "name": "operator",
2535        "type": "address",
2536        "internalType": "address"
2537      },
2538      {
2539        "name": "metadataURI",
2540        "type": "string",
2541        "internalType": "string"
2542      }
2543    ],
2544    "outputs": [],
2545    "stateMutability": "nonpayable"
2546  },
2547  {
2548    "type": "function",
2549    "name": "version",
2550    "inputs": [],
2551    "outputs": [
2552      {
2553        "name": "",
2554        "type": "string",
2555        "internalType": "string"
2556      }
2557    ],
2558    "stateMutability": "view"
2559  },
2560  {
2561    "type": "event",
2562    "name": "DelegationApproverUpdated",
2563    "inputs": [
2564      {
2565        "name": "operator",
2566        "type": "address",
2567        "indexed": true,
2568        "internalType": "address"
2569      },
2570      {
2571        "name": "newDelegationApprover",
2572        "type": "address",
2573        "indexed": false,
2574        "internalType": "address"
2575      }
2576    ],
2577    "anonymous": false
2578  },
2579  {
2580    "type": "event",
2581    "name": "DepositScalingFactorUpdated",
2582    "inputs": [
2583      {
2584        "name": "staker",
2585        "type": "address",
2586        "indexed": false,
2587        "internalType": "address"
2588      },
2589      {
2590        "name": "strategy",
2591        "type": "address",
2592        "indexed": false,
2593        "internalType": "contract IStrategy"
2594      },
2595      {
2596        "name": "newDepositScalingFactor",
2597        "type": "uint256",
2598        "indexed": false,
2599        "internalType": "uint256"
2600      }
2601    ],
2602    "anonymous": false
2603  },
2604  {
2605    "type": "event",
2606    "name": "Initialized",
2607    "inputs": [
2608      {
2609        "name": "version",
2610        "type": "uint8",
2611        "indexed": false,
2612        "internalType": "uint8"
2613      }
2614    ],
2615    "anonymous": false
2616  },
2617  {
2618    "type": "event",
2619    "name": "OperatorMetadataURIUpdated",
2620    "inputs": [
2621      {
2622        "name": "operator",
2623        "type": "address",
2624        "indexed": true,
2625        "internalType": "address"
2626      },
2627      {
2628        "name": "metadataURI",
2629        "type": "string",
2630        "indexed": false,
2631        "internalType": "string"
2632      }
2633    ],
2634    "anonymous": false
2635  },
2636  {
2637    "type": "event",
2638    "name": "OperatorRegistered",
2639    "inputs": [
2640      {
2641        "name": "operator",
2642        "type": "address",
2643        "indexed": true,
2644        "internalType": "address"
2645      },
2646      {
2647        "name": "delegationApprover",
2648        "type": "address",
2649        "indexed": false,
2650        "internalType": "address"
2651      }
2652    ],
2653    "anonymous": false
2654  },
2655  {
2656    "type": "event",
2657    "name": "OperatorSharesDecreased",
2658    "inputs": [
2659      {
2660        "name": "operator",
2661        "type": "address",
2662        "indexed": true,
2663        "internalType": "address"
2664      },
2665      {
2666        "name": "staker",
2667        "type": "address",
2668        "indexed": false,
2669        "internalType": "address"
2670      },
2671      {
2672        "name": "strategy",
2673        "type": "address",
2674        "indexed": false,
2675        "internalType": "contract IStrategy"
2676      },
2677      {
2678        "name": "shares",
2679        "type": "uint256",
2680        "indexed": false,
2681        "internalType": "uint256"
2682      }
2683    ],
2684    "anonymous": false
2685  },
2686  {
2687    "type": "event",
2688    "name": "OperatorSharesIncreased",
2689    "inputs": [
2690      {
2691        "name": "operator",
2692        "type": "address",
2693        "indexed": true,
2694        "internalType": "address"
2695      },
2696      {
2697        "name": "staker",
2698        "type": "address",
2699        "indexed": false,
2700        "internalType": "address"
2701      },
2702      {
2703        "name": "strategy",
2704        "type": "address",
2705        "indexed": false,
2706        "internalType": "contract IStrategy"
2707      },
2708      {
2709        "name": "shares",
2710        "type": "uint256",
2711        "indexed": false,
2712        "internalType": "uint256"
2713      }
2714    ],
2715    "anonymous": false
2716  },
2717  {
2718    "type": "event",
2719    "name": "OperatorSharesSlashed",
2720    "inputs": [
2721      {
2722        "name": "operator",
2723        "type": "address",
2724        "indexed": true,
2725        "internalType": "address"
2726      },
2727      {
2728        "name": "strategy",
2729        "type": "address",
2730        "indexed": false,
2731        "internalType": "contract IStrategy"
2732      },
2733      {
2734        "name": "totalSlashedShares",
2735        "type": "uint256",
2736        "indexed": false,
2737        "internalType": "uint256"
2738      }
2739    ],
2740    "anonymous": false
2741  },
2742  {
2743    "type": "event",
2744    "name": "OwnershipTransferred",
2745    "inputs": [
2746      {
2747        "name": "previousOwner",
2748        "type": "address",
2749        "indexed": true,
2750        "internalType": "address"
2751      },
2752      {
2753        "name": "newOwner",
2754        "type": "address",
2755        "indexed": true,
2756        "internalType": "address"
2757      }
2758    ],
2759    "anonymous": false
2760  },
2761  {
2762    "type": "event",
2763    "name": "Paused",
2764    "inputs": [
2765      {
2766        "name": "account",
2767        "type": "address",
2768        "indexed": true,
2769        "internalType": "address"
2770      },
2771      {
2772        "name": "newPausedStatus",
2773        "type": "uint256",
2774        "indexed": false,
2775        "internalType": "uint256"
2776      }
2777    ],
2778    "anonymous": false
2779  },
2780  {
2781    "type": "event",
2782    "name": "SlashingWithdrawalCompleted",
2783    "inputs": [
2784      {
2785        "name": "withdrawalRoot",
2786        "type": "bytes32",
2787        "indexed": false,
2788        "internalType": "bytes32"
2789      }
2790    ],
2791    "anonymous": false
2792  },
2793  {
2794    "type": "event",
2795    "name": "SlashingWithdrawalQueued",
2796    "inputs": [
2797      {
2798        "name": "withdrawalRoot",
2799        "type": "bytes32",
2800        "indexed": false,
2801        "internalType": "bytes32"
2802      },
2803      {
2804        "name": "withdrawal",
2805        "type": "tuple",
2806        "indexed": false,
2807        "internalType": "struct IDelegationManagerTypes.Withdrawal",
2808        "components": [
2809          {
2810            "name": "staker",
2811            "type": "address",
2812            "internalType": "address"
2813          },
2814          {
2815            "name": "delegatedTo",
2816            "type": "address",
2817            "internalType": "address"
2818          },
2819          {
2820            "name": "withdrawer",
2821            "type": "address",
2822            "internalType": "address"
2823          },
2824          {
2825            "name": "nonce",
2826            "type": "uint256",
2827            "internalType": "uint256"
2828          },
2829          {
2830            "name": "startBlock",
2831            "type": "uint32",
2832            "internalType": "uint32"
2833          },
2834          {
2835            "name": "strategies",
2836            "type": "address[]",
2837            "internalType": "contract IStrategy[]"
2838          },
2839          {
2840            "name": "scaledShares",
2841            "type": "uint256[]",
2842            "internalType": "uint256[]"
2843          }
2844        ]
2845      },
2846      {
2847        "name": "sharesToWithdraw",
2848        "type": "uint256[]",
2849        "indexed": false,
2850        "internalType": "uint256[]"
2851      }
2852    ],
2853    "anonymous": false
2854  },
2855  {
2856    "type": "event",
2857    "name": "StakerDelegated",
2858    "inputs": [
2859      {
2860        "name": "staker",
2861        "type": "address",
2862        "indexed": true,
2863        "internalType": "address"
2864      },
2865      {
2866        "name": "operator",
2867        "type": "address",
2868        "indexed": true,
2869        "internalType": "address"
2870      }
2871    ],
2872    "anonymous": false
2873  },
2874  {
2875    "type": "event",
2876    "name": "StakerForceUndelegated",
2877    "inputs": [
2878      {
2879        "name": "staker",
2880        "type": "address",
2881        "indexed": true,
2882        "internalType": "address"
2883      },
2884      {
2885        "name": "operator",
2886        "type": "address",
2887        "indexed": true,
2888        "internalType": "address"
2889      }
2890    ],
2891    "anonymous": false
2892  },
2893  {
2894    "type": "event",
2895    "name": "StakerUndelegated",
2896    "inputs": [
2897      {
2898        "name": "staker",
2899        "type": "address",
2900        "indexed": true,
2901        "internalType": "address"
2902      },
2903      {
2904        "name": "operator",
2905        "type": "address",
2906        "indexed": true,
2907        "internalType": "address"
2908      }
2909    ],
2910    "anonymous": false
2911  },
2912  {
2913    "type": "event",
2914    "name": "Unpaused",
2915    "inputs": [
2916      {
2917        "name": "account",
2918        "type": "address",
2919        "indexed": true,
2920        "internalType": "address"
2921      },
2922      {
2923        "name": "newPausedStatus",
2924        "type": "uint256",
2925        "indexed": false,
2926        "internalType": "uint256"
2927      }
2928    ],
2929    "anonymous": false
2930  },
2931  {
2932    "type": "error",
2933    "name": "ActivelyDelegated",
2934    "inputs": []
2935  },
2936  {
2937    "type": "error",
2938    "name": "CallerCannotUndelegate",
2939    "inputs": []
2940  },
2941  {
2942    "type": "error",
2943    "name": "CurrentlyPaused",
2944    "inputs": []
2945  },
2946  {
2947    "type": "error",
2948    "name": "FullySlashed",
2949    "inputs": []
2950  },
2951  {
2952    "type": "error",
2953    "name": "InputAddressZero",
2954    "inputs": []
2955  },
2956  {
2957    "type": "error",
2958    "name": "InputArrayLengthMismatch",
2959    "inputs": []
2960  },
2961  {
2962    "type": "error",
2963    "name": "InputArrayLengthZero",
2964    "inputs": []
2965  },
2966  {
2967    "type": "error",
2968    "name": "InvalidNewPausedStatus",
2969    "inputs": []
2970  },
2971  {
2972    "type": "error",
2973    "name": "InvalidPermissions",
2974    "inputs": []
2975  },
2976  {
2977    "type": "error",
2978    "name": "InvalidShortString",
2979    "inputs": []
2980  },
2981  {
2982    "type": "error",
2983    "name": "InvalidSignature",
2984    "inputs": []
2985  },
2986  {
2987    "type": "error",
2988    "name": "InvalidSnapshotOrdering",
2989    "inputs": []
2990  },
2991  {
2992    "type": "error",
2993    "name": "NotActivelyDelegated",
2994    "inputs": []
2995  },
2996  {
2997    "type": "error",
2998    "name": "OnlyAllocationManager",
2999    "inputs": []
3000  },
3001  {
3002    "type": "error",
3003    "name": "OnlyEigenPodManager",
3004    "inputs": []
3005  },
3006  {
3007    "type": "error",
3008    "name": "OnlyPauser",
3009    "inputs": []
3010  },
3011  {
3012    "type": "error",
3013    "name": "OnlyStrategyManagerOrEigenPodManager",
3014    "inputs": []
3015  },
3016  {
3017    "type": "error",
3018    "name": "OnlyUnpauser",
3019    "inputs": []
3020  },
3021  {
3022    "type": "error",
3023    "name": "OperatorNotRegistered",
3024    "inputs": []
3025  },
3026  {
3027    "type": "error",
3028    "name": "OperatorsCannotUndelegate",
3029    "inputs": []
3030  },
3031  {
3032    "type": "error",
3033    "name": "SaltSpent",
3034    "inputs": []
3035  },
3036  {
3037    "type": "error",
3038    "name": "SignatureExpired",
3039    "inputs": []
3040  },
3041  {
3042    "type": "error",
3043    "name": "StringTooLong",
3044    "inputs": [
3045      {
3046        "name": "str",
3047        "type": "string",
3048        "internalType": "string"
3049      }
3050    ]
3051  },
3052  {
3053    "type": "error",
3054    "name": "WithdrawalDelayNotElapsed",
3055    "inputs": []
3056  },
3057  {
3058    "type": "error",
3059    "name": "WithdrawalNotQueued",
3060    "inputs": []
3061  },
3062  {
3063    "type": "error",
3064    "name": "WithdrawerNotCaller",
3065    "inputs": []
3066  }
3067]
3068```*/
3069#[allow(
3070    non_camel_case_types,
3071    non_snake_case,
3072    clippy::pub_underscore_fields,
3073    clippy::style,
3074    clippy::empty_structs_with_brackets
3075)]
3076pub mod DelegationManager {
3077    use super::*;
3078    use alloy::sol_types as alloy_sol_types;
3079    /// The creation / init bytecode of the contract.
3080    ///
3081    /// ```text
3082    ///0x610160604052348015610010575f5ffd5b506040516162e53803806162e583398101604081905261002f916101fb565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610382565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da919061032a565b60405180910390fd5b80516100ee8261035c565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156101f35781810151838201526020016101db565b50505f910152565b5f5f5f5f5f5f5f60e0888a031215610211575f5ffd5b875161021c816101ae565b602089015190975061022d816101ae565b604089015190965061023e816101ae565b606089015190955061024f816101ae565b6080890151909450610260816101ae565b60a089015190935063ffffffff81168114610279575f5ffd5b60c08901519092506001600160401b03811115610294575f5ffd5b88015f601f82018b136102a5575f5ffd5b81516001600160401b038111156102be576102be6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ec576102ec6101c5565b6040528181528382016020018d1015610303575f5ffd5b6103148260208301602087016101d9565b8092508094505050505092959891949750929550565b602081525f82518060208401526103488160408501602087016101d9565b601f01601f19169190910160400192915050565b8051602080830151919081101561037c575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615e6a61047b5f395f8181611112015261412c01525f8181610460015261340b01525f818161076a0152818161361b0152818161375d0152613a4001525f81816107ba01528181610e2701528181610fea0152818161136b01528181611584015281816119e6015281816127a0015261435601525f818161048701528181610f68015281816114e3015281816117570152818161300c015281816131ed01526138a301525f81816103bd01528181610f36015281816116ab015261387d01525f818161063801528181610bb70152818161115001526125960152615e6a5ff3fe608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615230565b61038361113b565b61032a6104e73660046152fe565b6111ea565b61044b6104fa36600461532f565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b604051610334929190615406565b61054b610546366004615191565b611236565b604051610334929190615478565b6103836105673660046154f9565b611360565b61038361057a366004615552565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615591565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e3660046155a3565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155f3565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a736600461563f565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156db565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ed565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157d4565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155f3565b611e2b565b6040516103349291906157fe565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157d4565b6120b8565b6103636107fd366004615191565b6121d3565b61038361081036600461581d565b6122fc565b6103836108233660046156ed565b612352565b61083b610836366004615890565b6123bd565b604051610334919061593d565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c161594f565b90506020028101906109d39190615963565b6109e1906020810190615981565b90508787838181106109f5576109f561594f565b9050602002810190610a079190615963565b610a119080615981565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a4961594f565b9050602002810190610a5b9190615963565b610a659080615981565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab461594f565b9050602002810190610ac69190615963565b610ad09080615981565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b1561594f565b9050602002810190610b279190615963565b610b35906020810190615981565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f61594f565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159c6565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d2061594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d7261594f565b6020026020010151858481518110610d8c57610d8c61594f565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db661594f565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159e1565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110539190615a0f565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159c6565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156db565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b81811015611358576113168382815181106113095761130961594f565b60200260200101516134b4565b8683815181106113285761132861594f565b602002602001018684815181106113415761134161594f565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a3e565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed9190615a0f565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615aac565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b67565b9050805f036117d457509094909350915050565b5f835160016117e39190615a3e565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a3e565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a061594f565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d461594f565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc61594f565b60200260200101518382815181106119165761191661594f565b60200260200101906001600160a01b031690816001600160a01b0316815250508481815181106119485761194861594f565b60200260200101518282815181106119625761196261594f565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f9190615a0f565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159e1565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d61594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc761594f565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c3361594f565b9050602002810190611c459190615b7e565b611c4e90615b92565b888884818110611c6057611c6061594f565b9050602002810190611c729190615981565b888886818110611c8457611c8461594f565b9050602002016020810190611c999190615b9d565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f0361594f565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f3461594f565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b67565b858381518110611fbf57611fbf61594f565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8985815181106120025761200261594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f8201548152505090506120868684815181106120545761205461594f565b602002602001015185858151811061206e5761206e61594f565b6020026020010151836138dc9092919063ffffffff16565b8784815181106120985761209861594f565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b92565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f61594f565b602002602001015185611b0c565b82828151811061244f5761244f61594f565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615bb8565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bd3565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bf6565b90505f5b845181101561289c57612877878683815181106128505761285061594f565b602002602001015184848151811061286a5761286a61594f565b60200260200101516131a6565b8382815181106128895761288961594f565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f0361594f565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d661594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a1461594f565b6020026020010151888581518110612a2e57612a2e61594f565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a6161594f565b602002602001018181525050612aa0888481518110612a8257612a8261594f565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab261594f565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae261594f565b6020026020010151878681518110612afc57612afc61594f565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b2061594f565b6020026020010151878781518110612b3a57612b3a61594f565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a61594f565b60200260200101518c8881518110612b8457612b8461594f565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c85565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b67565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a61594f565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c85565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615ca9565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615cc1565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd561594f565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130779190615a0f565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b061594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f8201548152505090506131248584815181106131025761310261594f565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b8584815181106131365761313661594f565b60200260200101818152505050505b61319e868886848151811061315c5761315c61594f565b60200260200101515f8786815181106131775761317761594f565b60200260200101518787815181106131915761319161594f565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132589190615a0f565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c85565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a3e565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c85565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159c6565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ceb565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb61594f565b60200260200101518383815181106136d5576136d561594f565b6020026020010151614439565b8482815181106136f4576136f461594f565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615d07565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615d1a565b61378c9190615d1a565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615d07565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615d07565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c85565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ceb565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f0361594f565b90505f613c218b60c001518481518110613c0757613c0761594f565b60200260200101518785815181106136d5576136d561594f565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c6061594f565b60200260200101518d8d88818110613c7a57613c7a61594f565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a61594f565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c85565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d36565b91509150613dce878e5f01518f60a001518881518110613db257613db261594f565b602002602001015185858b8b815181106131915761319161594f565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a61594f565b6020026020010151835f81518110613f9457613f9461594f565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc661594f565b6020026020010151825f81518110613fe057613fe061594f565b602002602001018181525050848481518110613ffe57613ffe61594f565b6020026020010151815f815181106140185761401861594f565b6020026020010181815250506140318b898585856128a7565b8a85815181106140435761404361594f565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f815181106141645761416461594f565b602001015160f81c60f81b816001815181106141825761418261594f565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a3e565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a3e565b90505f6142d984612e976142d2888a615a3e565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d58565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bf6565b90505f5b855181101561442d57614408888783815181106128505761285061594f565b83828151811061441a5761441a61594f565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d91565b14801561448357505f848061447e5761447e615da5565b868809115b1561449657614493600182615a3e565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615db9565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615da5565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615d07565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615d07565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615d07565b85549091505f906147a890600190615d07565b9050818114614807575f865f0182815481106147c6576147c661594f565b905f5260205f200154905080875f0184815481106147e6576147e661594f565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615dd8565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d91565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615d07565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615d07565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a3e565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dec565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615e04565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b67565b149695505050505050565b5f614b376002848418615e15565b610dd090848416615a3e565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f5b838110156151fd5781810151838201526020016151e5565b50505f910152565b5f815180845261521c8160208601602086016151e3565b601f01601f19169290920160200192915050565b602081525f610dd06020830184615205565b5f60e08284031215615252575f5ffd5b61525a614e76565b905061526582614d34565b815261527360208301614d34565b602082015261528460408301614d34565b60408201526060828101359082015261529f608083016150a0565b608082015260a08201356001600160401b038111156152bc575f5ffd5b6152c884828501614f12565b60a08301525060c08201356001600160401b038111156152e6575f5ffd5b6152f284828501614f85565b60c08301525092915050565b5f6020828403121561530e575f5ffd5b81356001600160401b03811115615323575f5ffd5b611a5d84828501615242565b5f6020828403121561533f575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615361565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153d39085018263ffffffff169052565b5060a082015160e060a08501526153ed60e085018261534f565b905060c083015184820360c08601526144968282615054565b604081525f6154186040830185615388565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615462838351615054565b6020988901989093509190910190600101615446565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154cf57605f198786030184526154ba858351615388565b9450602093840193919091019060010161549e565b505050508281036020840152614496818561542a565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f6080858703121561550c575f5ffd5b843561551781614d20565b9350602085013561552781614d20565b92506040850135615537816154e5565b91506060850135615547816154e5565b939692955090935050565b5f5f5f60608486031215615564575f5ffd5b833561556f81614d20565b9250602084013591506040840135615586816154e5565b809150509250925092565b604081525f615418604083018561534f565b5f5f5f604084860312156155b5575f5ffd5b83356155c081614d20565b925060208401356001600160401b038111156155da575f5ffd5b6155e6868287016150b3565b9497909650939450505050565b5f5f60408385031215615604575f5ffd5b823561560f81614d20565b915060208301356001600160401b03811115615629575f5ffd5b61563585828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615654575f5ffd5b86356001600160401b03811115615669575f5ffd5b61567589828a01614d96565b90975095505060208701356001600160401b03811115615693575f5ffd5b61569f89828a01614d96565b90955093505060408701356001600160401b038111156156bd575f5ffd5b6156c989828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615388565b5f5f5f606084860312156156ff575f5ffd5b833561570a81614d20565b925060208401356001600160401b03811115615724575f5ffd5b840160408187031215615735575f5ffd5b61573d614e9e565b81356001600160401b03811115615752575f5ffd5b8201601f81018813615762575f5ffd5b80356001600160401b0381111561577b5761577b614e62565b61578e601f8201601f1916602001614ec0565b8181528960208385010111156157a2575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157e5575f5ffd5b82356157f081614d20565b946020939093013593505050565b604081525f6154186040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615830575f5ffd5b84356001600160401b03811115615845575f5ffd5b850160e08188031215615856575f5ffd5b935060208501356001600160401b03811115615870575f5ffd5b61587c87828801614d96565b909450925050604085013561554781615810565b5f5f604083850312156158a1575f5ffd5b82356001600160401b038111156158b6575f5ffd5b8301601f810185136158c6575f5ffd5b80356158d4614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158f5575f5ffd5b6020840193505b8284101561592057833561590f81614d20565b8252602093840193909101906158fc565b945050505060208301356001600160401b03811115615629575f5ffd5b602081525f610dd0602083018461542a565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615977575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615996575f5ffd5b8301803591506001600160401b038211156159af575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159d6575f5ffd5b8151610dd081615810565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a1f575f5ffd5b8151610dd0816154e5565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a2a565b5f82601f830112615a60575f5ffd5b8151615a6e614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a8f575f5ffd5b602085015b83811015614f7b578051835260209283019201615a94565b5f5f60408385031215615abd575f5ffd5b82516001600160401b03811115615ad2575f5ffd5b8301601f81018513615ae2575f5ffd5b8051615af0614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615b11575f5ffd5b6020840193505b82841015615b3c578351615b2b81614d20565b825260209384019390910190615b18565b8095505050505060208301516001600160401b03811115615b5b575f5ffd5b61563585828601615a51565b5f60208284031215615b77575f5ffd5b5051919050565b5f823560de19833603018112615977575f5ffd5b5f6119b53683615242565b5f60208284031215615bad575f5ffd5b8135610dd081615810565b5f60208284031215615bc8575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d9083018461534f565b5f60208284031215615c06575f5ffd5b81516001600160401b03811115615c1b575f5ffd5b8201601f81018413615c2b575f5ffd5b8051615c39614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c5a575f5ffd5b6020840193505b82841015610907578351615c74816154e5565b825260209384019390910190615c61565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615cba57615cba615a2a565b5060010190565b838152606060208201525f615cd96060830185615388565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a2a565b818103818111156119b5576119b5615a2a565b63ffffffff82811682821603908111156119b5576119b5615a2a565b5f5f60408385031215615d47575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d7b9083018561534f565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a2a565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d6040830184615205565b5f82516159778184602087016151e3565b5f82615e2f57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220ad7b0b5911021fa3ef3854a4853e9e1f35ba72ed893d39c59f874de9402158fc64736f6c634300081b0033
3083    /// ```
3084    #[rustfmt::skip]
3085    #[allow(clippy::all)]
3086    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3087        b"a\x01``@R4\x80\x15a\0\x10W__\xFD[P`@Qab\xE58\x03\x80ab\xE5\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\xFBV[\x80\x80\x84\x89\x89\x89\x87\x8A`\x01`\x01`\xA0\x1B\x03\x81\x16a\0^W`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\x80R\x93\x84\x16`\xA0R\x91\x83\x16`\xC0R\x82\x16`\xE0Rc\xFF\xFF\xFF\xFF\x16a\x01\0R\x16a\x01 Ra\0\x95\x81a\0\xB0V[a\x01@RPa\0\xA4\x90Pa\0\xF6V[PPPPPPPa\x03\x82V[__\x82\x90P`\x1F\x81Q\x11\x15a\0\xE3W\x82`@Qc0Z'\xA9`\xE0\x1B\x81R`\x04\x01a\0\xDA\x91\x90a\x03*V[`@Q\x80\x91\x03\x90\xFD[\x80Qa\0\xEE\x82a\x03\\V[\x17\x93\x92PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x01]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01a\0\xDAV[_T`\xFF\x90\x81\x16\x14a\x01\xACW_\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xC2W__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x01\xF3W\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xDBV[PP_\x91\x01RV[_______`\xE0\x88\x8A\x03\x12\x15a\x02\x11W__\xFD[\x87Qa\x02\x1C\x81a\x01\xAEV[` \x89\x01Q\x90\x97Pa\x02-\x81a\x01\xAEV[`@\x89\x01Q\x90\x96Pa\x02>\x81a\x01\xAEV[``\x89\x01Q\x90\x95Pa\x02O\x81a\x01\xAEV[`\x80\x89\x01Q\x90\x94Pa\x02`\x81a\x01\xAEV[`\xA0\x89\x01Q\x90\x93Pc\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02yW__\xFD[`\xC0\x89\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x94W__\xFD[\x88\x01_`\x1F\x82\x01\x8B\x13a\x02\xA5W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\xBEWa\x02\xBEa\x01\xC5V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02\xECWa\x02\xECa\x01\xC5V[`@R\x81\x81R\x83\x82\x01` \x01\x8D\x10\x15a\x03\x03W__\xFD[a\x03\x14\x82` \x83\x01` \x87\x01a\x01\xD9V[\x80\x92P\x80\x94PPPPP\x92\x95\x98\x91\x94\x97P\x92\x95PV[` \x81R_\x82Q\x80` \x84\x01Ra\x03H\x81`@\x85\x01` \x87\x01a\x01\xD9V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\x03|W_\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa^ja\x04{_9_\x81\x81a\x11\x12\x01RaA,\x01R_\x81\x81a\x04`\x01Ra4\x0B\x01R_\x81\x81a\x07j\x01R\x81\x81a6\x1B\x01R\x81\x81a7]\x01Ra:@\x01R_\x81\x81a\x07\xBA\x01R\x81\x81a\x0E'\x01R\x81\x81a\x0F\xEA\x01R\x81\x81a\x13k\x01R\x81\x81a\x15\x84\x01R\x81\x81a\x19\xE6\x01R\x81\x81a'\xA0\x01RaCV\x01R_\x81\x81a\x04\x87\x01R\x81\x81a\x0Fh\x01R\x81\x81a\x14\xE3\x01R\x81\x81a\x17W\x01R\x81\x81a0\x0C\x01R\x81\x81a1\xED\x01Ra8\xA3\x01R_\x81\x81a\x03\xBD\x01R\x81\x81a\x0F6\x01R\x81\x81a\x16\xAB\x01Ra8}\x01R_\x81\x81a\x068\x01R\x81\x81a\x0B\xB7\x01R\x81\x81a\x11P\x01Ra%\x96\x01Ra^j_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\xFFW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x95W\x80c\xBF\xAE?\xD2\x11a\0\xE4W\x80c\xE4\xCC?\x90\x11a\0\x9EW\x80c\xF2\xFD\xE3\x8B\x11a\0yW\x80c\xF2\xFD\xE3\x8B\x14a\x08HW\x80c\xF6\x98\xDA%\x14a\x08[W\x80c\xFA\xBC\x1C\xBC\x14a\x08cW\x80c\xFD\x8A\xA8\x8D\x14a\x08vW__\xFD[\x80c\xE4\xCC?\x90\x14a\x08\x02W\x80c\xEE\xA9\x06K\x14a\x08\x15W\x80c\xF0\xE0\xE6v\x14a\x08(W__\xFD[\x80c\xBF\xAE?\xD2\x14a\x07MW\x80c\xC4H\xFE\xB8\x14a\x07`W\x80c\xC9x\xF7\xAC\x14a\x07\x94W\x80c\xCA\x8A\xA7\xC7\x14a\x07\xB5W\x80c\xCDm\xC6\x87\x14a\x07\xDCW\x80c\xDA\x8B\xE8d\x14a\x07\xEFW__\xFD[\x80c\x91\x04\xC3\x19\x11a\x01OW\x80c\xA1x\x84\x84\x11a\x01*W\x80c\xA1x\x84\x84\x14a\x06\xCCW\x80c\xA3:43\x14a\x06\xEBW\x80c\xB7\xF0n\xBE\x14a\x06\xFEW\x80c\xBBE\xFE\xF2\x14a\x07 W__\xFD[\x80c\x91\x04\xC3\x19\x14a\x06~W\x80c\x945\xBBC\x14a\x06\x99W\x80c\x99\xF57\x1B\x14a\x06\xACW__\xFD[\x80cqP\x18\xA6\x14a\x05\xEEW\x80cw\x8EU\xF3\x14a\x05\xF6W\x80cx)n\xC5\x14a\x06 W\x80c\x88o\x11\x95\x14a\x063W\x80c\x8D\xA5\xCB[\x14a\x06ZW\x80c\x90\x04\x13G\x14a\x06kW__\xFD[\x80cT\xFDMP\x11a\x02QW\x80c]\xD6\x85y\x11a\x02\x0BW\x80ce\xDA\x12d\x11a\x01\xE6W\x80ce\xDA\x12d\x14a\x05\x7FW\x80cf\xD5\xBA\x93\x14a\x05\xA7W\x80cmp\xF7\xAE\x14a\x05\xC8W\x80cn\x17DH\x14a\x05\xDBW__\xFD[\x80c]\xD6\x85y\x14a\x058W\x80c`\x1B\xB3o\x14a\x05YW\x80c`\xA0\xD1\xCE\x14a\x05lW__\xFD[\x80cT\xFDMP\x14a\x04\xBCW\x80cY\\jg\x14a\x04\xD1W\x80cY{6\xDA\x14a\x04\xD9W\x80cZ\xC8j\xB7\x14a\x04\xECW\x80c\\\x97Z\xBB\x14a\x05\x0FW\x80c]\x97^\x88\x14a\x05\x17W__\xFD[\x80c9\xB7\x0E8\x11a\x02\xBCW\x80c>(9\x1D\x11a\x02\x97W\x80c>(9\x1D\x14a\x048W\x80cFW\xE2j\x14a\x04[W\x80cFe\xBC\xDA\x14a\x04\x82W\x80cT\xB7\xC9l\x14a\x04\xA9W__\xFD[\x80c9\xB7\x0E8\x14a\x03\xB8W\x80c<e\x1C\xF2\x14a\x03\xF7W\x80c<\xDE\xB5\xE0\x14a\x04\nW__\xFD[\x80c\x04\xA4\xF9y\x14a\x03\x03W\x80c\x0B\x9FHz\x14a\x03=W\x80c\r\xD8\xDD\x02\x14a\x03PW\x80c\x13d9\xDD\x14a\x03pW\x80c%\xDF\x92.\x14a\x03\x85W\x80c*\xA6\xD8\x88\x14a\x03\xA5W[__\xFD[a\x03*\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x03*a\x03K6`\x04aM?V[a\x08\x89V[a\x03ca\x03^6`\x04aM\xD6V[a\t\x11V[`@Qa\x034\x91\x90aN\x14V[a\x03\x83a\x03~6`\x04aNKV[a\x0B\xA2V[\0[a\x03\x98a\x03\x936`\x04aO\xE0V[a\x0CwV[`@Qa\x034\x91\x90aP\x8EV[a\x03\x83a\x03\xB36`\x04aP\xF0V[a\r\xD7V[a\x03\xDF\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\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x034V[a\x03\x83a\x04\x056`\x04aQNV[a\x0F+V[a\x03\xDFa\x04\x186`\x04aQ\x91V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x04Ka\x04F6`\x04aQ\x91V[a\x10~V[`@Q\x90\x15\x15\x81R` \x01a\x034V[a\x03\xDF\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\x81V[a\x03\xDF\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\x81V[a\x03\x83a\x04\xB76`\x04aQ\xACV[a\x10\x9DV[a\x04\xC4a\x11\x0BV[`@Qa\x034\x91\x90aR0V[a\x03\x83a\x11;V[a\x03*a\x04\xE76`\x04aR\xFEV[a\x11\xEAV[a\x04Ka\x04\xFA6`\x04aS/V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03*V[a\x05*a\x05%6`\x04aNKV[a\x12\x19V[`@Qa\x034\x92\x91\x90aT\x06V[a\x05Ka\x05F6`\x04aQ\x91V[a\x126V[`@Qa\x034\x92\x91\x90aTxV[a\x03\x83a\x05g6`\x04aT\xF9V[a\x13`V[a\x03\x83a\x05z6`\x04aURV[a\x14\xD8V[a\x03\xDFa\x05\x8D6`\x04aQ\x91V[`\x9A` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05\xBAa\x05\xB56`\x04aQ\x91V[a\x16\x83V[`@Qa\x034\x92\x91\x90aU\x91V[a\x04Ka\x05\xD66`\x04aQ\x91V[a\x19\x83V[a\x03*a\x05\xE96`\x04aQ\xACV[a\x19\xBBV[a\x03\x83a\x1AeV[a\x03*a\x06\x046`\x04aQ\xACV[`\x98` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\x83a\x06.6`\x04aU\xA3V[a\x1AvV[a\x03\xDF\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\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x03\xDFV[a\x03\x98a\x06y6`\x04aU\xF3V[a\x1B\x0CV[a\x03\xDFs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x03\x83a\x06\xA76`\x04aV?V[a\x1B\xE2V[a\x06\xBFa\x06\xBA6`\x04aNKV[a\x1C\xBBV[`@Qa\x034\x91\x90aV\xDBV[a\x03*a\x06\xDA6`\x04aQ\x91V[`\x9F` R_\x90\x81R`@\x90 T\x81V[a\x03ca\x06\xF96`\x04aV\xEDV[a\x1D\xD7V[a\x04Ka\x07\x0C6`\x04aNKV[`\x9E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x04Ka\x07.6`\x04aW\xD4V[`\x9C` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[a\x03*a\x07[6`\x04aQ\xACV[a\x1D\xEFV[`@Qc\xFF\xFF\xFF\xFF\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\x81R` \x01a\x034V[a\x07\xA7a\x07\xA26`\x04aU\xF3V[a\x1E+V[`@Qa\x034\x92\x91\x90aW\xFEV[a\x03\xDF\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\x81V[a\x03\x83a\x07\xEA6`\x04aW\xD4V[a \xB8V[a\x03ca\x07\xFD6`\x04aQ\x91V[a!\xD3V[a\x03\x83a\x08\x106`\x04aX\x1DV[a\"\xFCV[a\x03\x83a\x08#6`\x04aV\xEDV[a#RV[a\x08;a\x0866`\x04aX\x90V[a#\xBDV[`@Qa\x034\x91\x90aY=V[a\x03\x83a\x08V6`\x04aQ\x91V[a$bV[a\x03*a$\xDBV[a\x03\x83a\x08q6`\x04aNKV[a%\x94V[a\x03ca\x08\x846`\x04aQ\x91V[a&\xABV[`@\x80Q\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x80\x86\x16\x92\x82\x01\x92\x90\x92R\x81\x87\x16``\x82\x01R\x90\x85\x16`\x80\x82\x01R`\xA0\x81\x01\x83\x90R`\xC0\x81\x01\x82\x90R_\x90a\t\x07\x90`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a&\xCEV[\x96\x95PPPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x03a\t=W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\tEa&\xFCV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t^Wa\t^aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x87W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P3_\x90\x81R`\x9A` R`@\x81 T\x91\x92P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90[\x85\x81\x10\x15a\x0B\x93W\x86\x86\x82\x81\x81\x10a\t\xC1Wa\t\xC1aYOV[\x90P` \x02\x81\x01\x90a\t\xD3\x91\x90aYcV[a\t\xE1\x90` \x81\x01\x90aY\x81V[\x90P\x87\x87\x83\x81\x81\x10a\t\xF5Wa\t\xF5aYOV[\x90P` \x02\x81\x01\x90a\n\x07\x91\x90aYcV[a\n\x11\x90\x80aY\x81V[\x90P\x14a\n1W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\n\x9B3\x84\x8A\x8A\x86\x81\x81\x10a\nIWa\nIaYOV[\x90P` \x02\x81\x01\x90a\n[\x91\x90aYcV[a\ne\x90\x80aY\x81V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa'U\x92PPPV[\x90Pa\x0Bm3\x84\x8A\x8A\x86\x81\x81\x10a\n\xB4Wa\n\xB4aYOV[\x90P` \x02\x81\x01\x90a\n\xC6\x91\x90aYcV[a\n\xD0\x90\x80aY\x81V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RP\x8E\x92P\x8D\x91P\x88\x90P\x81\x81\x10a\x0B\x15Wa\x0B\x15aYOV[\x90P` \x02\x81\x01\x90a\x0B'\x91\x90aYcV[a\x0B5\x90` \x81\x01\x90aY\x81V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RP\x88\x92Pa(\xA7\x91PPV[\x84\x83\x81Q\x81\x10a\x0B\x7FWa\x0B\x7FaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\t\xA7V[PP`\x01`\xC9U\x94\x93PPPPV[`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R\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\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x04W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C(\x91\x90aY\xC6V[a\x0CEW`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`fT\x81\x81\x16\x81\x14a\x0CjW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0Cs\x82a.BV[PPV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x9A` R`@\x81 T``\x92\x16\x90a\x0C\xA0\x86\x83\x87a'UV[\x90P_\x85Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C\xBCWa\x0C\xBCaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\xE5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x86Q\x81\x10\x15a\r\xCAW`\x01`\x01`\xA0\x1B\x03\x88\x16_\x90\x81R`\xA2` R`@\x81 \x88Q\x82\x90\x8A\x90\x85\x90\x81\x10a\r Wa\r aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ `@Q\x80` \x01`@R\x90\x81_\x82\x01T\x81RPP\x90Pa\r\xA4\x87\x83\x81Q\x81\x10a\rrWa\rraYOV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a\r\x8CWa\r\x8CaYOV[` \x02` \x01\x01Q\x83a.\x7F\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x83\x83\x81Q\x81\x10a\r\xB6Wa\r\xB6aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\x0C\xEAV[P\x92PPP[\x93\x92PPPV[a\r\xDFa&\xFCV[a\r\xE83a\x10~V[\x15a\x0E\x06W`@Qc;\xF2\xB5\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Qc+bA\xF3`\xE1\x1B\x81R3`\x04\x82\x01Rc\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\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\x16\x90cV\xC4\x83\xE6\x90`D\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0EpW__\xFD[PZ\xF1\x15\x80\x15a\x0E\x82W=__>=_\xFD[PPPPa\x0E\x903\x85a.\x9DV[a\x0E\x9A33a.\xFFV[`@Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R3\x90\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x90` \x01`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x83\x83`@Qa\x0F\x13\x92\x91\x90aY\xE1V[`@Q\x80\x91\x03\x90\xA2a\x0F%`\x01`\xC9UV[PPPPV[3`\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\x0F\x8AWP3`\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[a\x0F\xA7W`@Qc\x04R\x06\xA5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xAFa&\xFCV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16_\x90\x81R`\x9A` R`@\x80\x82 T\x90Qc\x15&g\xD9`\xE3\x1B\x81R\x90\x83\x16`\x04\x82\x01\x81\x90R\x86\x84\x16`$\x83\x01R\x92\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\x90c\xA93>\xC8\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10/W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10S\x91\x90aZ\x0FV[\x90P_a\x10a\x87\x87\x84a1\xA6V[\x90Pa\x10q\x83\x88\x88\x88\x88\x86a2\x88V[PPPa\x0F%`\x01`\xC9UV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x9A` R`@\x90 T\x16\x15\x15\x90V[\x81a\x10\xA7\x81a3\xCDV[a\x10\xC4W`@Qc\x93-\x94\xF7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xCCa&\xFCV[a\x10\xD5\x83a\x19\x83V[a\x10\xF2W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xFC\x83\x83a.\x9DV[a\x11\x06`\x01`\xC9UV[PPPV[``a\x116\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\0a4wV[\x90P\x90V[`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R\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\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\x9DW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\xC1\x91\x90aY\xC6V[a\x11\xDEW`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xE8_\x19a.BV[V[_\x81`@Q` \x01a\x11\xFC\x91\x90aV\xDBV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x12!aL\0V[``a\x12,\x83a4\xB4V[\x90\x94\x90\x93P\x91PPV[``\x80_a\x12C\x84a&\xABV[\x80Q\x90\x91P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12`Wa\x12`aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\x99W\x81` \x01[a\x12\x86aL\0V[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12~W\x90P[P\x93P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xB4Wa\x12\xB4aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xE7W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12\xD2W\x90P[P\x92P_[\x81\x81\x10\x15a\x13XWa\x13\x16\x83\x82\x81Q\x81\x10a\x13\tWa\x13\taYOV[` \x02` \x01\x01Qa4\xB4V[\x86\x83\x81Q\x81\x10a\x13(Wa\x13(aYOV[` \x02` \x01\x01\x86\x84\x81Q\x81\x10a\x13AWa\x13AaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01\x91\x90\x91RR`\x01\x01a\x12\xECV[PPP\x91P\x91V[3`\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\x13\xA9W`@Qc#\xD8q\xA5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\xB1a&\xFCV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R\x90\x81 Ta\x13\xEF\x90`\x01`\x01`@\x1B\x03\x80\x86\x16\x90\x85\x16a7\x07V[\x90P_a\x13\xFE\x86\x86\x86\x86a7\x1FV[\x90P_a\x14\x0B\x82\x84aZ>V[\x90Pa\x14\x19\x87_\x88\x86a7\xDCV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x88\x81\x16\x82R` \x82\x01\x84\x90R\x89\x16\x91\x7F\xDDa\x1FN\xF6?C\x85\xF1ul\x86\xCE\x1F\x1F8\x9A\x90\x13\xBAo\xA0}\xAB\xA8R\x82\x91\xBC-<0\x91\x01`@Q\x80\x91\x03\x90\xA2_a\x14i\x87a8VV[`@Qc\xDE\xBE\x1E\xAB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R\x91\x92P\x90\x82\x16\x90c\xDE\xBE\x1E\xAB\x90`D\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x14\xB4W__\xFD[PZ\xF1\x15\x80\x15a\x14\xC6W=__>=_\xFD[PPPPPPPPa\x0F%`\x01`\xC9UV[3`\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\x15!W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15)a&\xFCV[a\x152\x83a\x10~V[\x15a\x10\xFCW`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x90\x81R`\x9A` R`@\x80\x82 T\x90Qc\x15&g\xD9`\xE3\x1B\x81R\x90\x83\x16`\x04\x82\x01\x81\x90Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R\x92\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\x90c\xA93>\xC8\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xC9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xED\x91\x90aZ\x0FV[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x84R\x82R\x80\x83 \x81Q\x92\x83\x01\x90\x91RT\x81R\x91\x92Pa\x16S\x86a\x16K`\x01`\x01`@\x1B\x03\x80\x87\x16\x90\x89\x16a8\xC8V[\x84\x91\x90a8\xDCV[\x90Pa\x16u\x84\x88s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x84a7\xDCV[PPPPa\x11\x06`\x01`\xC9UV[`@Qc\x94\xF6I\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91\x82\x91_\x91\x82\x91\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\x90c\x94\xF6I\xDD\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xEFW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x17\x16\x91\x90\x81\x01\x90aZ\xACV[`@Qc\xFE$:\x17`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R\x92\x94P\x90\x92P_\x91\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\x90c\xFE$:\x17\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\x9CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xC0\x91\x90a[gV[\x90P\x80_\x03a\x17\xD4WP\x90\x94\x90\x93P\x91PPV[_\x83Q`\x01a\x17\xE3\x91\x90aZ>V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFAWa\x17\xFAaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18#W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01a\x185\x91\x90aZ>V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18LWa\x18LaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18uW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82\x86Q\x81Q\x81\x10a\x18\xA0Wa\x18\xA0aYOV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x82\x81\x86Q\x81Q\x81\x10a\x18\xD4Wa\x18\xD4aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x85Q\x81\x10\x15a\x19uW\x85\x81\x81Q\x81\x10a\x18\xFCWa\x18\xFCaYOV[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x19\x16Wa\x19\x16aYOV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81\x81Q\x81\x10a\x19HWa\x19HaYOV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x19bWa\x19baYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x18\xE1V[P\x90\x97\x90\x96P\x94PPPPPV[_`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x19\xB5WP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[`@Qc\x15&g\xD9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R\x82\x81\x16`$\x83\x01R_\x91\x82\x91\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\x90c\xA93>\xC8\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A+W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AO\x91\x90aZ\x0FV[\x90Pa\x1A]\x84\x84\x83_a7\x1FV[\x94\x93PPPPV[a\x1Ama8\xFAV[a\x11\xE8_a9TV[\x82a\x1A\x80\x81a3\xCDV[a\x1A\x9DW`@Qc\x93-\x94\xF7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xA6\x84a\x19\x83V[a\x1A\xC3W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x84\x84`@Qa\x1A\xFE\x92\x91\x90aY\xE1V[`@Q\x80\x91\x03\x90\xA2PPPPV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1B(Wa\x1B(aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1BQW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1B\xDAW`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x98` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x1B\x8DWa\x1B\x8DaYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ T\x82\x82\x81Q\x81\x10a\x1B\xC7Wa\x1B\xC7aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1BVV[P\x93\x92PPPV[`fT`\x02\x90`\x04\x90\x81\x16\x03a\x1C\x0BW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\x13a&\xFCV[\x85_[\x81\x81\x10\x15a\x1C\xA6Wa\x1C\x9E\x89\x89\x83\x81\x81\x10a\x1C3Wa\x1C3aYOV[\x90P` \x02\x81\x01\x90a\x1CE\x91\x90a[~V[a\x1CN\x90a[\x92V[\x88\x88\x84\x81\x81\x10a\x1C`Wa\x1C`aYOV[\x90P` \x02\x81\x01\x90a\x1Cr\x91\x90aY\x81V[\x88\x88\x86\x81\x81\x10a\x1C\x84Wa\x1C\x84aYOV[\x90P` \x02\x01` \x81\x01\x90a\x1C\x99\x91\x90a[\x9DV[a9\xA5V[`\x01\x01a\x1C\x16V[PPa\x1C\xB2`\x01`\xC9UV[PPPPPPPV[a\x1C\xC3aL\0V[_\x82\x81R`\xA4` \x90\x81R`@\x91\x82\x90 \x82Q`\xE0\x81\x01\x84R\x81T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R`\x01\x83\x01T\x81\x16\x82\x85\x01R`\x02\x83\x01T\x16\x81\x85\x01R`\x03\x82\x01T``\x82\x01R`\x04\x82\x01Tc\xFF\xFF\xFF\xFF\x16`\x80\x82\x01R`\x05\x82\x01\x80T\x85Q\x81\x86\x02\x81\x01\x86\x01\x90\x96R\x80\x86R\x91\x94\x92\x93`\xA0\x86\x01\x93\x92\x90\x83\x01\x82\x82\x80\x15a\x1DqW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x1DSW[PPPPP\x81R` \x01`\x06\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x1D\xC7W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\x1D\xB3W[PPPPP\x81RPP\x90P\x91\x90PV[``a\x1D\xE23a!\xD3V[\x90Pa\r\xD0\x84\x84\x84a#RV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x81R\x82\x82 \x83Q\x91\x82\x01\x90\x93R\x91T\x82R\x90a\r\xD0\x90a=\xE7V[``\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EGWa\x1EGaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EpW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x8CWa\x1E\x8CaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\xB5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\x9A` R`@\x81 T\x92\x93P\x91\x16\x90a\x1E\xE0\x86\x83\x87a'UV[\x90P_[\x85Q\x81\x10\x15a \xADW_a\x1F\x10\x87\x83\x81Q\x81\x10a\x1F\x03Wa\x1F\x03aYOV[` \x02` \x01\x01Qa8VV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16c\xFE$:\x17\x89\x89\x85\x81Q\x81\x10a\x1F4Wa\x1F4aYOV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1Fn\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x89W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xAD\x91\x90a[gV[\x85\x83\x81Q\x81\x10a\x1F\xBFWa\x1F\xBFaYOV[` \x02` \x01\x01\x81\x81RPP_`\xA2_\x8A`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x89\x85\x81Q\x81\x10a \x02Wa \x02aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ `@Q\x80` \x01`@R\x90\x81_\x82\x01T\x81RPP\x90Pa \x86\x86\x84\x81Q\x81\x10a TWa TaYOV[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a nWa naYOV[` \x02` \x01\x01Q\x83a8\xDC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x87\x84\x81Q\x81\x10a \x98Wa \x98aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x1E\xE4V[PPP[\x92P\x92\x90PV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a \xD6WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a \xEFWP0;\x15\x80\x15a \xEFWP_T`\xFF\x16`\x01\x14[a!WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a!xW_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a!\x81\x82a.BV[a!\x8A\x83a9TV[\x80\x15a\x11\x06W_\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPV[``a!\xDDa&\xFCV[a!\xE6\x82a\x10~V[a\"\x03W`@Qc\xA5\xC7\xC4E`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\"\x0C\x82a\x19\x83V[\x15a\"*W`@Qc\x11\xCA35`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3`\x01`\x01`\xA0\x1B\x03\x83\x16\x14a\"\xE2W`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x9A` R`@\x90 T\x16a\"]\x81a3\xCDV[\x80a\"\x83WP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"\xA0W`@Qc\x1EI\x9A#`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\xF0\xED\xDF\x07\xE6\xEA\x14\xF3\x88\xB4~\x1E\x94\xA0\xF4d\xEC\xBD\x9E\xEDAq\x13\x0E\x0F\xC0\xE9\x9F\xB4\x03\n\x8A`@Q`@Q\x80\x91\x03\x90\xA3P[a\"\xEB\x82a>\x06V[\x90Pa\"\xF7`\x01`\xC9UV[\x91\x90PV[`fT`\x02\x90`\x04\x90\x81\x16\x03a#%W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#-a&\xFCV[a#Aa#9\x86a[\x92V[\x85\x85\x85a9\xA5V[a#K`\x01`\xC9UV[PPPPPV[a#Za&\xFCV[a#c3a\x10~V[\x15a#\x81W`@Qc;\xF2\xB5\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\x8A\x83a\x19\x83V[a#\xA7W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\xB33\x84\x84\x84a@eV[a\x10\xFC3\x84a.\xFFV[``_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xD9Wa#\xD9aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a$\x0CW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a#\xF7W\x90P[P\x90P_[\x84Q\x81\x10\x15a\x1B\xDAWa$=\x85\x82\x81Q\x81\x10a$/Wa$/aYOV[` \x02` \x01\x01Q\x85a\x1B\x0CV[\x82\x82\x81Q\x81\x10a$OWa$OaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a$\x11V[a$ja8\xFAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a$\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a!NV[a$\xD8\x81a9TV[PV[`@\x80Q\x80\x82\x01\x90\x91R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x90\x91\x01R_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEAa%HaA$V[\x80Q` \x91\x82\x01 `@\x80Q\x92\x83\x01\x94\x90\x94R\x92\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\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\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a%\xF0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a&\x14\x91\x90a[\xB8V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a&EW`@QcyH!\xFF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`fT\x80\x19\x82\x19\x81\x16\x14a&lW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`f\x82\x90U`@Q\x82\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01[`@Q\x80\x91\x03\x90\xA2PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xA3` R`@\x90 ``\x90a\x19\xB5\x90aA\xC0V[_a&\xD7a$\xDBV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01a\x11\xFCV[`\x02`\xC9T\x03a'NW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a!NV[`\x02`\xC9UV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a'qWa'qaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a'\x9AW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x16cTz\xFB\x87\x86\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a'\xEC\x92\x91\x90a[\xD3V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\x06W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(-\x91\x90\x81\x01\x90a[\xF6V[\x90P_[\x84Q\x81\x10\x15a(\x9CWa(w\x87\x86\x83\x81Q\x81\x10a(PWa(PaYOV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a(jWa(jaYOV[` \x02` \x01\x01Qa1\xA6V[\x83\x82\x81Q\x81\x10a(\x89Wa(\x89aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a(1V[P\x90\x95\x94PPPPPV[_`\x01`\x01`\xA0\x1B\x03\x86\x16a(\xCFW`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q_\x03a(\xF0W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a)\nWa)\naNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a)3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x85Q`\x01`\x01`@\x1B\x03\x81\x11\x15a)PWa)PaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a)yW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x86Q\x81\x10\x15a,uW_a)\x9D\x88\x83\x81Q\x81\x10a\x1F\x03Wa\x1F\x03aYOV[\x90P_`\xA2_\x8C`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x8A\x85\x81Q\x81\x10a)\xD6Wa)\xD6aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ \x90Pa*O\x88\x84\x81Q\x81\x10a*\x14Wa*\x14aYOV[` \x02` \x01\x01Q\x88\x85\x81Q\x81\x10a*.Wa*.aYOV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`@\x80Q\x92\x83\x01\x90R\x84T\x82R\x90\x91\x90a8\xDCV[\x84\x84\x81Q\x81\x10a*aWa*aaYOV[` \x02` \x01\x01\x81\x81RPPa*\xA0\x88\x84\x81Q\x81\x10a*\x82Wa*\x82aYOV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`@\x80Q\x92\x83\x01\x90R\x83T\x82RaA\xCCV[\x85\x84\x81Q\x81\x10a*\xB2Wa*\xB2aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01`\x01`\xA0\x1B\x03\x8A\x16\x15a+GWa+\t\x8A\x8A\x85\x81Q\x81\x10a*\xE2Wa*\xE2aYOV[` \x02` \x01\x01Q\x87\x86\x81Q\x81\x10a*\xFCWa*\xFCaYOV[` \x02` \x01\x01QaA\xE0V[a+G\x8A\x8C\x8B\x86\x81Q\x81\x10a+ Wa+ aYOV[` \x02` \x01\x01Q\x87\x87\x81Q\x81\x10a+:Wa+:aYOV[` \x02` \x01\x01Qa7\xDCV[_\x82`\x01`\x01`\xA0\x1B\x03\x16crJ\xF4#\x8D\x8C\x87\x81Q\x81\x10a+jWa+jaYOV[` \x02` \x01\x01Q\x8C\x88\x81Q\x81\x10a+\x84Wa+\x84aYOV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+\xAA\x93\x92\x91\x90a\\\x85V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a+\xC6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+\xEA\x91\x90a[gV[\x90P\x80_\x03a,gW_\x82U\x7F\x8B\xE92\xBA\xC5Ea\xF2r`\xF9Tc\xD9\xB8\xAB7\xE0k(B\xE5\xEE$\x04\x15|\xC1=\xF6\xEB\x8F\x8C\x8B\x86\x81Q\x81\x10a,*Wa,*aYOV[` \x02` \x01\x01Qa,O\x85`@Q\x80` \x01`@R\x90\x81_\x82\x01T\x81RPPa=\xE7V[`@Qa,^\x93\x92\x91\x90a\\\x85V[`@Q\x80\x91\x03\x90\xA1[PPP\x80`\x01\x01\x90Pa)~V[P`\x01`\x01`\xA0\x1B\x03\x88\x16_\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a,\x9C\x83a\\\xA9V[\x91\x90PUP_`@Q\x80`\xE0\x01`@R\x80\x8B`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x8A`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x8B`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x81R` \x01Cc\xFF\xFF\xFF\xFF\x16\x81R` \x01\x89\x81R` \x01\x85\x81RP\x90P_a-\x02\x82a\x11\xEAV[_\x81\x81R`\x9E` \x90\x81R`@\x80\x83 \x80T`\x01`\xFF\x19\x90\x91\x16\x81\x17\x90\x91U`\xA4\x83R\x92\x81\x90 \x86Q\x81T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x83U\x88\x85\x01Q\x95\x83\x01\x80T\x82\x16\x96\x83\x16\x96\x90\x96\x17\x90\x95U\x91\x87\x01Q`\x02\x82\x01\x80T\x90\x95\x16\x92\x16\x91\x90\x91\x17\x90\x92U``\x85\x01Q`\x03\x83\x01U`\x80\x85\x01Q`\x04\x83\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16c\xFF\xFF\xFF\xFF\x90\x92\x16\x91\x90\x91\x17\x90U`\xA0\x85\x01Q\x80Q\x93\x94P\x85\x93a-\xB8\x92`\x05\x85\x01\x92\x01\x90aLYV[P`\xC0\x82\x01Q\x80Qa-\xD4\x91`\x06\x84\x01\x91` \x90\x91\x01\x90aL\xBCV[PPP`\x01`\x01`\xA0\x1B\x03\x8B\x16_\x90\x81R`\xA3` R`@\x90 a-\xF8\x90\x82aBJV[P\x7F&\xB2\xAA\xE2e\x16\xE8q\x9E\xF5\x0E\xA2\xF6\x83\x1A.\xFB\xD4\xE3}\xCC\xDF\x0Fi6\xB2{\xC0\x8Ey>0\x81\x83\x86`@Qa.,\x93\x92\x91\x90a\\\xC1V[`@Q\x80\x91\x03\x90\xA1\x9A\x99PPPPPPPPPPV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2PV[_a\x1A]\x82a.\x97a.\x90\x87a=\xE7V[\x86\x90aBUV[\x90aBUV[`\x01`\x01`\xA0\x1B\x03\x82\x81\x16_\x81\x81R`\x99` \x90\x81R`@\x91\x82\x90 `\x01\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x94\x86\x16\x94\x85\x17\x90U\x90Q\x92\x83R\x90\x91\x7Fw;T\xC0Muo\xCC^g\x81\x11\xF7\xD70\xDE;\xE9\x81\x92\0\x07\x99\xEE\xE3\xD67\x16\x05Z\x87\xC6\x91\x01a&\x9FV[`fT_\x90`\x01\x90\x81\x16\x03a/'W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a/2\x85a\x16\x83V[\x91P\x91P_a/B_\x86\x85a'UV[`\x01`\x01`\xA0\x1B\x03\x87\x81\x16_\x81\x81R`\x9A` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x94\x8B\x16\x94\x85\x17\x90UQ\x93\x94P\x91\x92\x90\x91\x7F\xC3\xEE\x9F._\xDA\x98\xE8\x06j\x1Ft[-\xF9(_Ao\xE9\x8C\xF2U\x9C\xD2\x14\x84\xB3\xD8t3\x04\x91\xA3_[\x83Q\x81\x10\x15a\x1C\xB2Ws\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a/\xD5Wa/\xD5aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x03a1EW`@Qc\xA3\xD7^\t`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R_\x91\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\x90\x91\x16\x90c\xA3\xD7^\t\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a0SW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a0w\x91\x90aZ\x0FV[\x90P_`\xA2_\x8A`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x87\x85\x81Q\x81\x10a0\xB0Wa0\xB0aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ `@Q\x80` \x01`@R\x90\x81_\x82\x01T\x81RPP\x90Pa1$\x85\x84\x81Q\x81\x10a1\x02Wa1\x02aYOV[` \x02` \x01\x01Q\x83`\x01`\x01`@\x1B\x03\x16\x83a8\xDC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x85\x84\x81Q\x81\x10a16Wa16aYOV[` \x02` \x01\x01\x81\x81RPPPP[a1\x9E\x86\x88\x86\x84\x81Q\x81\x10a1\\Wa1\\aYOV[` \x02` \x01\x01Q_\x87\x86\x81Q\x81\x10a1wWa1waYOV[` \x02` \x01\x01Q\x87\x87\x81Q\x81\x10a1\x91Wa1\x91aYOV[` \x02` \x01\x01Qa2\x88V[`\x01\x01a/\x9CV[_s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xBF\x19`\x01`\x01`\xA0\x1B\x03\x84\x16\x01a2xW`@Qc\xA3\xD7^\t`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R_\x91\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\x90\x91\x16\x90c\xA3\xD7^\t\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a24W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a2X\x91\x90aZ\x0FV[\x90Pa2p`\x01`\x01`@\x1B\x03\x84\x81\x16\x90\x83\x16a8\xC8V[\x91PPa\r\xD0V[P`\x01`\x01`@\x1B\x03\x16\x92\x91PPV[\x80_\x03a2\xA8W`@Qc\n3\xBCi`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81\x15a3\xC5W`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R a2\xDE\x81\x85\x85\x85aBiV[`@\x80Q` \x81\x01\x90\x91R\x81T\x81R\x7F\x8B\xE92\xBA\xC5Ea\xF2r`\xF9Tc\xD9\xB8\xAB7\xE0k(B\xE5\xEE$\x04\x15|\xC1=\xF6\xEB\x8F\x90\x87\x90\x87\x90a3\x1C\x90a=\xE7V[`@Qa3+\x93\x92\x91\x90a\\\x85V[`@Q\x80\x91\x03\x90\xA1a3<\x86a\x10~V[\x15a\x1C\xB2W`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x89\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a3w\x90\x84\x90aZ>V[\x92PP\x81\x90UP\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\x1E\xC0B\xC9e\xE2\xED\xD7\x10{Q\x18\x8E\xE0\xF3\x83\xE2.v\x17\x90A\xAB:\x9D\x18\xFF\x15\x14\x05\x16l\x87\x87\x86`@Qa3\xBB\x93\x92\x91\x90a\\\x85V[`@Q\x80\x91\x03\x90\xA2P[PPPPPPV[`@Qc\x1B\xEB+\x97`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R3`$\x83\x01R0`D\x83\x01R_\x805`\x01`\x01`\xE0\x1B\x03\x19\x16`d\x84\x01R\x91\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\x90\x91\x16\x90c\xDFY\\\xB8\x90`\x84\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4SW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xB5\x91\x90aY\xC6V[``_a4\x83\x83aB\xE4V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[a4\xBCaL\0V[_\x82\x81R`\xA4` \x90\x81R`@\x91\x82\x90 \x82Q`\xE0\x81\x01\x84R\x81T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R`\x01\x83\x01T\x81\x16\x82\x85\x01R`\x02\x83\x01T\x16\x81\x85\x01R`\x03\x82\x01T``\x82\x81\x01\x91\x90\x91R`\x04\x83\x01Tc\xFF\xFF\xFF\xFF\x16`\x80\x83\x01R`\x05\x83\x01\x80T\x86Q\x81\x87\x02\x81\x01\x87\x01\x90\x97R\x80\x87R\x91\x95\x92\x94`\xA0\x86\x01\x93\x92\x90\x83\x01\x82\x82\x80\x15a5nW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a5PW[PPPPP\x81R` \x01`\x06\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a5\xC4W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a5\xB0W[PPPPP\x81RPP\x91P\x81`\xA0\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xECWa5\xECaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a6\x15W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x83`\x80\x01Qa6I\x91\x90a\\\xEBV[\x90P_Cc\xFF\xFF\xFF\xFF\x16\x82c\xFF\xFF\xFF\xFF\x16\x10a6zWa6u\x84_\x01Q\x85` \x01Q\x86`\xA0\x01Qa'UV[a6\x91V[a6\x91\x84_\x01Q\x85` \x01Q\x86`\xA0\x01Q\x85aC\x0BV[\x90P_[\x84`\xA0\x01QQ\x81\x10\x15a\x13XWa6\xE2\x85`\xC0\x01Q\x82\x81Q\x81\x10a6\xBBWa6\xBBaYOV[` \x02` \x01\x01Q\x83\x83\x81Q\x81\x10a6\xD5Wa6\xD5aYOV[` \x02` \x01\x01QaD9V[\x84\x82\x81Q\x81\x10a6\xF4Wa6\xF4aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a6\x95V[_a7\x15\x84\x83\x85`\x01aDDV[a\x1A]\x90\x85a]\x07V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R\x90\x81 \x81\x90a7P\x90aD\x9FV[\x90P_a7\xB6`\x01a7\x82\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\0Ca]\x1AV[a7\x8C\x91\x90a]\x1AV[`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x8C\x16\x83R\x92\x90R \x90aD\xB9V[\x90P_a7\xC3\x82\x84a]\x07V[\x90Pa7\xD0\x81\x87\x87aD\xD5V[\x98\x97PPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a8\x12\x90\x84\x90a]\x07V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7Fi\t`\x007\xB7]{G3\xAE\xDD\x81TB\xB5\xEC\x01\x8A\x82wQ\xC82\xAA\xFFd\xEB\xA5\xD6\xD2\xDD\x84\x84\x84`@Qa\x1A\xFE\x93\x92\x91\x90a\\\x85V[_`\x01`\x01`\xA0\x1B\x03\x82\x16s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x14a8\xA1W\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\0a\x19\xB5V[\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\x92\x91PPV[_a\r\xD0\x83\x83g\r\xE0\xB6\xB3\xA7d\0\0aD\xF3V[_a\x1A]\x82a8\xF4a8\xED\x87a=\xE7V[\x86\x90a8\xC8V[\x90a8\xC8V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a!NV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\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\xA3PPV[`\xA0\x84\x01QQ\x82\x14a9\xCAW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83`@\x01Q`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a:\0W`@Qc\x16\x11\r5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a:\n\x85a\x11\xEAV[_\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:;W`@Qc\x87\xC9\xD2\x19`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``_\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\x87`\x80\x01Qa:n\x91\x90a\\\xEBV[\x90P\x80c\xFF\xFF\xFF\xFF\x16Cc\xFF\xFF\xFF\xFF\x16\x11a:\x9CW`@Qcx\xF6z\xE1`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a:\xB3\x87_\x01Q\x88` \x01Q\x89`\xA0\x01Q\x84aC\x0BV[\x87Q`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\xA3` R`@\x90 \x90\x92Pa:\xD9\x91P\x83aE\xD8V[P_\x82\x81R`\xA4` R`@\x81 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x16\x82U`\x01\x82\x01\x80T\x82\x16\x90U`\x02\x82\x01\x80T\x90\x91\x16\x90U`\x03\x81\x01\x82\x90U`\x04\x81\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90U\x90a;0`\x05\x83\x01\x82aL\xF5V[a;=`\x06\x83\x01_aL\xF5V[PP_\x82\x81R`\x9E` R`@\x90\x81\x90 \x80T`\xFF\x19\x16\x90UQ\x7F\x1F@@\x08\x89'N\xD0{$\x84^PT\xA8z\x0C\xAB\x96\x9E\xB1'z\xAF\xE6\x1A\xE3R\xE7\xC3*\0\x90a;\x86\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA1\x85Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x9A` R`@\x81 T\x88Q`\xA0\x8A\x01Q\x91\x90\x93\x16\x92a;\xC0\x91\x84\x90a'UV[\x90P_[\x88`\xA0\x01QQ\x81\x10\x15a=\xDCW_a;\xEB\x8A`\xA0\x01Q\x83\x81Q\x81\x10a\x1F\x03Wa\x1F\x03aYOV[\x90P_a<!\x8B`\xC0\x01Q\x84\x81Q\x81\x10a<\x07Wa<\x07aYOV[` \x02` \x01\x01Q\x87\x85\x81Q\x81\x10a6\xD5Wa6\xD5aYOV[\x90P\x80_\x03a<1WPPa=\xD4V[\x87\x15a<\xFFW\x81`\x01`\x01`\xA0\x1B\x03\x16c.\xAEA\x8C\x8C_\x01Q\x8D`\xA0\x01Q\x86\x81Q\x81\x10a<`Wa<`aYOV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a<zWa<zaYOV[\x90P` \x02\x01` \x81\x01\x90a<\x8F\x91\x90aQ\x91V[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x91\x83\x16`$\x83\x01R\x90\x91\x16`D\x82\x01R`d\x81\x01\x84\x90R`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a<\xE4W__\xFD[PZ\xF1\x15\x80\x15a<\xF6W=__>=_\xFD[PPPPa=\xD1V[__\x83`\x01`\x01`\xA0\x1B\x03\x16cP\xFFr%\x8E_\x01Q\x8F`\xA0\x01Q\x88\x81Q\x81\x10a=*Wa=*aYOV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a=Q\x93\x92\x91\x90a\\\x85V[`@\x80Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a=lW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a=\x90\x91\x90a]6V[\x91P\x91Pa=\xCE\x87\x8E_\x01Q\x8F`\xA0\x01Q\x88\x81Q\x81\x10a=\xB2Wa=\xB2aYOV[` \x02` \x01\x01Q\x85\x85\x8B\x8B\x81Q\x81\x10a1\x91Wa1\x91aYOV[PP[PP[`\x01\x01a;\xC4V[PPPPPPPPPV[\x80Q_\x90\x15a=\xF7W\x81Qa\x19\xB5V[g\r\xE0\xB6\xB3\xA7d\0\0\x92\x91PPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x03a>2W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x81\x81R`\x9A` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x90\x91U\x90Q\x93\x16\x92\x83\x92\x91\x7F\xFE\xE3\tf\xA2V\xB7\x1E\x14\xBC\x0E\xBF\xC9C\x15\xE2\x8E\xF4\xA9zq1\xA9\xE2\xB7\xA3\x10\xA7:\xF4Fv\x91\xA3__a>\x91\x86a\x16\x83V[\x91P\x91P\x81Q_\x03a>\xA5WPPPa@_V[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xBEWa>\xBEaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a>\xE7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P_a>\xF6\x87\x85\x85a'UV[\x90P_[\x83Q\x81\x10\x15a@YW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x93P_\x92\x91P` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x93P_\x92\x91P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x86\x84\x81Q\x81\x10a?zWa?zaYOV[` \x02` \x01\x01Q\x83_\x81Q\x81\x10a?\x94Wa?\x94aYOV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x85\x84\x81Q\x81\x10a?\xC6Wa?\xC6aYOV[` \x02` \x01\x01Q\x82_\x81Q\x81\x10a?\xE0Wa?\xE0aYOV[` \x02` \x01\x01\x81\x81RPP\x84\x84\x81Q\x81\x10a?\xFEWa?\xFEaYOV[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a@\x18Wa@\x18aYOV[` \x02` \x01\x01\x81\x81RPPa@1\x8B\x89\x85\x85\x85a(\xA7V[\x8A\x85\x81Q\x81\x10a@CWa@CaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01RPPP`\x01\x01a>\xFAV[PPPPP[P\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80a@\x8DWPa\x0F%V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x90 T`\xFF\x16\x15a@\xD1W`@Qc\rLL\x91`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x85\x84R\x82R\x90\x91 \x80T`\xFF\x19\x16`\x01\x17\x90U\x83\x01Qa#K\x90\x82\x90aA\x18\x90\x88\x90\x88\x90\x84\x90\x88\x90a\x08\x89V[\x85Q` \x87\x01QaE\xE3V[``_aAP\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\0a4wV[\x90P\x80_\x81Q\x81\x10aAdWaAdaYOV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10aA\x82WaA\x82aYOV[\x01` \x90\x81\x01Q`@Q`\x01`\x01`\xF8\x1B\x03\x19\x93\x84\x16\x92\x81\x01\x92\x90\x92R\x91\x90\x91\x16`!\x82\x01R`\"\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[``_a\r\xD0\x83aF5V[_a\r\xD0aA\xD9\x84a=\xE7V[\x83\x90a8\xC8V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 aB\x0F\x90aD\x9FV[\x90Pa\x0F%CaB\x1F\x84\x84aZ>V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R \x91\x90aF\x8EV[_a\r\xD0\x83\x83aF\x99V[_a\r\xD0\x83g\r\xE0\xB6\xB3\xA7d\0\0\x84aD\xF3V[\x82_\x03aB\x95W`@\x80Q` \x81\x01\x90\x91R\x84T\x81RaB\x8E\x90\x82\x90a.\x97\x90a=\xE7V[\x84Ua\x0F%V[`@\x80Q` \x81\x01\x90\x91R\x84T\x81R_\x90aB\xB1\x90\x85\x84a8\xDCV[\x90P_aB\xBE\x84\x83aZ>V[\x90P_aB\xD9\x84a.\x97aB\xD2\x88\x8AaZ>V[\x85\x90aBUV[\x87UPPPPPPPV[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x19\xB5W`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15aC'WaC'aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15aCPW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x16c\x94\xD7\xD0\x0C\x87\x87\x87`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01aC\xA4\x93\x92\x91\x90a]XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aC\xBEW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@RaC\xE5\x91\x90\x81\x01\x90a[\xF6V[\x90P_[\x85Q\x81\x10\x15aD-WaD\x08\x88\x87\x83\x81Q\x81\x10a(PWa(PaYOV[\x83\x82\x81Q\x81\x10aD\x1AWaD\x1AaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01aC\xE9V[P\x90\x96\x95PPPPPPV[_a\r\xD0\x83\x83a8\xC8V[__aDQ\x86\x86\x86aD\xF3V[\x90P`\x01\x83`\x02\x81\x11\x15aDgWaDga]\x91V[\x14\x80\x15aD\x83WP_\x84\x80aD~WaD~a]\xA5V[\x86\x88\t\x11[\x15aD\x96WaD\x93`\x01\x82aZ>V[\x90P[\x95\x94PPPPPV[_aD\xAA\x82\x82aF\xE5V[`\x01`\x01`\xE0\x1B\x03\x16\x92\x91PPV[_aD\xC5\x83\x83\x83aG*V[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[_a\x1A]aD\xE3\x83\x85a]\xB9V[\x85\x90`\x01`\x01`@\x1B\x03\x16a8\xC8V[_\x80\x80_\x19\x85\x87\t\x85\x87\x02\x92P\x82\x81\x10\x83\x82\x03\x03\x91PP\x80_\x03aE*W\x83\x82\x81aE WaE a]\xA5V[\x04\x92PPPa\r\xD0V[\x80\x84\x11aEqW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01RtMath: mulDiv overflow`X\x1B`D\x82\x01R`d\x01a!NV[_\x84\x86\x88\t`\x02`\x01\x87\x19\x81\x01\x88\x16\x97\x88\x90\x04`\x03\x81\x02\x83\x18\x80\x82\x02\x84\x03\x02\x80\x82\x02\x84\x03\x02\x80\x82\x02\x84\x03\x02\x80\x82\x02\x84\x03\x02\x80\x82\x02\x84\x03\x02\x90\x81\x02\x90\x92\x03\x90\x91\x02_\x88\x90\x03\x88\x90\x04\x90\x91\x01\x85\x83\x11\x90\x94\x03\x93\x90\x93\x02\x93\x03\x94\x90\x94\x04\x91\x90\x91\x17\x02\x94\x93PPPPV[_a\r\xD0\x83\x83aGsV[B\x81\x10\x15aF\x04W`@Qc\x08\x19\xBD\xCD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[aF\x18`\x01`\x01`\xA0\x1B\x03\x85\x16\x84\x84aHVV[a\x0F%W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81_\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15aF\x82W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11aFnW[PPPPP\x90P\x91\x90PV[a\x11\x06\x83\x83\x83aH\xAAV[_\x81\x81R`\x01\x83\x01` R`@\x81 TaF\xDEWP\x81T`\x01\x81\x81\x01\x84U_\x84\x81R` \x80\x82 \x90\x93\x01\x84\x90U\x84T\x84\x82R\x82\x86\x01\x90\x93R`@\x90 \x91\x90\x91Ua\x19\xB5V[P_a\x19\xB5V[\x81T_\x90\x80\x15aG\"WaG\x0B\x84aF\xFE`\x01\x84a]\x07V[_\x91\x82R` \x90\x91 \x01\x90V[Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x1A]V[P\x90\x92\x91PPV[\x82T_\x90\x81aG;\x86\x86\x83\x85aI\xB0V[\x90P\x80\x15aGiWaGR\x86aF\xFE`\x01\x84a]\x07V[Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\t\x07V[P\x91\x94\x93PPPPV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x80\x15aHMW_aG\x95`\x01\x83a]\x07V[\x85T\x90\x91P_\x90aG\xA8\x90`\x01\x90a]\x07V[\x90P\x81\x81\x14aH\x07W_\x86_\x01\x82\x81T\x81\x10aG\xC6WaG\xC6aYOV[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10aG\xE6WaG\xE6aYOV[_\x91\x82R` \x80\x83 \x90\x91\x01\x92\x90\x92U\x91\x82R`\x01\x88\x01\x90R`@\x90 \x83\x90U[\x85T\x86\x90\x80aH\x18WaH\x18a]\xD8V[`\x01\x90\x03\x81\x81\x90_R` _ \x01_\x90U\x90U\x85`\x01\x01_\x86\x81R` \x01\x90\x81R` \x01_ _\x90U`\x01\x93PPPPa\x19\xB5V[_\x91PPa\x19\xB5V[___aHc\x85\x85aJ\x03V[\x90\x92P\x90P_\x81`\x04\x81\x11\x15aH{WaH{a]\x91V[\x14\x80\x15aH\x99WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x80a\t\x07WPa\t\x07\x86\x86\x86aJBV[\x82T\x80\x15aIbW_aH\xC2\x85aF\xFE`\x01\x85a]\x07V[`@\x80Q\x80\x82\x01\x90\x91R\x90Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x84Rd\x01\0\0\0\0\x90\x92\x04`\x01`\x01`\xE0\x1B\x03\x16` \x84\x01R\x91\x92P\x90\x85\x16\x10\x15aI\x15W`@Qc\x15\x1B\x8E?`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Qc\xFF\xFF\xFF\xFF\x80\x86\x16\x91\x16\x03aI`W\x82aI6\x86aF\xFE`\x01\x86a]\x07V[\x80T`\x01`\x01`\xE0\x1B\x03\x92\x90\x92\x16d\x01\0\0\0\0\x02c\xFF\xFF\xFF\xFF\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPV[P[P`@\x80Q\x80\x82\x01\x90\x91Rc\xFF\xFF\xFF\xFF\x92\x83\x16\x81R`\x01`\x01`\xE0\x1B\x03\x91\x82\x16` \x80\x83\x01\x91\x82R\x85T`\x01\x81\x01\x87U_\x96\x87R\x95 \x91Q\x90Q\x90\x92\x16d\x01\0\0\0\0\x02\x91\x90\x92\x16\x17\x91\x01UV[_[\x81\x83\x10\x15a\x1B\xDAW_aI\xC5\x84\x84aK)V[_\x87\x81R` \x90 \x90\x91Pc\xFF\xFF\xFF\xFF\x86\x16\x90\x82\x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15aI\xEFW\x80\x92PaI\xFDV[aI\xFA\x81`\x01aZ>V[\x93P[PaI\xB2V[__\x82Q`A\x03aJ7W` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1AaJ+\x87\x82\x85\x85aKCV[\x94P\x94PPPPa \xB1V[P_\x90P`\x02a \xB1V[___\x85`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x86\x86`@Q`$\x01aJj\x92\x91\x90a]\xECV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90QaJ\xA8\x91\x90a^\x04V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14aJ\xE0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>aJ\xE5V[``\x91P[P\x91P\x91P\x81\x80\x15aJ\xF9WP` \x81Q\x10\x15[\x80\x15a\t\x07WP\x80Qc\x0B\x13]?`\xE1\x1B\x90aK\x1E\x90\x83\x01` \x90\x81\x01\x90\x84\x01a[gV[\x14\x96\x95PPPPPPV[_aK7`\x02\x84\x84\x18a^\x15V[a\r\xD0\x90\x84\x84\x16aZ>V[_\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aKxWP_\x90P`\x03aK\xF7V[`@\x80Q_\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aK\xC9W=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aK\xF1W_`\x01\x92P\x92PPaK\xF7V[\x91P_\x90P[\x94P\x94\x92PPPV[`@Q\x80`\xE0\x01`@R\x80_`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01_`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01_`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01_\x81R` \x01_c\xFF\xFF\xFF\xFF\x16\x81R` \x01``\x81R` \x01``\x81RP\x90V[\x82\x80T\x82\x82U\x90_R` _ \x90\x81\x01\x92\x82\x15aL\xACW\x91` \x02\x82\x01[\x82\x81\x11\x15aL\xACW\x82Q\x82T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x17\x82U` \x90\x92\x01\x91`\x01\x90\x91\x01\x90aLwV[PaL\xB8\x92\x91PaM\x0CV[P\x90V[\x82\x80T\x82\x82U\x90_R` _ \x90\x81\x01\x92\x82\x15aL\xACW\x91` \x02\x82\x01[\x82\x81\x11\x15aL\xACW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90aL\xDAV[P\x80T_\x82U\x90_R` _ \x90\x81\x01\x90a$\xD8\x91\x90[[\x80\x82\x11\x15aL\xB8W_\x81U`\x01\x01aM\rV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a$\xD8W__\xFD[\x805a\"\xF7\x81aM V[_____`\xA0\x86\x88\x03\x12\x15aMSW__\xFD[\x855aM^\x81aM V[\x94P` \x86\x015aMn\x81aM V[\x93P`@\x86\x015aM~\x81aM V[\x94\x97\x93\x96P\x93\x94``\x81\x015\x94P`\x80\x015\x92\x91PPV[__\x83`\x1F\x84\x01\x12aM\xA6W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xBCW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a \xB1W__\xFD[__` \x83\x85\x03\x12\x15aM\xE7W__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xFCW__\xFD[aN\x08\x85\x82\x86\x01aM\x96V[\x90\x96\x90\x95P\x93PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a(\x9CW\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01aN-V[_` \x82\x84\x03\x12\x15aN[W__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aN\x98WaN\x98aNbV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aN\x98WaN\x98aNbV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aN\xE8WaN\xE8aNbV[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15aO\x08WaO\x08aNbV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12aO!W__\xFD[\x815aO4aO/\x82aN\xF0V[aN\xC0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aOUW__\xFD[` \x85\x01[\x83\x81\x10\x15aO{W\x805aOm\x81aM V[\x83R` \x92\x83\x01\x92\x01aOZV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12aO\x94W__\xFD[\x815aO\xA2aO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aO\xC3W__\xFD[` \x85\x01[\x83\x81\x10\x15aO{W\x805\x83R` \x92\x83\x01\x92\x01aO\xC8V[___``\x84\x86\x03\x12\x15aO\xF2W__\xFD[\x835aO\xFD\x81aM V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\x17W__\xFD[aP#\x86\x82\x87\x01aO\x12V[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP>W__\xFD[aPJ\x86\x82\x87\x01aO\x85V[\x91PP\x92P\x92P\x92V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15aP\x84W\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01aPfV[P\x93\x94\x93PPPPV[` \x81R_a\r\xD0` \x83\x01\x84aPTV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\"\xF7W__\xFD[__\x83`\x1F\x84\x01\x12aP\xC3W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xD9W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a \xB1W__\xFD[____``\x85\x87\x03\x12\x15aQ\x03W__\xFD[\x845aQ\x0E\x81aM V[\x93PaQ\x1C` \x86\x01aP\xA0V[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aQ6W__\xFD[aQB\x87\x82\x88\x01aP\xB3V[\x95\x98\x94\x97P\x95PPPPV[____`\x80\x85\x87\x03\x12\x15aQaW__\xFD[\x845aQl\x81aM V[\x93P` \x85\x015aQ|\x81aM V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[_` \x82\x84\x03\x12\x15aQ\xA1W__\xFD[\x815a\r\xD0\x81aM V[__`@\x83\x85\x03\x12\x15aQ\xBDW__\xFD[\x825aQ\xC8\x81aM V[\x91P` \x83\x015aQ\xD8\x81aM V[\x80\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15aQ\xFDW\x81\x81\x01Q\x83\x82\x01R` \x01aQ\xE5V[PP_\x91\x01RV[_\x81Q\x80\x84RaR\x1C\x81` \x86\x01` \x86\x01aQ\xE3V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\r\xD0` \x83\x01\x84aR\x05V[_`\xE0\x82\x84\x03\x12\x15aRRW__\xFD[aRZaNvV[\x90PaRe\x82aM4V[\x81RaRs` \x83\x01aM4V[` \x82\x01RaR\x84`@\x83\x01aM4V[`@\x82\x01R``\x82\x81\x015\x90\x82\x01RaR\x9F`\x80\x83\x01aP\xA0V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xBCW__\xFD[aR\xC8\x84\x82\x85\x01aO\x12V[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE6W__\xFD[aR\xF2\x84\x82\x85\x01aO\x85V[`\xC0\x83\x01RP\x92\x91PPV[_` \x82\x84\x03\x12\x15aS\x0EW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aS#W__\xFD[a\x1A]\x84\x82\x85\x01aRBV[_` \x82\x84\x03\x12\x15aS?W__\xFD[\x815`\xFF\x81\x16\x81\x14a\r\xD0W__\xFD[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15aP\x84W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01aSaV[\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x80\x83\x01Q\x82\x16\x90\x84\x01R`@\x80\x83\x01Q\x90\x91\x16\x90\x83\x01R``\x80\x82\x01Q\x90\x83\x01R`\x80\x80\x82\x01Q_\x91aS\xD3\x90\x85\x01\x82c\xFF\xFF\xFF\xFF\x16\x90RV[P`\xA0\x82\x01Q`\xE0`\xA0\x85\x01RaS\xED`\xE0\x85\x01\x82aSOV[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01RaD\x96\x82\x82aPTV[`@\x81R_aT\x18`@\x83\x01\x85aS\x88V[\x82\x81\x03` \x84\x01RaD\x96\x81\x85aPTV[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15aD-W`\x1F\x19\x85\x84\x03\x01\x88RaTb\x83\x83QaPTV[` \x98\x89\x01\x98\x90\x93P\x91\x90\x91\x01\x90`\x01\x01aTFV[_`@\x82\x01`@\x83R\x80\x85Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15aT\xCFW`_\x19\x87\x86\x03\x01\x84RaT\xBA\x85\x83QaS\x88V[\x94P` \x93\x84\x01\x93\x91\x90\x91\x01\x90`\x01\x01aT\x9EV[PPPP\x82\x81\x03` \x84\x01RaD\x96\x81\x85aT*V[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a$\xD8W__\xFD[____`\x80\x85\x87\x03\x12\x15aU\x0CW__\xFD[\x845aU\x17\x81aM V[\x93P` \x85\x015aU'\x81aM V[\x92P`@\x85\x015aU7\x81aT\xE5V[\x91P``\x85\x015aUG\x81aT\xE5V[\x93\x96\x92\x95P\x90\x93PPV[___``\x84\x86\x03\x12\x15aUdW__\xFD[\x835aUo\x81aM V[\x92P` \x84\x015\x91P`@\x84\x015aU\x86\x81aT\xE5V[\x80\x91PP\x92P\x92P\x92V[`@\x81R_aT\x18`@\x83\x01\x85aSOV[___`@\x84\x86\x03\x12\x15aU\xB5W__\xFD[\x835aU\xC0\x81aM V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aU\xDAW__\xFD[aU\xE6\x86\x82\x87\x01aP\xB3V[\x94\x97\x90\x96P\x93\x94PPPPV[__`@\x83\x85\x03\x12\x15aV\x04W__\xFD[\x825aV\x0F\x81aM V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV)W__\xFD[aV5\x85\x82\x86\x01aO\x12V[\x91PP\x92P\x92\x90PV[______``\x87\x89\x03\x12\x15aVTW__\xFD[\x865`\x01`\x01`@\x1B\x03\x81\x11\x15aViW__\xFD[aVu\x89\x82\x8A\x01aM\x96V[\x90\x97P\x95PP` \x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV\x93W__\xFD[aV\x9F\x89\x82\x8A\x01aM\x96V[\x90\x95P\x93PP`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV\xBDW__\xFD[aV\xC9\x89\x82\x8A\x01aM\x96V[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[` \x81R_a\r\xD0` \x83\x01\x84aS\x88V[___``\x84\x86\x03\x12\x15aV\xFFW__\xFD[\x835aW\n\x81aM V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aW$W__\xFD[\x84\x01`@\x81\x87\x03\x12\x15aW5W__\xFD[aW=aN\x9EV[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aWRW__\xFD[\x82\x01`\x1F\x81\x01\x88\x13aWbW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aW{WaW{aNbV[aW\x8E`\x1F\x82\x01`\x1F\x19\x16` \x01aN\xC0V[\x81\x81R\x89` \x83\x85\x01\x01\x11\x15aW\xA2W__\xFD[\x81` \x84\x01` \x83\x017_` \x92\x82\x01\x83\x01R\x83R\x92\x83\x015\x92\x82\x01\x92\x90\x92R\x93\x96\x93\x95PPPP`@\x91\x90\x91\x015\x90V[__`@\x83\x85\x03\x12\x15aW\xE5W__\xFD[\x825aW\xF0\x81aM V[\x94` \x93\x90\x93\x015\x93PPPV[`@\x81R_aT\x18`@\x83\x01\x85aPTV[\x80\x15\x15\x81\x14a$\xD8W__\xFD[____``\x85\x87\x03\x12\x15aX0W__\xFD[\x845`\x01`\x01`@\x1B\x03\x81\x11\x15aXEW__\xFD[\x85\x01`\xE0\x81\x88\x03\x12\x15aXVW__\xFD[\x93P` \x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aXpW__\xFD[aX|\x87\x82\x88\x01aM\x96V[\x90\x94P\x92PP`@\x85\x015aUG\x81aX\x10V[__`@\x83\x85\x03\x12\x15aX\xA1W__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aX\xB6W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13aX\xC6W__\xFD[\x805aX\xD4aO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15aX\xF5W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aY W\x835aY\x0F\x81aM V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90aX\xFCV[\x94PPPP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV)W__\xFD[` \x81R_a\r\xD0` \x83\x01\x84aT*V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x825`^\x19\x836\x03\x01\x81\x12aYwW__\xFD[\x91\x90\x91\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12aY\x96W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aY\xAFW__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a \xB1W__\xFD[_` \x82\x84\x03\x12\x15aY\xD6W__\xFD[\x81Qa\r\xD0\x81aX\x10V[` \x81R\x81` \x82\x01R\x81\x83`@\x83\x017_\x81\x83\x01`@\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x91\x90PV[_` \x82\x84\x03\x12\x15aZ\x1FW__\xFD[\x81Qa\r\xD0\x81aT\xE5V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[_\x82`\x1F\x83\x01\x12aZ`W__\xFD[\x81QaZnaO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aZ\x8FW__\xFD[` \x85\x01[\x83\x81\x10\x15aO{W\x80Q\x83R` \x92\x83\x01\x92\x01aZ\x94V[__`@\x83\x85\x03\x12\x15aZ\xBDW__\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15aZ\xD2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13aZ\xE2W__\xFD[\x80QaZ\xF0aO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a[\x11W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a[<W\x83Qa[+\x81aM V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a[\x18V[\x80\x95PPPPP` \x83\x01Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[[W__\xFD[aV5\x85\x82\x86\x01aZQV[_` \x82\x84\x03\x12\x15a[wW__\xFD[PQ\x91\x90PV[_\x825`\xDE\x19\x836\x03\x01\x81\x12aYwW__\xFD[_a\x19\xB56\x83aRBV[_` \x82\x84\x03\x12\x15a[\xADW__\xFD[\x815a\r\xD0\x81aX\x10V[_` \x82\x84\x03\x12\x15a[\xC8W__\xFD[\x81Qa\r\xD0\x81aM V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R_\x90a\x1A]\x90\x83\x01\x84aSOV[_` \x82\x84\x03\x12\x15a\\\x06W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\x1BW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\\+W__\xFD[\x80Qa\\9aO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\\ZW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\t\x07W\x83Qa\\t\x81aT\xE5V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\\aV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[_`\x01\x82\x01a\\\xBAWa\\\xBAaZ*V[P`\x01\x01\x90V[\x83\x81R``` \x82\x01R_a\\\xD9``\x83\x01\x85aS\x88V[\x82\x81\x03`@\x84\x01Ra\t\x07\x81\x85aPTV[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[\x81\x81\x03\x81\x81\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[__`@\x83\x85\x03\x12\x15a]GW__\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R``` \x82\x01\x81\x90R_\x90a]{\x90\x83\x01\x85aSOV[\x90Pc\xFF\xFF\xFF\xFF\x83\x16`@\x83\x01R\x94\x93PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[\x82\x81R`@` \x82\x01R_a\x1A]`@\x83\x01\x84aR\x05V[_\x82QaYw\x81\x84` \x87\x01aQ\xE3V[_\x82a^/WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \xAD{\x0BY\x11\x02\x1F\xA3\xEF8T\xA4\x85>\x9E\x1F5\xBAr\xED\x89=9\xC5\x9F\x87M\xE9@!X\xFCdsolcC\0\x08\x1B\x003",
3088    );
3089    /// The runtime bytecode of the contract, as deployed on the network.
3090    ///
3091    /// ```text
3092    ///0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615230565b61038361113b565b61032a6104e73660046152fe565b6111ea565b61044b6104fa36600461532f565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b604051610334929190615406565b61054b610546366004615191565b611236565b604051610334929190615478565b6103836105673660046154f9565b611360565b61038361057a366004615552565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615591565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e3660046155a3565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155f3565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a736600461563f565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156db565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ed565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157d4565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155f3565b611e2b565b6040516103349291906157fe565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157d4565b6120b8565b6103636107fd366004615191565b6121d3565b61038361081036600461581d565b6122fc565b6103836108233660046156ed565b612352565b61083b610836366004615890565b6123bd565b604051610334919061593d565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c161594f565b90506020028101906109d39190615963565b6109e1906020810190615981565b90508787838181106109f5576109f561594f565b9050602002810190610a079190615963565b610a119080615981565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a4961594f565b9050602002810190610a5b9190615963565b610a659080615981565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab461594f565b9050602002810190610ac69190615963565b610ad09080615981565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b1561594f565b9050602002810190610b279190615963565b610b35906020810190615981565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f61594f565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159c6565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d2061594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d7261594f565b6020026020010151858481518110610d8c57610d8c61594f565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db661594f565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159e1565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110539190615a0f565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159c6565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156db565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b81811015611358576113168382815181106113095761130961594f565b60200260200101516134b4565b8683815181106113285761132861594f565b602002602001018684815181106113415761134161594f565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a3e565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed9190615a0f565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615aac565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b67565b9050805f036117d457509094909350915050565b5f835160016117e39190615a3e565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a3e565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a061594f565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d461594f565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc61594f565b60200260200101518382815181106119165761191661594f565b60200260200101906001600160a01b031690816001600160a01b0316815250508481815181106119485761194861594f565b60200260200101518282815181106119625761196261594f565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f9190615a0f565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159e1565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d61594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc761594f565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c3361594f565b9050602002810190611c459190615b7e565b611c4e90615b92565b888884818110611c6057611c6061594f565b9050602002810190611c729190615981565b888886818110611c8457611c8461594f565b9050602002016020810190611c999190615b9d565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f0361594f565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f3461594f565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b67565b858381518110611fbf57611fbf61594f565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8985815181106120025761200261594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f8201548152505090506120868684815181106120545761205461594f565b602002602001015185858151811061206e5761206e61594f565b6020026020010151836138dc9092919063ffffffff16565b8784815181106120985761209861594f565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b92565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f61594f565b602002602001015185611b0c565b82828151811061244f5761244f61594f565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615bb8565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bd3565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bf6565b90505f5b845181101561289c57612877878683815181106128505761285061594f565b602002602001015184848151811061286a5761286a61594f565b60200260200101516131a6565b8382815181106128895761288961594f565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f0361594f565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d661594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a1461594f565b6020026020010151888581518110612a2e57612a2e61594f565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a6161594f565b602002602001018181525050612aa0888481518110612a8257612a8261594f565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab261594f565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae261594f565b6020026020010151878681518110612afc57612afc61594f565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b2061594f565b6020026020010151878781518110612b3a57612b3a61594f565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a61594f565b60200260200101518c8881518110612b8457612b8461594f565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c85565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b67565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a61594f565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c85565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615ca9565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615cc1565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd561594f565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130779190615a0f565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b061594f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f8201548152505090506131248584815181106131025761310261594f565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b8584815181106131365761313661594f565b60200260200101818152505050505b61319e868886848151811061315c5761315c61594f565b60200260200101515f8786815181106131775761317761594f565b60200260200101518787815181106131915761319161594f565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132589190615a0f565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c85565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a3e565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c85565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159c6565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ceb565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb61594f565b60200260200101518383815181106136d5576136d561594f565b6020026020010151614439565b8482815181106136f4576136f461594f565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615d07565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615d1a565b61378c9190615d1a565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615d07565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615d07565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c85565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ceb565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f0361594f565b90505f613c218b60c001518481518110613c0757613c0761594f565b60200260200101518785815181106136d5576136d561594f565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c6061594f565b60200260200101518d8d88818110613c7a57613c7a61594f565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a61594f565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c85565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d36565b91509150613dce878e5f01518f60a001518881518110613db257613db261594f565b602002602001015185858b8b815181106131915761319161594f565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a61594f565b6020026020010151835f81518110613f9457613f9461594f565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc661594f565b6020026020010151825f81518110613fe057613fe061594f565b602002602001018181525050848481518110613ffe57613ffe61594f565b6020026020010151815f815181106140185761401861594f565b6020026020010181815250506140318b898585856128a7565b8a85815181106140435761404361594f565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f815181106141645761416461594f565b602001015160f81c60f81b816001815181106141825761418261594f565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a3e565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a3e565b90505f6142d984612e976142d2888a615a3e565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d58565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bf6565b90505f5b855181101561442d57614408888783815181106128505761285061594f565b83828151811061441a5761441a61594f565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d91565b14801561448357505f848061447e5761447e615da5565b868809115b1561449657614493600182615a3e565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615db9565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615da5565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615d07565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615d07565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615d07565b85549091505f906147a890600190615d07565b9050818114614807575f865f0182815481106147c6576147c661594f565b905f5260205f200154905080875f0184815481106147e6576147e661594f565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615dd8565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d91565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615d07565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615d07565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a3e565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dec565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615e04565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b67565b149695505050505050565b5f614b376002848418615e15565b610dd090848416615a3e565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f5b838110156151fd5781810151838201526020016151e5565b50505f910152565b5f815180845261521c8160208601602086016151e3565b601f01601f19169290920160200192915050565b602081525f610dd06020830184615205565b5f60e08284031215615252575f5ffd5b61525a614e76565b905061526582614d34565b815261527360208301614d34565b602082015261528460408301614d34565b60408201526060828101359082015261529f608083016150a0565b608082015260a08201356001600160401b038111156152bc575f5ffd5b6152c884828501614f12565b60a08301525060c08201356001600160401b038111156152e6575f5ffd5b6152f284828501614f85565b60c08301525092915050565b5f6020828403121561530e575f5ffd5b81356001600160401b03811115615323575f5ffd5b611a5d84828501615242565b5f6020828403121561533f575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615361565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153d39085018263ffffffff169052565b5060a082015160e060a08501526153ed60e085018261534f565b905060c083015184820360c08601526144968282615054565b604081525f6154186040830185615388565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615462838351615054565b6020988901989093509190910190600101615446565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154cf57605f198786030184526154ba858351615388565b9450602093840193919091019060010161549e565b505050508281036020840152614496818561542a565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f6080858703121561550c575f5ffd5b843561551781614d20565b9350602085013561552781614d20565b92506040850135615537816154e5565b91506060850135615547816154e5565b939692955090935050565b5f5f5f60608486031215615564575f5ffd5b833561556f81614d20565b9250602084013591506040840135615586816154e5565b809150509250925092565b604081525f615418604083018561534f565b5f5f5f604084860312156155b5575f5ffd5b83356155c081614d20565b925060208401356001600160401b038111156155da575f5ffd5b6155e6868287016150b3565b9497909650939450505050565b5f5f60408385031215615604575f5ffd5b823561560f81614d20565b915060208301356001600160401b03811115615629575f5ffd5b61563585828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615654575f5ffd5b86356001600160401b03811115615669575f5ffd5b61567589828a01614d96565b90975095505060208701356001600160401b03811115615693575f5ffd5b61569f89828a01614d96565b90955093505060408701356001600160401b038111156156bd575f5ffd5b6156c989828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615388565b5f5f5f606084860312156156ff575f5ffd5b833561570a81614d20565b925060208401356001600160401b03811115615724575f5ffd5b840160408187031215615735575f5ffd5b61573d614e9e565b81356001600160401b03811115615752575f5ffd5b8201601f81018813615762575f5ffd5b80356001600160401b0381111561577b5761577b614e62565b61578e601f8201601f1916602001614ec0565b8181528960208385010111156157a2575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157e5575f5ffd5b82356157f081614d20565b946020939093013593505050565b604081525f6154186040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615830575f5ffd5b84356001600160401b03811115615845575f5ffd5b850160e08188031215615856575f5ffd5b935060208501356001600160401b03811115615870575f5ffd5b61587c87828801614d96565b909450925050604085013561554781615810565b5f5f604083850312156158a1575f5ffd5b82356001600160401b038111156158b6575f5ffd5b8301601f810185136158c6575f5ffd5b80356158d4614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158f5575f5ffd5b6020840193505b8284101561592057833561590f81614d20565b8252602093840193909101906158fc565b945050505060208301356001600160401b03811115615629575f5ffd5b602081525f610dd0602083018461542a565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615977575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615996575f5ffd5b8301803591506001600160401b038211156159af575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159d6575f5ffd5b8151610dd081615810565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a1f575f5ffd5b8151610dd0816154e5565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a2a565b5f82601f830112615a60575f5ffd5b8151615a6e614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a8f575f5ffd5b602085015b83811015614f7b578051835260209283019201615a94565b5f5f60408385031215615abd575f5ffd5b82516001600160401b03811115615ad2575f5ffd5b8301601f81018513615ae2575f5ffd5b8051615af0614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615b11575f5ffd5b6020840193505b82841015615b3c578351615b2b81614d20565b825260209384019390910190615b18565b8095505050505060208301516001600160401b03811115615b5b575f5ffd5b61563585828601615a51565b5f60208284031215615b77575f5ffd5b5051919050565b5f823560de19833603018112615977575f5ffd5b5f6119b53683615242565b5f60208284031215615bad575f5ffd5b8135610dd081615810565b5f60208284031215615bc8575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d9083018461534f565b5f60208284031215615c06575f5ffd5b81516001600160401b03811115615c1b575f5ffd5b8201601f81018413615c2b575f5ffd5b8051615c39614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c5a575f5ffd5b6020840193505b82841015610907578351615c74816154e5565b825260209384019390910190615c61565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615cba57615cba615a2a565b5060010190565b838152606060208201525f615cd96060830185615388565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a2a565b818103818111156119b5576119b5615a2a565b63ffffffff82811682821603908111156119b5576119b5615a2a565b5f5f60408385031215615d47575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d7b9083018561534f565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a2a565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d6040830184615205565b5f82516159778184602087016151e3565b5f82615e2f57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220ad7b0b5911021fa3ef3854a4853e9e1f35ba72ed893d39c59f874de9402158fc64736f6c634300081b0033
3093    /// ```
3094    #[rustfmt::skip]
3095    #[allow(clippy::all)]
3096    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3097        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\xFFW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x95W\x80c\xBF\xAE?\xD2\x11a\0\xE4W\x80c\xE4\xCC?\x90\x11a\0\x9EW\x80c\xF2\xFD\xE3\x8B\x11a\0yW\x80c\xF2\xFD\xE3\x8B\x14a\x08HW\x80c\xF6\x98\xDA%\x14a\x08[W\x80c\xFA\xBC\x1C\xBC\x14a\x08cW\x80c\xFD\x8A\xA8\x8D\x14a\x08vW__\xFD[\x80c\xE4\xCC?\x90\x14a\x08\x02W\x80c\xEE\xA9\x06K\x14a\x08\x15W\x80c\xF0\xE0\xE6v\x14a\x08(W__\xFD[\x80c\xBF\xAE?\xD2\x14a\x07MW\x80c\xC4H\xFE\xB8\x14a\x07`W\x80c\xC9x\xF7\xAC\x14a\x07\x94W\x80c\xCA\x8A\xA7\xC7\x14a\x07\xB5W\x80c\xCDm\xC6\x87\x14a\x07\xDCW\x80c\xDA\x8B\xE8d\x14a\x07\xEFW__\xFD[\x80c\x91\x04\xC3\x19\x11a\x01OW\x80c\xA1x\x84\x84\x11a\x01*W\x80c\xA1x\x84\x84\x14a\x06\xCCW\x80c\xA3:43\x14a\x06\xEBW\x80c\xB7\xF0n\xBE\x14a\x06\xFEW\x80c\xBBE\xFE\xF2\x14a\x07 W__\xFD[\x80c\x91\x04\xC3\x19\x14a\x06~W\x80c\x945\xBBC\x14a\x06\x99W\x80c\x99\xF57\x1B\x14a\x06\xACW__\xFD[\x80cqP\x18\xA6\x14a\x05\xEEW\x80cw\x8EU\xF3\x14a\x05\xF6W\x80cx)n\xC5\x14a\x06 W\x80c\x88o\x11\x95\x14a\x063W\x80c\x8D\xA5\xCB[\x14a\x06ZW\x80c\x90\x04\x13G\x14a\x06kW__\xFD[\x80cT\xFDMP\x11a\x02QW\x80c]\xD6\x85y\x11a\x02\x0BW\x80ce\xDA\x12d\x11a\x01\xE6W\x80ce\xDA\x12d\x14a\x05\x7FW\x80cf\xD5\xBA\x93\x14a\x05\xA7W\x80cmp\xF7\xAE\x14a\x05\xC8W\x80cn\x17DH\x14a\x05\xDBW__\xFD[\x80c]\xD6\x85y\x14a\x058W\x80c`\x1B\xB3o\x14a\x05YW\x80c`\xA0\xD1\xCE\x14a\x05lW__\xFD[\x80cT\xFDMP\x14a\x04\xBCW\x80cY\\jg\x14a\x04\xD1W\x80cY{6\xDA\x14a\x04\xD9W\x80cZ\xC8j\xB7\x14a\x04\xECW\x80c\\\x97Z\xBB\x14a\x05\x0FW\x80c]\x97^\x88\x14a\x05\x17W__\xFD[\x80c9\xB7\x0E8\x11a\x02\xBCW\x80c>(9\x1D\x11a\x02\x97W\x80c>(9\x1D\x14a\x048W\x80cFW\xE2j\x14a\x04[W\x80cFe\xBC\xDA\x14a\x04\x82W\x80cT\xB7\xC9l\x14a\x04\xA9W__\xFD[\x80c9\xB7\x0E8\x14a\x03\xB8W\x80c<e\x1C\xF2\x14a\x03\xF7W\x80c<\xDE\xB5\xE0\x14a\x04\nW__\xFD[\x80c\x04\xA4\xF9y\x14a\x03\x03W\x80c\x0B\x9FHz\x14a\x03=W\x80c\r\xD8\xDD\x02\x14a\x03PW\x80c\x13d9\xDD\x14a\x03pW\x80c%\xDF\x92.\x14a\x03\x85W\x80c*\xA6\xD8\x88\x14a\x03\xA5W[__\xFD[a\x03*\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x03*a\x03K6`\x04aM?V[a\x08\x89V[a\x03ca\x03^6`\x04aM\xD6V[a\t\x11V[`@Qa\x034\x91\x90aN\x14V[a\x03\x83a\x03~6`\x04aNKV[a\x0B\xA2V[\0[a\x03\x98a\x03\x936`\x04aO\xE0V[a\x0CwV[`@Qa\x034\x91\x90aP\x8EV[a\x03\x83a\x03\xB36`\x04aP\xF0V[a\r\xD7V[a\x03\xDF\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\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x034V[a\x03\x83a\x04\x056`\x04aQNV[a\x0F+V[a\x03\xDFa\x04\x186`\x04aQ\x91V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x04Ka\x04F6`\x04aQ\x91V[a\x10~V[`@Q\x90\x15\x15\x81R` \x01a\x034V[a\x03\xDF\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\x81V[a\x03\xDF\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\x81V[a\x03\x83a\x04\xB76`\x04aQ\xACV[a\x10\x9DV[a\x04\xC4a\x11\x0BV[`@Qa\x034\x91\x90aR0V[a\x03\x83a\x11;V[a\x03*a\x04\xE76`\x04aR\xFEV[a\x11\xEAV[a\x04Ka\x04\xFA6`\x04aS/V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03*V[a\x05*a\x05%6`\x04aNKV[a\x12\x19V[`@Qa\x034\x92\x91\x90aT\x06V[a\x05Ka\x05F6`\x04aQ\x91V[a\x126V[`@Qa\x034\x92\x91\x90aTxV[a\x03\x83a\x05g6`\x04aT\xF9V[a\x13`V[a\x03\x83a\x05z6`\x04aURV[a\x14\xD8V[a\x03\xDFa\x05\x8D6`\x04aQ\x91V[`\x9A` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05\xBAa\x05\xB56`\x04aQ\x91V[a\x16\x83V[`@Qa\x034\x92\x91\x90aU\x91V[a\x04Ka\x05\xD66`\x04aQ\x91V[a\x19\x83V[a\x03*a\x05\xE96`\x04aQ\xACV[a\x19\xBBV[a\x03\x83a\x1AeV[a\x03*a\x06\x046`\x04aQ\xACV[`\x98` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\x83a\x06.6`\x04aU\xA3V[a\x1AvV[a\x03\xDF\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\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x03\xDFV[a\x03\x98a\x06y6`\x04aU\xF3V[a\x1B\x0CV[a\x03\xDFs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x03\x83a\x06\xA76`\x04aV?V[a\x1B\xE2V[a\x06\xBFa\x06\xBA6`\x04aNKV[a\x1C\xBBV[`@Qa\x034\x91\x90aV\xDBV[a\x03*a\x06\xDA6`\x04aQ\x91V[`\x9F` R_\x90\x81R`@\x90 T\x81V[a\x03ca\x06\xF96`\x04aV\xEDV[a\x1D\xD7V[a\x04Ka\x07\x0C6`\x04aNKV[`\x9E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x04Ka\x07.6`\x04aW\xD4V[`\x9C` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[a\x03*a\x07[6`\x04aQ\xACV[a\x1D\xEFV[`@Qc\xFF\xFF\xFF\xFF\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\x81R` \x01a\x034V[a\x07\xA7a\x07\xA26`\x04aU\xF3V[a\x1E+V[`@Qa\x034\x92\x91\x90aW\xFEV[a\x03\xDF\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\x81V[a\x03\x83a\x07\xEA6`\x04aW\xD4V[a \xB8V[a\x03ca\x07\xFD6`\x04aQ\x91V[a!\xD3V[a\x03\x83a\x08\x106`\x04aX\x1DV[a\"\xFCV[a\x03\x83a\x08#6`\x04aV\xEDV[a#RV[a\x08;a\x0866`\x04aX\x90V[a#\xBDV[`@Qa\x034\x91\x90aY=V[a\x03\x83a\x08V6`\x04aQ\x91V[a$bV[a\x03*a$\xDBV[a\x03\x83a\x08q6`\x04aNKV[a%\x94V[a\x03ca\x08\x846`\x04aQ\x91V[a&\xABV[`@\x80Q\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x80\x86\x16\x92\x82\x01\x92\x90\x92R\x81\x87\x16``\x82\x01R\x90\x85\x16`\x80\x82\x01R`\xA0\x81\x01\x83\x90R`\xC0\x81\x01\x82\x90R_\x90a\t\x07\x90`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a&\xCEV[\x96\x95PPPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x03a\t=W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\tEa&\xFCV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\t^Wa\t^aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x87W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P3_\x90\x81R`\x9A` R`@\x81 T\x91\x92P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90[\x85\x81\x10\x15a\x0B\x93W\x86\x86\x82\x81\x81\x10a\t\xC1Wa\t\xC1aYOV[\x90P` \x02\x81\x01\x90a\t\xD3\x91\x90aYcV[a\t\xE1\x90` \x81\x01\x90aY\x81V[\x90P\x87\x87\x83\x81\x81\x10a\t\xF5Wa\t\xF5aYOV[\x90P` \x02\x81\x01\x90a\n\x07\x91\x90aYcV[a\n\x11\x90\x80aY\x81V[\x90P\x14a\n1W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\n\x9B3\x84\x8A\x8A\x86\x81\x81\x10a\nIWa\nIaYOV[\x90P` \x02\x81\x01\x90a\n[\x91\x90aYcV[a\ne\x90\x80aY\x81V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa'U\x92PPPV[\x90Pa\x0Bm3\x84\x8A\x8A\x86\x81\x81\x10a\n\xB4Wa\n\xB4aYOV[\x90P` \x02\x81\x01\x90a\n\xC6\x91\x90aYcV[a\n\xD0\x90\x80aY\x81V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RP\x8E\x92P\x8D\x91P\x88\x90P\x81\x81\x10a\x0B\x15Wa\x0B\x15aYOV[\x90P` \x02\x81\x01\x90a\x0B'\x91\x90aYcV[a\x0B5\x90` \x81\x01\x90aY\x81V[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RP\x88\x92Pa(\xA7\x91PPV[\x84\x83\x81Q\x81\x10a\x0B\x7FWa\x0B\x7FaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\t\xA7V[PP`\x01`\xC9U\x94\x93PPPPV[`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R\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\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0C\x04W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C(\x91\x90aY\xC6V[a\x0CEW`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`fT\x81\x81\x16\x81\x14a\x0CjW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0Cs\x82a.BV[PPV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x9A` R`@\x81 T``\x92\x16\x90a\x0C\xA0\x86\x83\x87a'UV[\x90P_\x85Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0C\xBCWa\x0C\xBCaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\xE5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x86Q\x81\x10\x15a\r\xCAW`\x01`\x01`\xA0\x1B\x03\x88\x16_\x90\x81R`\xA2` R`@\x81 \x88Q\x82\x90\x8A\x90\x85\x90\x81\x10a\r Wa\r aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ `@Q\x80` \x01`@R\x90\x81_\x82\x01T\x81RPP\x90Pa\r\xA4\x87\x83\x81Q\x81\x10a\rrWa\rraYOV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a\r\x8CWa\r\x8CaYOV[` \x02` \x01\x01Q\x83a.\x7F\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x83\x83\x81Q\x81\x10a\r\xB6Wa\r\xB6aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\x0C\xEAV[P\x92PPP[\x93\x92PPPV[a\r\xDFa&\xFCV[a\r\xE83a\x10~V[\x15a\x0E\x06W`@Qc;\xF2\xB5\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Qc+bA\xF3`\xE1\x1B\x81R3`\x04\x82\x01Rc\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\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\x16\x90cV\xC4\x83\xE6\x90`D\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0EpW__\xFD[PZ\xF1\x15\x80\x15a\x0E\x82W=__>=_\xFD[PPPPa\x0E\x903\x85a.\x9DV[a\x0E\x9A33a.\xFFV[`@Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R3\x90\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x90` \x01`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x83\x83`@Qa\x0F\x13\x92\x91\x90aY\xE1V[`@Q\x80\x91\x03\x90\xA2a\x0F%`\x01`\xC9UV[PPPPV[3`\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\x0F\x8AWP3`\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[a\x0F\xA7W`@Qc\x04R\x06\xA5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xAFa&\xFCV[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16_\x90\x81R`\x9A` R`@\x80\x82 T\x90Qc\x15&g\xD9`\xE3\x1B\x81R\x90\x83\x16`\x04\x82\x01\x81\x90R\x86\x84\x16`$\x83\x01R\x92\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\x90c\xA93>\xC8\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10/W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10S\x91\x90aZ\x0FV[\x90P_a\x10a\x87\x87\x84a1\xA6V[\x90Pa\x10q\x83\x88\x88\x88\x88\x86a2\x88V[PPPa\x0F%`\x01`\xC9UV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x9A` R`@\x90 T\x16\x15\x15\x90V[\x81a\x10\xA7\x81a3\xCDV[a\x10\xC4W`@Qc\x93-\x94\xF7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xCCa&\xFCV[a\x10\xD5\x83a\x19\x83V[a\x10\xF2W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xFC\x83\x83a.\x9DV[a\x11\x06`\x01`\xC9UV[PPPV[``a\x116\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\0a4wV[\x90P\x90V[`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R\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\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\x9DW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\xC1\x91\x90aY\xC6V[a\x11\xDEW`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xE8_\x19a.BV[V[_\x81`@Q` \x01a\x11\xFC\x91\x90aV\xDBV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x12!aL\0V[``a\x12,\x83a4\xB4V[\x90\x94\x90\x93P\x91PPV[``\x80_a\x12C\x84a&\xABV[\x80Q\x90\x91P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12`Wa\x12`aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\x99W\x81` \x01[a\x12\x86aL\0V[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12~W\x90P[P\x93P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xB4Wa\x12\xB4aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xE7W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12\xD2W\x90P[P\x92P_[\x81\x81\x10\x15a\x13XWa\x13\x16\x83\x82\x81Q\x81\x10a\x13\tWa\x13\taYOV[` \x02` \x01\x01Qa4\xB4V[\x86\x83\x81Q\x81\x10a\x13(Wa\x13(aYOV[` \x02` \x01\x01\x86\x84\x81Q\x81\x10a\x13AWa\x13AaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01\x91\x90\x91RR`\x01\x01a\x12\xECV[PPP\x91P\x91V[3`\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\x13\xA9W`@Qc#\xD8q\xA5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\xB1a&\xFCV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R\x90\x81 Ta\x13\xEF\x90`\x01`\x01`@\x1B\x03\x80\x86\x16\x90\x85\x16a7\x07V[\x90P_a\x13\xFE\x86\x86\x86\x86a7\x1FV[\x90P_a\x14\x0B\x82\x84aZ>V[\x90Pa\x14\x19\x87_\x88\x86a7\xDCV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x88\x81\x16\x82R` \x82\x01\x84\x90R\x89\x16\x91\x7F\xDDa\x1FN\xF6?C\x85\xF1ul\x86\xCE\x1F\x1F8\x9A\x90\x13\xBAo\xA0}\xAB\xA8R\x82\x91\xBC-<0\x91\x01`@Q\x80\x91\x03\x90\xA2_a\x14i\x87a8VV[`@Qc\xDE\xBE\x1E\xAB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R\x91\x92P\x90\x82\x16\x90c\xDE\xBE\x1E\xAB\x90`D\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x14\xB4W__\xFD[PZ\xF1\x15\x80\x15a\x14\xC6W=__>=_\xFD[PPPPPPPPa\x0F%`\x01`\xC9UV[3`\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\x15!W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15)a&\xFCV[a\x152\x83a\x10~V[\x15a\x10\xFCW`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x90\x81R`\x9A` R`@\x80\x82 T\x90Qc\x15&g\xD9`\xE3\x1B\x81R\x90\x83\x16`\x04\x82\x01\x81\x90Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R\x92\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\x90c\xA93>\xC8\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xC9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xED\x91\x90aZ\x0FV[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x84R\x82R\x80\x83 \x81Q\x92\x83\x01\x90\x91RT\x81R\x91\x92Pa\x16S\x86a\x16K`\x01`\x01`@\x1B\x03\x80\x87\x16\x90\x89\x16a8\xC8V[\x84\x91\x90a8\xDCV[\x90Pa\x16u\x84\x88s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x84a7\xDCV[PPPPa\x11\x06`\x01`\xC9UV[`@Qc\x94\xF6I\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91\x82\x91_\x91\x82\x91\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\x90c\x94\xF6I\xDD\x90`$\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xEFW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x17\x16\x91\x90\x81\x01\x90aZ\xACV[`@Qc\xFE$:\x17`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01Rs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`$\x83\x01R\x92\x94P\x90\x92P_\x91\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\x90c\xFE$:\x17\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\x9CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xC0\x91\x90a[gV[\x90P\x80_\x03a\x17\xD4WP\x90\x94\x90\x93P\x91PPV[_\x83Q`\x01a\x17\xE3\x91\x90aZ>V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xFAWa\x17\xFAaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18#W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01a\x185\x91\x90aZ>V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18LWa\x18LaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18uW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82\x86Q\x81Q\x81\x10a\x18\xA0Wa\x18\xA0aYOV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x82\x81\x86Q\x81Q\x81\x10a\x18\xD4Wa\x18\xD4aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x85Q\x81\x10\x15a\x19uW\x85\x81\x81Q\x81\x10a\x18\xFCWa\x18\xFCaYOV[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x19\x16Wa\x19\x16aYOV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81\x81Q\x81\x10a\x19HWa\x19HaYOV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x19bWa\x19baYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x18\xE1V[P\x90\x97\x90\x96P\x94PPPPPV[_`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x19\xB5WP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[`@Qc\x15&g\xD9`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R\x82\x81\x16`$\x83\x01R_\x91\x82\x91\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\x90c\xA93>\xC8\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A+W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AO\x91\x90aZ\x0FV[\x90Pa\x1A]\x84\x84\x83_a7\x1FV[\x94\x93PPPPV[a\x1Ama8\xFAV[a\x11\xE8_a9TV[\x82a\x1A\x80\x81a3\xCDV[a\x1A\x9DW`@Qc\x93-\x94\xF7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xA6\x84a\x19\x83V[a\x1A\xC3W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x84\x84`@Qa\x1A\xFE\x92\x91\x90aY\xE1V[`@Q\x80\x91\x03\x90\xA2PPPPV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1B(Wa\x1B(aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1BQW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1B\xDAW`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x98` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x1B\x8DWa\x1B\x8DaYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ T\x82\x82\x81Q\x81\x10a\x1B\xC7Wa\x1B\xC7aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1BVV[P\x93\x92PPPV[`fT`\x02\x90`\x04\x90\x81\x16\x03a\x1C\x0BW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\x13a&\xFCV[\x85_[\x81\x81\x10\x15a\x1C\xA6Wa\x1C\x9E\x89\x89\x83\x81\x81\x10a\x1C3Wa\x1C3aYOV[\x90P` \x02\x81\x01\x90a\x1CE\x91\x90a[~V[a\x1CN\x90a[\x92V[\x88\x88\x84\x81\x81\x10a\x1C`Wa\x1C`aYOV[\x90P` \x02\x81\x01\x90a\x1Cr\x91\x90aY\x81V[\x88\x88\x86\x81\x81\x10a\x1C\x84Wa\x1C\x84aYOV[\x90P` \x02\x01` \x81\x01\x90a\x1C\x99\x91\x90a[\x9DV[a9\xA5V[`\x01\x01a\x1C\x16V[PPa\x1C\xB2`\x01`\xC9UV[PPPPPPPV[a\x1C\xC3aL\0V[_\x82\x81R`\xA4` \x90\x81R`@\x91\x82\x90 \x82Q`\xE0\x81\x01\x84R\x81T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R`\x01\x83\x01T\x81\x16\x82\x85\x01R`\x02\x83\x01T\x16\x81\x85\x01R`\x03\x82\x01T``\x82\x01R`\x04\x82\x01Tc\xFF\xFF\xFF\xFF\x16`\x80\x82\x01R`\x05\x82\x01\x80T\x85Q\x81\x86\x02\x81\x01\x86\x01\x90\x96R\x80\x86R\x91\x94\x92\x93`\xA0\x86\x01\x93\x92\x90\x83\x01\x82\x82\x80\x15a\x1DqW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x1DSW[PPPPP\x81R` \x01`\x06\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x1D\xC7W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\x1D\xB3W[PPPPP\x81RPP\x90P\x91\x90PV[``a\x1D\xE23a!\xD3V[\x90Pa\r\xD0\x84\x84\x84a#RV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x81R\x82\x82 \x83Q\x91\x82\x01\x90\x93R\x91T\x82R\x90a\r\xD0\x90a=\xE7V[``\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EGWa\x1EGaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EpW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x8CWa\x1E\x8CaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\xB5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\x9A` R`@\x81 T\x92\x93P\x91\x16\x90a\x1E\xE0\x86\x83\x87a'UV[\x90P_[\x85Q\x81\x10\x15a \xADW_a\x1F\x10\x87\x83\x81Q\x81\x10a\x1F\x03Wa\x1F\x03aYOV[` \x02` \x01\x01Qa8VV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16c\xFE$:\x17\x89\x89\x85\x81Q\x81\x10a\x1F4Wa\x1F4aYOV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1Fn\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\x89W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xAD\x91\x90a[gV[\x85\x83\x81Q\x81\x10a\x1F\xBFWa\x1F\xBFaYOV[` \x02` \x01\x01\x81\x81RPP_`\xA2_\x8A`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x89\x85\x81Q\x81\x10a \x02Wa \x02aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ `@Q\x80` \x01`@R\x90\x81_\x82\x01T\x81RPP\x90Pa \x86\x86\x84\x81Q\x81\x10a TWa TaYOV[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a nWa naYOV[` \x02` \x01\x01Q\x83a8\xDC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x87\x84\x81Q\x81\x10a \x98Wa \x98aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x1E\xE4V[PPP[\x92P\x92\x90PV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a \xD6WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a \xEFWP0;\x15\x80\x15a \xEFWP_T`\xFF\x16`\x01\x14[a!WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a!xW_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a!\x81\x82a.BV[a!\x8A\x83a9TV[\x80\x15a\x11\x06W_\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPV[``a!\xDDa&\xFCV[a!\xE6\x82a\x10~V[a\"\x03W`@Qc\xA5\xC7\xC4E`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\"\x0C\x82a\x19\x83V[\x15a\"*W`@Qc\x11\xCA35`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3`\x01`\x01`\xA0\x1B\x03\x83\x16\x14a\"\xE2W`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x9A` R`@\x90 T\x16a\"]\x81a3\xCDV[\x80a\"\x83WP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"\xA0W`@Qc\x1EI\x9A#`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\xF0\xED\xDF\x07\xE6\xEA\x14\xF3\x88\xB4~\x1E\x94\xA0\xF4d\xEC\xBD\x9E\xEDAq\x13\x0E\x0F\xC0\xE9\x9F\xB4\x03\n\x8A`@Q`@Q\x80\x91\x03\x90\xA3P[a\"\xEB\x82a>\x06V[\x90Pa\"\xF7`\x01`\xC9UV[\x91\x90PV[`fT`\x02\x90`\x04\x90\x81\x16\x03a#%W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#-a&\xFCV[a#Aa#9\x86a[\x92V[\x85\x85\x85a9\xA5V[a#K`\x01`\xC9UV[PPPPPV[a#Za&\xFCV[a#c3a\x10~V[\x15a#\x81W`@Qc;\xF2\xB5\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\x8A\x83a\x19\x83V[a#\xA7W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\xB33\x84\x84\x84a@eV[a\x10\xFC3\x84a.\xFFV[``_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#\xD9Wa#\xD9aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a$\x0CW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a#\xF7W\x90P[P\x90P_[\x84Q\x81\x10\x15a\x1B\xDAWa$=\x85\x82\x81Q\x81\x10a$/Wa$/aYOV[` \x02` \x01\x01Q\x85a\x1B\x0CV[\x82\x82\x81Q\x81\x10a$OWa$OaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a$\x11V[a$ja8\xFAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a$\xCFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a!NV[a$\xD8\x81a9TV[PV[`@\x80Q\x80\x82\x01\x90\x91R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x90\x91\x01R_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEAa%HaA$V[\x80Q` \x91\x82\x01 `@\x80Q\x92\x83\x01\x94\x90\x94R\x92\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\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\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a%\xF0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a&\x14\x91\x90a[\xB8V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a&EW`@QcyH!\xFF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`fT\x80\x19\x82\x19\x81\x16\x14a&lW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`f\x82\x90U`@Q\x82\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01[`@Q\x80\x91\x03\x90\xA2PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xA3` R`@\x90 ``\x90a\x19\xB5\x90aA\xC0V[_a&\xD7a$\xDBV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01a\x11\xFCV[`\x02`\xC9T\x03a'NW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a!NV[`\x02`\xC9UV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a'qWa'qaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a'\x9AW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x16cTz\xFB\x87\x86\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a'\xEC\x92\x91\x90a[\xD3V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a(\x06W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra(-\x91\x90\x81\x01\x90a[\xF6V[\x90P_[\x84Q\x81\x10\x15a(\x9CWa(w\x87\x86\x83\x81Q\x81\x10a(PWa(PaYOV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a(jWa(jaYOV[` \x02` \x01\x01Qa1\xA6V[\x83\x82\x81Q\x81\x10a(\x89Wa(\x89aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a(1V[P\x90\x95\x94PPPPPV[_`\x01`\x01`\xA0\x1B\x03\x86\x16a(\xCFW`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q_\x03a(\xF0W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a)\nWa)\naNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a)3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x85Q`\x01`\x01`@\x1B\x03\x81\x11\x15a)PWa)PaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a)yW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x86Q\x81\x10\x15a,uW_a)\x9D\x88\x83\x81Q\x81\x10a\x1F\x03Wa\x1F\x03aYOV[\x90P_`\xA2_\x8C`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x8A\x85\x81Q\x81\x10a)\xD6Wa)\xD6aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ \x90Pa*O\x88\x84\x81Q\x81\x10a*\x14Wa*\x14aYOV[` \x02` \x01\x01Q\x88\x85\x81Q\x81\x10a*.Wa*.aYOV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`@\x80Q\x92\x83\x01\x90R\x84T\x82R\x90\x91\x90a8\xDCV[\x84\x84\x81Q\x81\x10a*aWa*aaYOV[` \x02` \x01\x01\x81\x81RPPa*\xA0\x88\x84\x81Q\x81\x10a*\x82Wa*\x82aYOV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`@\x80Q\x92\x83\x01\x90R\x83T\x82RaA\xCCV[\x85\x84\x81Q\x81\x10a*\xB2Wa*\xB2aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01`\x01`\xA0\x1B\x03\x8A\x16\x15a+GWa+\t\x8A\x8A\x85\x81Q\x81\x10a*\xE2Wa*\xE2aYOV[` \x02` \x01\x01Q\x87\x86\x81Q\x81\x10a*\xFCWa*\xFCaYOV[` \x02` \x01\x01QaA\xE0V[a+G\x8A\x8C\x8B\x86\x81Q\x81\x10a+ Wa+ aYOV[` \x02` \x01\x01Q\x87\x87\x81Q\x81\x10a+:Wa+:aYOV[` \x02` \x01\x01Qa7\xDCV[_\x82`\x01`\x01`\xA0\x1B\x03\x16crJ\xF4#\x8D\x8C\x87\x81Q\x81\x10a+jWa+jaYOV[` \x02` \x01\x01Q\x8C\x88\x81Q\x81\x10a+\x84Wa+\x84aYOV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+\xAA\x93\x92\x91\x90a\\\x85V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a+\xC6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+\xEA\x91\x90a[gV[\x90P\x80_\x03a,gW_\x82U\x7F\x8B\xE92\xBA\xC5Ea\xF2r`\xF9Tc\xD9\xB8\xAB7\xE0k(B\xE5\xEE$\x04\x15|\xC1=\xF6\xEB\x8F\x8C\x8B\x86\x81Q\x81\x10a,*Wa,*aYOV[` \x02` \x01\x01Qa,O\x85`@Q\x80` \x01`@R\x90\x81_\x82\x01T\x81RPPa=\xE7V[`@Qa,^\x93\x92\x91\x90a\\\x85V[`@Q\x80\x91\x03\x90\xA1[PPP\x80`\x01\x01\x90Pa)~V[P`\x01`\x01`\xA0\x1B\x03\x88\x16_\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a,\x9C\x83a\\\xA9V[\x91\x90PUP_`@Q\x80`\xE0\x01`@R\x80\x8B`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x8A`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x8B`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x81R` \x01Cc\xFF\xFF\xFF\xFF\x16\x81R` \x01\x89\x81R` \x01\x85\x81RP\x90P_a-\x02\x82a\x11\xEAV[_\x81\x81R`\x9E` \x90\x81R`@\x80\x83 \x80T`\x01`\xFF\x19\x90\x91\x16\x81\x17\x90\x91U`\xA4\x83R\x92\x81\x90 \x86Q\x81T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x17\x83U\x88\x85\x01Q\x95\x83\x01\x80T\x82\x16\x96\x83\x16\x96\x90\x96\x17\x90\x95U\x91\x87\x01Q`\x02\x82\x01\x80T\x90\x95\x16\x92\x16\x91\x90\x91\x17\x90\x92U``\x85\x01Q`\x03\x83\x01U`\x80\x85\x01Q`\x04\x83\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16c\xFF\xFF\xFF\xFF\x90\x92\x16\x91\x90\x91\x17\x90U`\xA0\x85\x01Q\x80Q\x93\x94P\x85\x93a-\xB8\x92`\x05\x85\x01\x92\x01\x90aLYV[P`\xC0\x82\x01Q\x80Qa-\xD4\x91`\x06\x84\x01\x91` \x90\x91\x01\x90aL\xBCV[PPP`\x01`\x01`\xA0\x1B\x03\x8B\x16_\x90\x81R`\xA3` R`@\x90 a-\xF8\x90\x82aBJV[P\x7F&\xB2\xAA\xE2e\x16\xE8q\x9E\xF5\x0E\xA2\xF6\x83\x1A.\xFB\xD4\xE3}\xCC\xDF\x0Fi6\xB2{\xC0\x8Ey>0\x81\x83\x86`@Qa.,\x93\x92\x91\x90a\\\xC1V[`@Q\x80\x91\x03\x90\xA1\x9A\x99PPPPPPPPPPV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2PV[_a\x1A]\x82a.\x97a.\x90\x87a=\xE7V[\x86\x90aBUV[\x90aBUV[`\x01`\x01`\xA0\x1B\x03\x82\x81\x16_\x81\x81R`\x99` \x90\x81R`@\x91\x82\x90 `\x01\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x94\x86\x16\x94\x85\x17\x90U\x90Q\x92\x83R\x90\x91\x7Fw;T\xC0Muo\xCC^g\x81\x11\xF7\xD70\xDE;\xE9\x81\x92\0\x07\x99\xEE\xE3\xD67\x16\x05Z\x87\xC6\x91\x01a&\x9FV[`fT_\x90`\x01\x90\x81\x16\x03a/'W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a/2\x85a\x16\x83V[\x91P\x91P_a/B_\x86\x85a'UV[`\x01`\x01`\xA0\x1B\x03\x87\x81\x16_\x81\x81R`\x9A` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x94\x8B\x16\x94\x85\x17\x90UQ\x93\x94P\x91\x92\x90\x91\x7F\xC3\xEE\x9F._\xDA\x98\xE8\x06j\x1Ft[-\xF9(_Ao\xE9\x8C\xF2U\x9C\xD2\x14\x84\xB3\xD8t3\x04\x91\xA3_[\x83Q\x81\x10\x15a\x1C\xB2Ws\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a/\xD5Wa/\xD5aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x03a1EW`@Qc\xA3\xD7^\t`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x88\x81\x16`\x04\x83\x01R_\x91\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\x90\x91\x16\x90c\xA3\xD7^\t\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a0SW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a0w\x91\x90aZ\x0FV[\x90P_`\xA2_\x8A`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x87\x85\x81Q\x81\x10a0\xB0Wa0\xB0aYOV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ `@Q\x80` \x01`@R\x90\x81_\x82\x01T\x81RPP\x90Pa1$\x85\x84\x81Q\x81\x10a1\x02Wa1\x02aYOV[` \x02` \x01\x01Q\x83`\x01`\x01`@\x1B\x03\x16\x83a8\xDC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x85\x84\x81Q\x81\x10a16Wa16aYOV[` \x02` \x01\x01\x81\x81RPPPP[a1\x9E\x86\x88\x86\x84\x81Q\x81\x10a1\\Wa1\\aYOV[` \x02` \x01\x01Q_\x87\x86\x81Q\x81\x10a1wWa1waYOV[` \x02` \x01\x01Q\x87\x87\x81Q\x81\x10a1\x91Wa1\x91aYOV[` \x02` \x01\x01Qa2\x88V[`\x01\x01a/\x9CV[_s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xBF\x19`\x01`\x01`\xA0\x1B\x03\x84\x16\x01a2xW`@Qc\xA3\xD7^\t`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R_\x91\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\x90\x91\x16\x90c\xA3\xD7^\t\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a24W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a2X\x91\x90aZ\x0FV[\x90Pa2p`\x01`\x01`@\x1B\x03\x84\x81\x16\x90\x83\x16a8\xC8V[\x91PPa\r\xD0V[P`\x01`\x01`@\x1B\x03\x16\x92\x91PPV[\x80_\x03a2\xA8W`@Qc\n3\xBCi`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81\x15a3\xC5W`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R a2\xDE\x81\x85\x85\x85aBiV[`@\x80Q` \x81\x01\x90\x91R\x81T\x81R\x7F\x8B\xE92\xBA\xC5Ea\xF2r`\xF9Tc\xD9\xB8\xAB7\xE0k(B\xE5\xEE$\x04\x15|\xC1=\xF6\xEB\x8F\x90\x87\x90\x87\x90a3\x1C\x90a=\xE7V[`@Qa3+\x93\x92\x91\x90a\\\x85V[`@Q\x80\x91\x03\x90\xA1a3<\x86a\x10~V[\x15a\x1C\xB2W`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x89\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a3w\x90\x84\x90aZ>V[\x92PP\x81\x90UP\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\x1E\xC0B\xC9e\xE2\xED\xD7\x10{Q\x18\x8E\xE0\xF3\x83\xE2.v\x17\x90A\xAB:\x9D\x18\xFF\x15\x14\x05\x16l\x87\x87\x86`@Qa3\xBB\x93\x92\x91\x90a\\\x85V[`@Q\x80\x91\x03\x90\xA2P[PPPPPPV[`@Qc\x1B\xEB+\x97`\xE3\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R3`$\x83\x01R0`D\x83\x01R_\x805`\x01`\x01`\xE0\x1B\x03\x19\x16`d\x84\x01R\x91\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\x90\x91\x16\x90c\xDFY\\\xB8\x90`\x84\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a4SW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xB5\x91\x90aY\xC6V[``_a4\x83\x83aB\xE4V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[a4\xBCaL\0V[_\x82\x81R`\xA4` \x90\x81R`@\x91\x82\x90 \x82Q`\xE0\x81\x01\x84R\x81T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R`\x01\x83\x01T\x81\x16\x82\x85\x01R`\x02\x83\x01T\x16\x81\x85\x01R`\x03\x82\x01T``\x82\x81\x01\x91\x90\x91R`\x04\x83\x01Tc\xFF\xFF\xFF\xFF\x16`\x80\x83\x01R`\x05\x83\x01\x80T\x86Q\x81\x87\x02\x81\x01\x87\x01\x90\x97R\x80\x87R\x91\x95\x92\x94`\xA0\x86\x01\x93\x92\x90\x83\x01\x82\x82\x80\x15a5nW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a5PW[PPPPP\x81R` \x01`\x06\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a5\xC4W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a5\xB0W[PPPPP\x81RPP\x91P\x81`\xA0\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xECWa5\xECaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a6\x15W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x83`\x80\x01Qa6I\x91\x90a\\\xEBV[\x90P_Cc\xFF\xFF\xFF\xFF\x16\x82c\xFF\xFF\xFF\xFF\x16\x10a6zWa6u\x84_\x01Q\x85` \x01Q\x86`\xA0\x01Qa'UV[a6\x91V[a6\x91\x84_\x01Q\x85` \x01Q\x86`\xA0\x01Q\x85aC\x0BV[\x90P_[\x84`\xA0\x01QQ\x81\x10\x15a\x13XWa6\xE2\x85`\xC0\x01Q\x82\x81Q\x81\x10a6\xBBWa6\xBBaYOV[` \x02` \x01\x01Q\x83\x83\x81Q\x81\x10a6\xD5Wa6\xD5aYOV[` \x02` \x01\x01QaD9V[\x84\x82\x81Q\x81\x10a6\xF4Wa6\xF4aYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a6\x95V[_a7\x15\x84\x83\x85`\x01aDDV[a\x1A]\x90\x85a]\x07V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R\x90\x81 \x81\x90a7P\x90aD\x9FV[\x90P_a7\xB6`\x01a7\x82\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\0Ca]\x1AV[a7\x8C\x91\x90a]\x1AV[`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x8C\x16\x83R\x92\x90R \x90aD\xB9V[\x90P_a7\xC3\x82\x84a]\x07V[\x90Pa7\xD0\x81\x87\x87aD\xD5V[\x98\x97PPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a8\x12\x90\x84\x90a]\x07V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7Fi\t`\x007\xB7]{G3\xAE\xDD\x81TB\xB5\xEC\x01\x8A\x82wQ\xC82\xAA\xFFd\xEB\xA5\xD6\xD2\xDD\x84\x84\x84`@Qa\x1A\xFE\x93\x92\x91\x90a\\\x85V[_`\x01`\x01`\xA0\x1B\x03\x82\x16s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x14a8\xA1W\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\0a\x19\xB5V[\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\x92\x91PPV[_a\r\xD0\x83\x83g\r\xE0\xB6\xB3\xA7d\0\0aD\xF3V[_a\x1A]\x82a8\xF4a8\xED\x87a=\xE7V[\x86\x90a8\xC8V[\x90a8\xC8V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a!NV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\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\xA3PPV[`\xA0\x84\x01QQ\x82\x14a9\xCAW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83`@\x01Q`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a:\0W`@Qc\x16\x11\r5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a:\n\x85a\x11\xEAV[_\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:;W`@Qc\x87\xC9\xD2\x19`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``_\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\x87`\x80\x01Qa:n\x91\x90a\\\xEBV[\x90P\x80c\xFF\xFF\xFF\xFF\x16Cc\xFF\xFF\xFF\xFF\x16\x11a:\x9CW`@Qcx\xF6z\xE1`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a:\xB3\x87_\x01Q\x88` \x01Q\x89`\xA0\x01Q\x84aC\x0BV[\x87Q`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\xA3` R`@\x90 \x90\x92Pa:\xD9\x91P\x83aE\xD8V[P_\x82\x81R`\xA4` R`@\x81 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x16\x82U`\x01\x82\x01\x80T\x82\x16\x90U`\x02\x82\x01\x80T\x90\x91\x16\x90U`\x03\x81\x01\x82\x90U`\x04\x81\x01\x80Tc\xFF\xFF\xFF\xFF\x19\x16\x90U\x90a;0`\x05\x83\x01\x82aL\xF5V[a;=`\x06\x83\x01_aL\xF5V[PP_\x82\x81R`\x9E` R`@\x90\x81\x90 \x80T`\xFF\x19\x16\x90UQ\x7F\x1F@@\x08\x89'N\xD0{$\x84^PT\xA8z\x0C\xAB\x96\x9E\xB1'z\xAF\xE6\x1A\xE3R\xE7\xC3*\0\x90a;\x86\x90\x84\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA1\x85Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x9A` R`@\x81 T\x88Q`\xA0\x8A\x01Q\x91\x90\x93\x16\x92a;\xC0\x91\x84\x90a'UV[\x90P_[\x88`\xA0\x01QQ\x81\x10\x15a=\xDCW_a;\xEB\x8A`\xA0\x01Q\x83\x81Q\x81\x10a\x1F\x03Wa\x1F\x03aYOV[\x90P_a<!\x8B`\xC0\x01Q\x84\x81Q\x81\x10a<\x07Wa<\x07aYOV[` \x02` \x01\x01Q\x87\x85\x81Q\x81\x10a6\xD5Wa6\xD5aYOV[\x90P\x80_\x03a<1WPPa=\xD4V[\x87\x15a<\xFFW\x81`\x01`\x01`\xA0\x1B\x03\x16c.\xAEA\x8C\x8C_\x01Q\x8D`\xA0\x01Q\x86\x81Q\x81\x10a<`Wa<`aYOV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a<zWa<zaYOV[\x90P` \x02\x01` \x81\x01\x90a<\x8F\x91\x90aQ\x91V[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x04\x82\x01R\x91\x83\x16`$\x83\x01R\x90\x91\x16`D\x82\x01R`d\x81\x01\x84\x90R`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a<\xE4W__\xFD[PZ\xF1\x15\x80\x15a<\xF6W=__>=_\xFD[PPPPa=\xD1V[__\x83`\x01`\x01`\xA0\x1B\x03\x16cP\xFFr%\x8E_\x01Q\x8F`\xA0\x01Q\x88\x81Q\x81\x10a=*Wa=*aYOV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a=Q\x93\x92\x91\x90a\\\x85V[`@\x80Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a=lW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a=\x90\x91\x90a]6V[\x91P\x91Pa=\xCE\x87\x8E_\x01Q\x8F`\xA0\x01Q\x88\x81Q\x81\x10a=\xB2Wa=\xB2aYOV[` \x02` \x01\x01Q\x85\x85\x8B\x8B\x81Q\x81\x10a1\x91Wa1\x91aYOV[PP[PP[`\x01\x01a;\xC4V[PPPPPPPPPV[\x80Q_\x90\x15a=\xF7W\x81Qa\x19\xB5V[g\r\xE0\xB6\xB3\xA7d\0\0\x92\x91PPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x03a>2W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x81\x81R`\x9A` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x90\x91U\x90Q\x93\x16\x92\x83\x92\x91\x7F\xFE\xE3\tf\xA2V\xB7\x1E\x14\xBC\x0E\xBF\xC9C\x15\xE2\x8E\xF4\xA9zq1\xA9\xE2\xB7\xA3\x10\xA7:\xF4Fv\x91\xA3__a>\x91\x86a\x16\x83V[\x91P\x91P\x81Q_\x03a>\xA5WPPPa@_V[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xBEWa>\xBEaNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a>\xE7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P_a>\xF6\x87\x85\x85a'UV[\x90P_[\x83Q\x81\x10\x15a@YW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x93P_\x92\x91P` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x93P_\x92\x91P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x86\x84\x81Q\x81\x10a?zWa?zaYOV[` \x02` \x01\x01Q\x83_\x81Q\x81\x10a?\x94Wa?\x94aYOV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x85\x84\x81Q\x81\x10a?\xC6Wa?\xC6aYOV[` \x02` \x01\x01Q\x82_\x81Q\x81\x10a?\xE0Wa?\xE0aYOV[` \x02` \x01\x01\x81\x81RPP\x84\x84\x81Q\x81\x10a?\xFEWa?\xFEaYOV[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a@\x18Wa@\x18aYOV[` \x02` \x01\x01\x81\x81RPPa@1\x8B\x89\x85\x85\x85a(\xA7V[\x8A\x85\x81Q\x81\x10a@CWa@CaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01RPPP`\x01\x01a>\xFAV[PPPPP[P\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80a@\x8DWPa\x0F%V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x90 T`\xFF\x16\x15a@\xD1W`@Qc\rLL\x91`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x85\x84R\x82R\x90\x91 \x80T`\xFF\x19\x16`\x01\x17\x90U\x83\x01Qa#K\x90\x82\x90aA\x18\x90\x88\x90\x88\x90\x84\x90\x88\x90a\x08\x89V[\x85Q` \x87\x01QaE\xE3V[``_aAP\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\0a4wV[\x90P\x80_\x81Q\x81\x10aAdWaAdaYOV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10aA\x82WaA\x82aYOV[\x01` \x90\x81\x01Q`@Q`\x01`\x01`\xF8\x1B\x03\x19\x93\x84\x16\x92\x81\x01\x92\x90\x92R\x91\x90\x91\x16`!\x82\x01R`\"\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[``_a\r\xD0\x83aF5V[_a\r\xD0aA\xD9\x84a=\xE7V[\x83\x90a8\xC8V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 aB\x0F\x90aD\x9FV[\x90Pa\x0F%CaB\x1F\x84\x84aZ>V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R \x91\x90aF\x8EV[_a\r\xD0\x83\x83aF\x99V[_a\r\xD0\x83g\r\xE0\xB6\xB3\xA7d\0\0\x84aD\xF3V[\x82_\x03aB\x95W`@\x80Q` \x81\x01\x90\x91R\x84T\x81RaB\x8E\x90\x82\x90a.\x97\x90a=\xE7V[\x84Ua\x0F%V[`@\x80Q` \x81\x01\x90\x91R\x84T\x81R_\x90aB\xB1\x90\x85\x84a8\xDCV[\x90P_aB\xBE\x84\x83aZ>V[\x90P_aB\xD9\x84a.\x97aB\xD2\x88\x8AaZ>V[\x85\x90aBUV[\x87UPPPPPPPV[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x19\xB5W`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15aC'WaC'aNbV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15aCPW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\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\x16c\x94\xD7\xD0\x0C\x87\x87\x87`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01aC\xA4\x93\x92\x91\x90a]XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aC\xBEW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@RaC\xE5\x91\x90\x81\x01\x90a[\xF6V[\x90P_[\x85Q\x81\x10\x15aD-WaD\x08\x88\x87\x83\x81Q\x81\x10a(PWa(PaYOV[\x83\x82\x81Q\x81\x10aD\x1AWaD\x1AaYOV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01aC\xE9V[P\x90\x96\x95PPPPPPV[_a\r\xD0\x83\x83a8\xC8V[__aDQ\x86\x86\x86aD\xF3V[\x90P`\x01\x83`\x02\x81\x11\x15aDgWaDga]\x91V[\x14\x80\x15aD\x83WP_\x84\x80aD~WaD~a]\xA5V[\x86\x88\t\x11[\x15aD\x96WaD\x93`\x01\x82aZ>V[\x90P[\x95\x94PPPPPV[_aD\xAA\x82\x82aF\xE5V[`\x01`\x01`\xE0\x1B\x03\x16\x92\x91PPV[_aD\xC5\x83\x83\x83aG*V[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[_a\x1A]aD\xE3\x83\x85a]\xB9V[\x85\x90`\x01`\x01`@\x1B\x03\x16a8\xC8V[_\x80\x80_\x19\x85\x87\t\x85\x87\x02\x92P\x82\x81\x10\x83\x82\x03\x03\x91PP\x80_\x03aE*W\x83\x82\x81aE WaE a]\xA5V[\x04\x92PPPa\r\xD0V[\x80\x84\x11aEqW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01RtMath: mulDiv overflow`X\x1B`D\x82\x01R`d\x01a!NV[_\x84\x86\x88\t`\x02`\x01\x87\x19\x81\x01\x88\x16\x97\x88\x90\x04`\x03\x81\x02\x83\x18\x80\x82\x02\x84\x03\x02\x80\x82\x02\x84\x03\x02\x80\x82\x02\x84\x03\x02\x80\x82\x02\x84\x03\x02\x80\x82\x02\x84\x03\x02\x90\x81\x02\x90\x92\x03\x90\x91\x02_\x88\x90\x03\x88\x90\x04\x90\x91\x01\x85\x83\x11\x90\x94\x03\x93\x90\x93\x02\x93\x03\x94\x90\x94\x04\x91\x90\x91\x17\x02\x94\x93PPPPV[_a\r\xD0\x83\x83aGsV[B\x81\x10\x15aF\x04W`@Qc\x08\x19\xBD\xCD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[aF\x18`\x01`\x01`\xA0\x1B\x03\x85\x16\x84\x84aHVV[a\x0F%W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81_\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15aF\x82W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11aFnW[PPPPP\x90P\x91\x90PV[a\x11\x06\x83\x83\x83aH\xAAV[_\x81\x81R`\x01\x83\x01` R`@\x81 TaF\xDEWP\x81T`\x01\x81\x81\x01\x84U_\x84\x81R` \x80\x82 \x90\x93\x01\x84\x90U\x84T\x84\x82R\x82\x86\x01\x90\x93R`@\x90 \x91\x90\x91Ua\x19\xB5V[P_a\x19\xB5V[\x81T_\x90\x80\x15aG\"WaG\x0B\x84aF\xFE`\x01\x84a]\x07V[_\x91\x82R` \x90\x91 \x01\x90V[Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x1A]V[P\x90\x92\x91PPV[\x82T_\x90\x81aG;\x86\x86\x83\x85aI\xB0V[\x90P\x80\x15aGiWaGR\x86aF\xFE`\x01\x84a]\x07V[Td\x01\0\0\0\0\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\t\x07V[P\x91\x94\x93PPPPV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x80\x15aHMW_aG\x95`\x01\x83a]\x07V[\x85T\x90\x91P_\x90aG\xA8\x90`\x01\x90a]\x07V[\x90P\x81\x81\x14aH\x07W_\x86_\x01\x82\x81T\x81\x10aG\xC6WaG\xC6aYOV[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10aG\xE6WaG\xE6aYOV[_\x91\x82R` \x80\x83 \x90\x91\x01\x92\x90\x92U\x91\x82R`\x01\x88\x01\x90R`@\x90 \x83\x90U[\x85T\x86\x90\x80aH\x18WaH\x18a]\xD8V[`\x01\x90\x03\x81\x81\x90_R` _ \x01_\x90U\x90U\x85`\x01\x01_\x86\x81R` \x01\x90\x81R` \x01_ _\x90U`\x01\x93PPPPa\x19\xB5V[_\x91PPa\x19\xB5V[___aHc\x85\x85aJ\x03V[\x90\x92P\x90P_\x81`\x04\x81\x11\x15aH{WaH{a]\x91V[\x14\x80\x15aH\x99WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x80a\t\x07WPa\t\x07\x86\x86\x86aJBV[\x82T\x80\x15aIbW_aH\xC2\x85aF\xFE`\x01\x85a]\x07V[`@\x80Q\x80\x82\x01\x90\x91R\x90Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x84Rd\x01\0\0\0\0\x90\x92\x04`\x01`\x01`\xE0\x1B\x03\x16` \x84\x01R\x91\x92P\x90\x85\x16\x10\x15aI\x15W`@Qc\x15\x1B\x8E?`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Qc\xFF\xFF\xFF\xFF\x80\x86\x16\x91\x16\x03aI`W\x82aI6\x86aF\xFE`\x01\x86a]\x07V[\x80T`\x01`\x01`\xE0\x1B\x03\x92\x90\x92\x16d\x01\0\0\0\0\x02c\xFF\xFF\xFF\xFF\x90\x92\x16\x91\x90\x91\x17\x90UPPPPPV[P[P`@\x80Q\x80\x82\x01\x90\x91Rc\xFF\xFF\xFF\xFF\x92\x83\x16\x81R`\x01`\x01`\xE0\x1B\x03\x91\x82\x16` \x80\x83\x01\x91\x82R\x85T`\x01\x81\x01\x87U_\x96\x87R\x95 \x91Q\x90Q\x90\x92\x16d\x01\0\0\0\0\x02\x91\x90\x92\x16\x17\x91\x01UV[_[\x81\x83\x10\x15a\x1B\xDAW_aI\xC5\x84\x84aK)V[_\x87\x81R` \x90 \x90\x91Pc\xFF\xFF\xFF\xFF\x86\x16\x90\x82\x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15aI\xEFW\x80\x92PaI\xFDV[aI\xFA\x81`\x01aZ>V[\x93P[PaI\xB2V[__\x82Q`A\x03aJ7W` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1AaJ+\x87\x82\x85\x85aKCV[\x94P\x94PPPPa \xB1V[P_\x90P`\x02a \xB1V[___\x85`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x86\x86`@Q`$\x01aJj\x92\x91\x90a]\xECV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90QaJ\xA8\x91\x90a^\x04V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14aJ\xE0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>aJ\xE5V[``\x91P[P\x91P\x91P\x81\x80\x15aJ\xF9WP` \x81Q\x10\x15[\x80\x15a\t\x07WP\x80Qc\x0B\x13]?`\xE1\x1B\x90aK\x1E\x90\x83\x01` \x90\x81\x01\x90\x84\x01a[gV[\x14\x96\x95PPPPPPV[_aK7`\x02\x84\x84\x18a^\x15V[a\r\xD0\x90\x84\x84\x16aZ>V[_\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aKxWP_\x90P`\x03aK\xF7V[`@\x80Q_\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aK\xC9W=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aK\xF1W_`\x01\x92P\x92PPaK\xF7V[\x91P_\x90P[\x94P\x94\x92PPPV[`@Q\x80`\xE0\x01`@R\x80_`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01_`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01_`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01_\x81R` \x01_c\xFF\xFF\xFF\xFF\x16\x81R` \x01``\x81R` \x01``\x81RP\x90V[\x82\x80T\x82\x82U\x90_R` _ \x90\x81\x01\x92\x82\x15aL\xACW\x91` \x02\x82\x01[\x82\x81\x11\x15aL\xACW\x82Q\x82T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x17\x82U` \x90\x92\x01\x91`\x01\x90\x91\x01\x90aLwV[PaL\xB8\x92\x91PaM\x0CV[P\x90V[\x82\x80T\x82\x82U\x90_R` _ \x90\x81\x01\x92\x82\x15aL\xACW\x91` \x02\x82\x01[\x82\x81\x11\x15aL\xACW\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90aL\xDAV[P\x80T_\x82U\x90_R` _ \x90\x81\x01\x90a$\xD8\x91\x90[[\x80\x82\x11\x15aL\xB8W_\x81U`\x01\x01aM\rV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a$\xD8W__\xFD[\x805a\"\xF7\x81aM V[_____`\xA0\x86\x88\x03\x12\x15aMSW__\xFD[\x855aM^\x81aM V[\x94P` \x86\x015aMn\x81aM V[\x93P`@\x86\x015aM~\x81aM V[\x94\x97\x93\x96P\x93\x94``\x81\x015\x94P`\x80\x015\x92\x91PPV[__\x83`\x1F\x84\x01\x12aM\xA6W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xBCW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a \xB1W__\xFD[__` \x83\x85\x03\x12\x15aM\xE7W__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aM\xFCW__\xFD[aN\x08\x85\x82\x86\x01aM\x96V[\x90\x96\x90\x95P\x93PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a(\x9CW\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01aN-V[_` \x82\x84\x03\x12\x15aN[W__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aN\x98WaN\x98aNbV[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aN\x98WaN\x98aNbV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aN\xE8WaN\xE8aNbV[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15aO\x08WaO\x08aNbV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12aO!W__\xFD[\x815aO4aO/\x82aN\xF0V[aN\xC0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aOUW__\xFD[` \x85\x01[\x83\x81\x10\x15aO{W\x805aOm\x81aM V[\x83R` \x92\x83\x01\x92\x01aOZV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12aO\x94W__\xFD[\x815aO\xA2aO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aO\xC3W__\xFD[` \x85\x01[\x83\x81\x10\x15aO{W\x805\x83R` \x92\x83\x01\x92\x01aO\xC8V[___``\x84\x86\x03\x12\x15aO\xF2W__\xFD[\x835aO\xFD\x81aM V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP\x17W__\xFD[aP#\x86\x82\x87\x01aO\x12V[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aP>W__\xFD[aPJ\x86\x82\x87\x01aO\x85V[\x91PP\x92P\x92P\x92V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15aP\x84W\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01aPfV[P\x93\x94\x93PPPPV[` \x81R_a\r\xD0` \x83\x01\x84aPTV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\"\xF7W__\xFD[__\x83`\x1F\x84\x01\x12aP\xC3W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\xD9W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a \xB1W__\xFD[____``\x85\x87\x03\x12\x15aQ\x03W__\xFD[\x845aQ\x0E\x81aM V[\x93PaQ\x1C` \x86\x01aP\xA0V[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aQ6W__\xFD[aQB\x87\x82\x88\x01aP\xB3V[\x95\x98\x94\x97P\x95PPPPV[____`\x80\x85\x87\x03\x12\x15aQaW__\xFD[\x845aQl\x81aM V[\x93P` \x85\x015aQ|\x81aM V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[_` \x82\x84\x03\x12\x15aQ\xA1W__\xFD[\x815a\r\xD0\x81aM V[__`@\x83\x85\x03\x12\x15aQ\xBDW__\xFD[\x825aQ\xC8\x81aM V[\x91P` \x83\x015aQ\xD8\x81aM V[\x80\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15aQ\xFDW\x81\x81\x01Q\x83\x82\x01R` \x01aQ\xE5V[PP_\x91\x01RV[_\x81Q\x80\x84RaR\x1C\x81` \x86\x01` \x86\x01aQ\xE3V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\r\xD0` \x83\x01\x84aR\x05V[_`\xE0\x82\x84\x03\x12\x15aRRW__\xFD[aRZaNvV[\x90PaRe\x82aM4V[\x81RaRs` \x83\x01aM4V[` \x82\x01RaR\x84`@\x83\x01aM4V[`@\x82\x01R``\x82\x81\x015\x90\x82\x01RaR\x9F`\x80\x83\x01aP\xA0V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xBCW__\xFD[aR\xC8\x84\x82\x85\x01aO\x12V[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xE6W__\xFD[aR\xF2\x84\x82\x85\x01aO\x85V[`\xC0\x83\x01RP\x92\x91PPV[_` \x82\x84\x03\x12\x15aS\x0EW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aS#W__\xFD[a\x1A]\x84\x82\x85\x01aRBV[_` \x82\x84\x03\x12\x15aS?W__\xFD[\x815`\xFF\x81\x16\x81\x14a\r\xD0W__\xFD[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15aP\x84W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01aSaV[\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x80\x83\x01Q\x82\x16\x90\x84\x01R`@\x80\x83\x01Q\x90\x91\x16\x90\x83\x01R``\x80\x82\x01Q\x90\x83\x01R`\x80\x80\x82\x01Q_\x91aS\xD3\x90\x85\x01\x82c\xFF\xFF\xFF\xFF\x16\x90RV[P`\xA0\x82\x01Q`\xE0`\xA0\x85\x01RaS\xED`\xE0\x85\x01\x82aSOV[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01RaD\x96\x82\x82aPTV[`@\x81R_aT\x18`@\x83\x01\x85aS\x88V[\x82\x81\x03` \x84\x01RaD\x96\x81\x85aPTV[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15aD-W`\x1F\x19\x85\x84\x03\x01\x88RaTb\x83\x83QaPTV[` \x98\x89\x01\x98\x90\x93P\x91\x90\x91\x01\x90`\x01\x01aTFV[_`@\x82\x01`@\x83R\x80\x85Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15aT\xCFW`_\x19\x87\x86\x03\x01\x84RaT\xBA\x85\x83QaS\x88V[\x94P` \x93\x84\x01\x93\x91\x90\x91\x01\x90`\x01\x01aT\x9EV[PPPP\x82\x81\x03` \x84\x01RaD\x96\x81\x85aT*V[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a$\xD8W__\xFD[____`\x80\x85\x87\x03\x12\x15aU\x0CW__\xFD[\x845aU\x17\x81aM V[\x93P` \x85\x015aU'\x81aM V[\x92P`@\x85\x015aU7\x81aT\xE5V[\x91P``\x85\x015aUG\x81aT\xE5V[\x93\x96\x92\x95P\x90\x93PPV[___``\x84\x86\x03\x12\x15aUdW__\xFD[\x835aUo\x81aM V[\x92P` \x84\x015\x91P`@\x84\x015aU\x86\x81aT\xE5V[\x80\x91PP\x92P\x92P\x92V[`@\x81R_aT\x18`@\x83\x01\x85aSOV[___`@\x84\x86\x03\x12\x15aU\xB5W__\xFD[\x835aU\xC0\x81aM V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aU\xDAW__\xFD[aU\xE6\x86\x82\x87\x01aP\xB3V[\x94\x97\x90\x96P\x93\x94PPPPV[__`@\x83\x85\x03\x12\x15aV\x04W__\xFD[\x825aV\x0F\x81aM V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV)W__\xFD[aV5\x85\x82\x86\x01aO\x12V[\x91PP\x92P\x92\x90PV[______``\x87\x89\x03\x12\x15aVTW__\xFD[\x865`\x01`\x01`@\x1B\x03\x81\x11\x15aViW__\xFD[aVu\x89\x82\x8A\x01aM\x96V[\x90\x97P\x95PP` \x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV\x93W__\xFD[aV\x9F\x89\x82\x8A\x01aM\x96V[\x90\x95P\x93PP`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV\xBDW__\xFD[aV\xC9\x89\x82\x8A\x01aM\x96V[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[` \x81R_a\r\xD0` \x83\x01\x84aS\x88V[___``\x84\x86\x03\x12\x15aV\xFFW__\xFD[\x835aW\n\x81aM V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aW$W__\xFD[\x84\x01`@\x81\x87\x03\x12\x15aW5W__\xFD[aW=aN\x9EV[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aWRW__\xFD[\x82\x01`\x1F\x81\x01\x88\x13aWbW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aW{WaW{aNbV[aW\x8E`\x1F\x82\x01`\x1F\x19\x16` \x01aN\xC0V[\x81\x81R\x89` \x83\x85\x01\x01\x11\x15aW\xA2W__\xFD[\x81` \x84\x01` \x83\x017_` \x92\x82\x01\x83\x01R\x83R\x92\x83\x015\x92\x82\x01\x92\x90\x92R\x93\x96\x93\x95PPPP`@\x91\x90\x91\x015\x90V[__`@\x83\x85\x03\x12\x15aW\xE5W__\xFD[\x825aW\xF0\x81aM V[\x94` \x93\x90\x93\x015\x93PPPV[`@\x81R_aT\x18`@\x83\x01\x85aPTV[\x80\x15\x15\x81\x14a$\xD8W__\xFD[____``\x85\x87\x03\x12\x15aX0W__\xFD[\x845`\x01`\x01`@\x1B\x03\x81\x11\x15aXEW__\xFD[\x85\x01`\xE0\x81\x88\x03\x12\x15aXVW__\xFD[\x93P` \x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aXpW__\xFD[aX|\x87\x82\x88\x01aM\x96V[\x90\x94P\x92PP`@\x85\x015aUG\x81aX\x10V[__`@\x83\x85\x03\x12\x15aX\xA1W__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aX\xB6W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13aX\xC6W__\xFD[\x805aX\xD4aO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15aX\xF5W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aY W\x835aY\x0F\x81aM V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90aX\xFCV[\x94PPPP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV)W__\xFD[` \x81R_a\r\xD0` \x83\x01\x84aT*V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x825`^\x19\x836\x03\x01\x81\x12aYwW__\xFD[\x91\x90\x91\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12aY\x96W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aY\xAFW__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a \xB1W__\xFD[_` \x82\x84\x03\x12\x15aY\xD6W__\xFD[\x81Qa\r\xD0\x81aX\x10V[` \x81R\x81` \x82\x01R\x81\x83`@\x83\x017_\x81\x83\x01`@\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x91\x90PV[_` \x82\x84\x03\x12\x15aZ\x1FW__\xFD[\x81Qa\r\xD0\x81aT\xE5V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[_\x82`\x1F\x83\x01\x12aZ`W__\xFD[\x81QaZnaO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aZ\x8FW__\xFD[` \x85\x01[\x83\x81\x10\x15aO{W\x80Q\x83R` \x92\x83\x01\x92\x01aZ\x94V[__`@\x83\x85\x03\x12\x15aZ\xBDW__\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15aZ\xD2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13aZ\xE2W__\xFD[\x80QaZ\xF0aO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a[\x11W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a[<W\x83Qa[+\x81aM V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a[\x18V[\x80\x95PPPPP` \x83\x01Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[[W__\xFD[aV5\x85\x82\x86\x01aZQV[_` \x82\x84\x03\x12\x15a[wW__\xFD[PQ\x91\x90PV[_\x825`\xDE\x19\x836\x03\x01\x81\x12aYwW__\xFD[_a\x19\xB56\x83aRBV[_` \x82\x84\x03\x12\x15a[\xADW__\xFD[\x815a\r\xD0\x81aX\x10V[_` \x82\x84\x03\x12\x15a[\xC8W__\xFD[\x81Qa\r\xD0\x81aM V[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R_\x90a\x1A]\x90\x83\x01\x84aSOV[_` \x82\x84\x03\x12\x15a\\\x06W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\\\x1BW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\\+W__\xFD[\x80Qa\\9aO/\x82aN\xF0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\\ZW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\t\x07W\x83Qa\\t\x81aT\xE5V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\\aV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[_`\x01\x82\x01a\\\xBAWa\\\xBAaZ*V[P`\x01\x01\x90V[\x83\x81R``` \x82\x01R_a\\\xD9``\x83\x01\x85aS\x88V[\x82\x81\x03`@\x84\x01Ra\t\x07\x81\x85aPTV[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[\x81\x81\x03\x81\x81\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[__`@\x83\x85\x03\x12\x15a]GW__\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R``` \x82\x01\x81\x90R_\x90a]{\x90\x83\x01\x85aSOV[\x90Pc\xFF\xFF\xFF\xFF\x83\x16`@\x83\x01R\x94\x93PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x19\xB5Wa\x19\xB5aZ*V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[\x82\x81R`@` \x82\x01R_a\x1A]`@\x83\x01\x84aR\x05V[_\x82QaYw\x81\x84` \x87\x01aQ\xE3V[_\x82a^/WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \xAD{\x0BY\x11\x02\x1F\xA3\xEF8T\xA4\x85>\x9E\x1F5\xBAr\xED\x89=9\xC5\x9F\x87M\xE9@!X\xFCdsolcC\0\x08\x1B\x003",
3098    );
3099    #[derive(serde::Serialize, serde::Deserialize)]
3100    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3101    /**Custom error with signature `ActivelyDelegated()` and selector `0x77e56a06`.
3102```solidity
3103error ActivelyDelegated();
3104```*/
3105    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3106    #[derive(Clone)]
3107    pub struct ActivelyDelegated;
3108    #[allow(
3109        non_camel_case_types,
3110        non_snake_case,
3111        clippy::pub_underscore_fields,
3112        clippy::style
3113    )]
3114    const _: () = {
3115        use alloy::sol_types as alloy_sol_types;
3116        #[doc(hidden)]
3117        type UnderlyingSolTuple<'a> = ();
3118        #[doc(hidden)]
3119        type UnderlyingRustTuple<'a> = ();
3120        #[cfg(test)]
3121        #[allow(dead_code, unreachable_patterns)]
3122        fn _type_assertion(
3123            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3124        ) {
3125            match _t {
3126                alloy_sol_types::private::AssertTypeEq::<
3127                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3128                >(_) => {}
3129            }
3130        }
3131        #[automatically_derived]
3132        #[doc(hidden)]
3133        impl ::core::convert::From<ActivelyDelegated> for UnderlyingRustTuple<'_> {
3134            fn from(value: ActivelyDelegated) -> Self {
3135                ()
3136            }
3137        }
3138        #[automatically_derived]
3139        #[doc(hidden)]
3140        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ActivelyDelegated {
3141            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3142                Self
3143            }
3144        }
3145        #[automatically_derived]
3146        impl alloy_sol_types::SolError for ActivelyDelegated {
3147            type Parameters<'a> = UnderlyingSolTuple<'a>;
3148            type Token<'a> = <Self::Parameters<
3149                'a,
3150            > as alloy_sol_types::SolType>::Token<'a>;
3151            const SIGNATURE: &'static str = "ActivelyDelegated()";
3152            const SELECTOR: [u8; 4] = [119u8, 229u8, 106u8, 6u8];
3153            #[inline]
3154            fn new<'a>(
3155                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3156            ) -> Self {
3157                tuple.into()
3158            }
3159            #[inline]
3160            fn tokenize(&self) -> Self::Token<'_> {
3161                ()
3162            }
3163            #[inline]
3164            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3165                <Self::Parameters<
3166                    '_,
3167                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3168                    .map(Self::new)
3169            }
3170        }
3171    };
3172    #[derive(serde::Serialize, serde::Deserialize)]
3173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3174    /**Custom error with signature `CallerCannotUndelegate()` and selector `0x3c933446`.
3175```solidity
3176error CallerCannotUndelegate();
3177```*/
3178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3179    #[derive(Clone)]
3180    pub struct CallerCannotUndelegate;
3181    #[allow(
3182        non_camel_case_types,
3183        non_snake_case,
3184        clippy::pub_underscore_fields,
3185        clippy::style
3186    )]
3187    const _: () = {
3188        use alloy::sol_types as alloy_sol_types;
3189        #[doc(hidden)]
3190        type UnderlyingSolTuple<'a> = ();
3191        #[doc(hidden)]
3192        type UnderlyingRustTuple<'a> = ();
3193        #[cfg(test)]
3194        #[allow(dead_code, unreachable_patterns)]
3195        fn _type_assertion(
3196            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3197        ) {
3198            match _t {
3199                alloy_sol_types::private::AssertTypeEq::<
3200                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3201                >(_) => {}
3202            }
3203        }
3204        #[automatically_derived]
3205        #[doc(hidden)]
3206        impl ::core::convert::From<CallerCannotUndelegate> for UnderlyingRustTuple<'_> {
3207            fn from(value: CallerCannotUndelegate) -> Self {
3208                ()
3209            }
3210        }
3211        #[automatically_derived]
3212        #[doc(hidden)]
3213        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CallerCannotUndelegate {
3214            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3215                Self
3216            }
3217        }
3218        #[automatically_derived]
3219        impl alloy_sol_types::SolError for CallerCannotUndelegate {
3220            type Parameters<'a> = UnderlyingSolTuple<'a>;
3221            type Token<'a> = <Self::Parameters<
3222                'a,
3223            > as alloy_sol_types::SolType>::Token<'a>;
3224            const SIGNATURE: &'static str = "CallerCannotUndelegate()";
3225            const SELECTOR: [u8; 4] = [60u8, 147u8, 52u8, 70u8];
3226            #[inline]
3227            fn new<'a>(
3228                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3229            ) -> Self {
3230                tuple.into()
3231            }
3232            #[inline]
3233            fn tokenize(&self) -> Self::Token<'_> {
3234                ()
3235            }
3236            #[inline]
3237            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3238                <Self::Parameters<
3239                    '_,
3240                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3241                    .map(Self::new)
3242            }
3243        }
3244    };
3245    #[derive(serde::Serialize, serde::Deserialize)]
3246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3247    /**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`.
3248```solidity
3249error CurrentlyPaused();
3250```*/
3251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3252    #[derive(Clone)]
3253    pub struct CurrentlyPaused;
3254    #[allow(
3255        non_camel_case_types,
3256        non_snake_case,
3257        clippy::pub_underscore_fields,
3258        clippy::style
3259    )]
3260    const _: () = {
3261        use alloy::sol_types as alloy_sol_types;
3262        #[doc(hidden)]
3263        type UnderlyingSolTuple<'a> = ();
3264        #[doc(hidden)]
3265        type UnderlyingRustTuple<'a> = ();
3266        #[cfg(test)]
3267        #[allow(dead_code, unreachable_patterns)]
3268        fn _type_assertion(
3269            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3270        ) {
3271            match _t {
3272                alloy_sol_types::private::AssertTypeEq::<
3273                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3274                >(_) => {}
3275            }
3276        }
3277        #[automatically_derived]
3278        #[doc(hidden)]
3279        impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> {
3280            fn from(value: CurrentlyPaused) -> Self {
3281                ()
3282            }
3283        }
3284        #[automatically_derived]
3285        #[doc(hidden)]
3286        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused {
3287            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3288                Self
3289            }
3290        }
3291        #[automatically_derived]
3292        impl alloy_sol_types::SolError for CurrentlyPaused {
3293            type Parameters<'a> = UnderlyingSolTuple<'a>;
3294            type Token<'a> = <Self::Parameters<
3295                'a,
3296            > as alloy_sol_types::SolType>::Token<'a>;
3297            const SIGNATURE: &'static str = "CurrentlyPaused()";
3298            const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8];
3299            #[inline]
3300            fn new<'a>(
3301                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3302            ) -> Self {
3303                tuple.into()
3304            }
3305            #[inline]
3306            fn tokenize(&self) -> Self::Token<'_> {
3307                ()
3308            }
3309            #[inline]
3310            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3311                <Self::Parameters<
3312                    '_,
3313                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3314                    .map(Self::new)
3315            }
3316        }
3317    };
3318    #[derive(serde::Serialize, serde::Deserialize)]
3319    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3320    /**Custom error with signature `FullySlashed()` and selector `0x28cef1a4`.
3321```solidity
3322error FullySlashed();
3323```*/
3324    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3325    #[derive(Clone)]
3326    pub struct FullySlashed;
3327    #[allow(
3328        non_camel_case_types,
3329        non_snake_case,
3330        clippy::pub_underscore_fields,
3331        clippy::style
3332    )]
3333    const _: () = {
3334        use alloy::sol_types as alloy_sol_types;
3335        #[doc(hidden)]
3336        type UnderlyingSolTuple<'a> = ();
3337        #[doc(hidden)]
3338        type UnderlyingRustTuple<'a> = ();
3339        #[cfg(test)]
3340        #[allow(dead_code, unreachable_patterns)]
3341        fn _type_assertion(
3342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3343        ) {
3344            match _t {
3345                alloy_sol_types::private::AssertTypeEq::<
3346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3347                >(_) => {}
3348            }
3349        }
3350        #[automatically_derived]
3351        #[doc(hidden)]
3352        impl ::core::convert::From<FullySlashed> for UnderlyingRustTuple<'_> {
3353            fn from(value: FullySlashed) -> Self {
3354                ()
3355            }
3356        }
3357        #[automatically_derived]
3358        #[doc(hidden)]
3359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FullySlashed {
3360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3361                Self
3362            }
3363        }
3364        #[automatically_derived]
3365        impl alloy_sol_types::SolError for FullySlashed {
3366            type Parameters<'a> = UnderlyingSolTuple<'a>;
3367            type Token<'a> = <Self::Parameters<
3368                'a,
3369            > as alloy_sol_types::SolType>::Token<'a>;
3370            const SIGNATURE: &'static str = "FullySlashed()";
3371            const SELECTOR: [u8; 4] = [40u8, 206u8, 241u8, 164u8];
3372            #[inline]
3373            fn new<'a>(
3374                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3375            ) -> Self {
3376                tuple.into()
3377            }
3378            #[inline]
3379            fn tokenize(&self) -> Self::Token<'_> {
3380                ()
3381            }
3382            #[inline]
3383            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3384                <Self::Parameters<
3385                    '_,
3386                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3387                    .map(Self::new)
3388            }
3389        }
3390    };
3391    #[derive(serde::Serialize, serde::Deserialize)]
3392    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3393    /**Custom error with signature `InputAddressZero()` and selector `0x73632176`.
3394```solidity
3395error InputAddressZero();
3396```*/
3397    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3398    #[derive(Clone)]
3399    pub struct InputAddressZero;
3400    #[allow(
3401        non_camel_case_types,
3402        non_snake_case,
3403        clippy::pub_underscore_fields,
3404        clippy::style
3405    )]
3406    const _: () = {
3407        use alloy::sol_types as alloy_sol_types;
3408        #[doc(hidden)]
3409        type UnderlyingSolTuple<'a> = ();
3410        #[doc(hidden)]
3411        type UnderlyingRustTuple<'a> = ();
3412        #[cfg(test)]
3413        #[allow(dead_code, unreachable_patterns)]
3414        fn _type_assertion(
3415            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3416        ) {
3417            match _t {
3418                alloy_sol_types::private::AssertTypeEq::<
3419                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3420                >(_) => {}
3421            }
3422        }
3423        #[automatically_derived]
3424        #[doc(hidden)]
3425        impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> {
3426            fn from(value: InputAddressZero) -> Self {
3427                ()
3428            }
3429        }
3430        #[automatically_derived]
3431        #[doc(hidden)]
3432        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero {
3433            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3434                Self
3435            }
3436        }
3437        #[automatically_derived]
3438        impl alloy_sol_types::SolError for InputAddressZero {
3439            type Parameters<'a> = UnderlyingSolTuple<'a>;
3440            type Token<'a> = <Self::Parameters<
3441                'a,
3442            > as alloy_sol_types::SolType>::Token<'a>;
3443            const SIGNATURE: &'static str = "InputAddressZero()";
3444            const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8];
3445            #[inline]
3446            fn new<'a>(
3447                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3448            ) -> Self {
3449                tuple.into()
3450            }
3451            #[inline]
3452            fn tokenize(&self) -> Self::Token<'_> {
3453                ()
3454            }
3455            #[inline]
3456            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3457                <Self::Parameters<
3458                    '_,
3459                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3460                    .map(Self::new)
3461            }
3462        }
3463    };
3464    #[derive(serde::Serialize, serde::Deserialize)]
3465    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3466    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
3467```solidity
3468error InputArrayLengthMismatch();
3469```*/
3470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3471    #[derive(Clone)]
3472    pub struct InputArrayLengthMismatch;
3473    #[allow(
3474        non_camel_case_types,
3475        non_snake_case,
3476        clippy::pub_underscore_fields,
3477        clippy::style
3478    )]
3479    const _: () = {
3480        use alloy::sol_types as alloy_sol_types;
3481        #[doc(hidden)]
3482        type UnderlyingSolTuple<'a> = ();
3483        #[doc(hidden)]
3484        type UnderlyingRustTuple<'a> = ();
3485        #[cfg(test)]
3486        #[allow(dead_code, unreachable_patterns)]
3487        fn _type_assertion(
3488            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3489        ) {
3490            match _t {
3491                alloy_sol_types::private::AssertTypeEq::<
3492                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3493                >(_) => {}
3494            }
3495        }
3496        #[automatically_derived]
3497        #[doc(hidden)]
3498        impl ::core::convert::From<InputArrayLengthMismatch>
3499        for UnderlyingRustTuple<'_> {
3500            fn from(value: InputArrayLengthMismatch) -> Self {
3501                ()
3502            }
3503        }
3504        #[automatically_derived]
3505        #[doc(hidden)]
3506        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3507        for InputArrayLengthMismatch {
3508            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3509                Self
3510            }
3511        }
3512        #[automatically_derived]
3513        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
3514            type Parameters<'a> = UnderlyingSolTuple<'a>;
3515            type Token<'a> = <Self::Parameters<
3516                'a,
3517            > as alloy_sol_types::SolType>::Token<'a>;
3518            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
3519            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
3520            #[inline]
3521            fn new<'a>(
3522                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3523            ) -> Self {
3524                tuple.into()
3525            }
3526            #[inline]
3527            fn tokenize(&self) -> Self::Token<'_> {
3528                ()
3529            }
3530            #[inline]
3531            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3532                <Self::Parameters<
3533                    '_,
3534                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3535                    .map(Self::new)
3536            }
3537        }
3538    };
3539    #[derive(serde::Serialize, serde::Deserialize)]
3540    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3541    /**Custom error with signature `InputArrayLengthZero()` and selector `0x796cc525`.
3542```solidity
3543error InputArrayLengthZero();
3544```*/
3545    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3546    #[derive(Clone)]
3547    pub struct InputArrayLengthZero;
3548    #[allow(
3549        non_camel_case_types,
3550        non_snake_case,
3551        clippy::pub_underscore_fields,
3552        clippy::style
3553    )]
3554    const _: () = {
3555        use alloy::sol_types as alloy_sol_types;
3556        #[doc(hidden)]
3557        type UnderlyingSolTuple<'a> = ();
3558        #[doc(hidden)]
3559        type UnderlyingRustTuple<'a> = ();
3560        #[cfg(test)]
3561        #[allow(dead_code, unreachable_patterns)]
3562        fn _type_assertion(
3563            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3564        ) {
3565            match _t {
3566                alloy_sol_types::private::AssertTypeEq::<
3567                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3568                >(_) => {}
3569            }
3570        }
3571        #[automatically_derived]
3572        #[doc(hidden)]
3573        impl ::core::convert::From<InputArrayLengthZero> for UnderlyingRustTuple<'_> {
3574            fn from(value: InputArrayLengthZero) -> Self {
3575                ()
3576            }
3577        }
3578        #[automatically_derived]
3579        #[doc(hidden)]
3580        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputArrayLengthZero {
3581            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3582                Self
3583            }
3584        }
3585        #[automatically_derived]
3586        impl alloy_sol_types::SolError for InputArrayLengthZero {
3587            type Parameters<'a> = UnderlyingSolTuple<'a>;
3588            type Token<'a> = <Self::Parameters<
3589                'a,
3590            > as alloy_sol_types::SolType>::Token<'a>;
3591            const SIGNATURE: &'static str = "InputArrayLengthZero()";
3592            const SELECTOR: [u8; 4] = [121u8, 108u8, 197u8, 37u8];
3593            #[inline]
3594            fn new<'a>(
3595                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3596            ) -> Self {
3597                tuple.into()
3598            }
3599            #[inline]
3600            fn tokenize(&self) -> Self::Token<'_> {
3601                ()
3602            }
3603            #[inline]
3604            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3605                <Self::Parameters<
3606                    '_,
3607                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3608                    .map(Self::new)
3609            }
3610        }
3611    };
3612    #[derive(serde::Serialize, serde::Deserialize)]
3613    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3614    /**Custom error with signature `InvalidNewPausedStatus()` and selector `0xc61dca5d`.
3615```solidity
3616error InvalidNewPausedStatus();
3617```*/
3618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3619    #[derive(Clone)]
3620    pub struct InvalidNewPausedStatus;
3621    #[allow(
3622        non_camel_case_types,
3623        non_snake_case,
3624        clippy::pub_underscore_fields,
3625        clippy::style
3626    )]
3627    const _: () = {
3628        use alloy::sol_types as alloy_sol_types;
3629        #[doc(hidden)]
3630        type UnderlyingSolTuple<'a> = ();
3631        #[doc(hidden)]
3632        type UnderlyingRustTuple<'a> = ();
3633        #[cfg(test)]
3634        #[allow(dead_code, unreachable_patterns)]
3635        fn _type_assertion(
3636            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3637        ) {
3638            match _t {
3639                alloy_sol_types::private::AssertTypeEq::<
3640                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3641                >(_) => {}
3642            }
3643        }
3644        #[automatically_derived]
3645        #[doc(hidden)]
3646        impl ::core::convert::From<InvalidNewPausedStatus> for UnderlyingRustTuple<'_> {
3647            fn from(value: InvalidNewPausedStatus) -> Self {
3648                ()
3649            }
3650        }
3651        #[automatically_derived]
3652        #[doc(hidden)]
3653        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidNewPausedStatus {
3654            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3655                Self
3656            }
3657        }
3658        #[automatically_derived]
3659        impl alloy_sol_types::SolError for InvalidNewPausedStatus {
3660            type Parameters<'a> = UnderlyingSolTuple<'a>;
3661            type Token<'a> = <Self::Parameters<
3662                'a,
3663            > as alloy_sol_types::SolType>::Token<'a>;
3664            const SIGNATURE: &'static str = "InvalidNewPausedStatus()";
3665            const SELECTOR: [u8; 4] = [198u8, 29u8, 202u8, 93u8];
3666            #[inline]
3667            fn new<'a>(
3668                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3669            ) -> Self {
3670                tuple.into()
3671            }
3672            #[inline]
3673            fn tokenize(&self) -> Self::Token<'_> {
3674                ()
3675            }
3676            #[inline]
3677            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3678                <Self::Parameters<
3679                    '_,
3680                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3681                    .map(Self::new)
3682            }
3683        }
3684    };
3685    #[derive(serde::Serialize, serde::Deserialize)]
3686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3687    /**Custom error with signature `InvalidPermissions()` and selector `0x932d94f7`.
3688```solidity
3689error InvalidPermissions();
3690```*/
3691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3692    #[derive(Clone)]
3693    pub struct InvalidPermissions;
3694    #[allow(
3695        non_camel_case_types,
3696        non_snake_case,
3697        clippy::pub_underscore_fields,
3698        clippy::style
3699    )]
3700    const _: () = {
3701        use alloy::sol_types as alloy_sol_types;
3702        #[doc(hidden)]
3703        type UnderlyingSolTuple<'a> = ();
3704        #[doc(hidden)]
3705        type UnderlyingRustTuple<'a> = ();
3706        #[cfg(test)]
3707        #[allow(dead_code, unreachable_patterns)]
3708        fn _type_assertion(
3709            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3710        ) {
3711            match _t {
3712                alloy_sol_types::private::AssertTypeEq::<
3713                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3714                >(_) => {}
3715            }
3716        }
3717        #[automatically_derived]
3718        #[doc(hidden)]
3719        impl ::core::convert::From<InvalidPermissions> for UnderlyingRustTuple<'_> {
3720            fn from(value: InvalidPermissions) -> Self {
3721                ()
3722            }
3723        }
3724        #[automatically_derived]
3725        #[doc(hidden)]
3726        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPermissions {
3727            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3728                Self
3729            }
3730        }
3731        #[automatically_derived]
3732        impl alloy_sol_types::SolError for InvalidPermissions {
3733            type Parameters<'a> = UnderlyingSolTuple<'a>;
3734            type Token<'a> = <Self::Parameters<
3735                'a,
3736            > as alloy_sol_types::SolType>::Token<'a>;
3737            const SIGNATURE: &'static str = "InvalidPermissions()";
3738            const SELECTOR: [u8; 4] = [147u8, 45u8, 148u8, 247u8];
3739            #[inline]
3740            fn new<'a>(
3741                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3742            ) -> Self {
3743                tuple.into()
3744            }
3745            #[inline]
3746            fn tokenize(&self) -> Self::Token<'_> {
3747                ()
3748            }
3749            #[inline]
3750            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3751                <Self::Parameters<
3752                    '_,
3753                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3754                    .map(Self::new)
3755            }
3756        }
3757    };
3758    #[derive(serde::Serialize, serde::Deserialize)]
3759    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3760    /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`.
3761```solidity
3762error InvalidShortString();
3763```*/
3764    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3765    #[derive(Clone)]
3766    pub struct InvalidShortString;
3767    #[allow(
3768        non_camel_case_types,
3769        non_snake_case,
3770        clippy::pub_underscore_fields,
3771        clippy::style
3772    )]
3773    const _: () = {
3774        use alloy::sol_types as alloy_sol_types;
3775        #[doc(hidden)]
3776        type UnderlyingSolTuple<'a> = ();
3777        #[doc(hidden)]
3778        type UnderlyingRustTuple<'a> = ();
3779        #[cfg(test)]
3780        #[allow(dead_code, unreachable_patterns)]
3781        fn _type_assertion(
3782            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3783        ) {
3784            match _t {
3785                alloy_sol_types::private::AssertTypeEq::<
3786                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3787                >(_) => {}
3788            }
3789        }
3790        #[automatically_derived]
3791        #[doc(hidden)]
3792        impl ::core::convert::From<InvalidShortString> for UnderlyingRustTuple<'_> {
3793            fn from(value: InvalidShortString) -> Self {
3794                ()
3795            }
3796        }
3797        #[automatically_derived]
3798        #[doc(hidden)]
3799        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidShortString {
3800            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3801                Self
3802            }
3803        }
3804        #[automatically_derived]
3805        impl alloy_sol_types::SolError for InvalidShortString {
3806            type Parameters<'a> = UnderlyingSolTuple<'a>;
3807            type Token<'a> = <Self::Parameters<
3808                'a,
3809            > as alloy_sol_types::SolType>::Token<'a>;
3810            const SIGNATURE: &'static str = "InvalidShortString()";
3811            const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8];
3812            #[inline]
3813            fn new<'a>(
3814                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3815            ) -> Self {
3816                tuple.into()
3817            }
3818            #[inline]
3819            fn tokenize(&self) -> Self::Token<'_> {
3820                ()
3821            }
3822            #[inline]
3823            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3824                <Self::Parameters<
3825                    '_,
3826                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3827                    .map(Self::new)
3828            }
3829        }
3830    };
3831    #[derive(serde::Serialize, serde::Deserialize)]
3832    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3833    /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`.
3834```solidity
3835error InvalidSignature();
3836```*/
3837    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3838    #[derive(Clone)]
3839    pub struct InvalidSignature;
3840    #[allow(
3841        non_camel_case_types,
3842        non_snake_case,
3843        clippy::pub_underscore_fields,
3844        clippy::style
3845    )]
3846    const _: () = {
3847        use alloy::sol_types as alloy_sol_types;
3848        #[doc(hidden)]
3849        type UnderlyingSolTuple<'a> = ();
3850        #[doc(hidden)]
3851        type UnderlyingRustTuple<'a> = ();
3852        #[cfg(test)]
3853        #[allow(dead_code, unreachable_patterns)]
3854        fn _type_assertion(
3855            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3856        ) {
3857            match _t {
3858                alloy_sol_types::private::AssertTypeEq::<
3859                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3860                >(_) => {}
3861            }
3862        }
3863        #[automatically_derived]
3864        #[doc(hidden)]
3865        impl ::core::convert::From<InvalidSignature> for UnderlyingRustTuple<'_> {
3866            fn from(value: InvalidSignature) -> Self {
3867                ()
3868            }
3869        }
3870        #[automatically_derived]
3871        #[doc(hidden)]
3872        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSignature {
3873            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3874                Self
3875            }
3876        }
3877        #[automatically_derived]
3878        impl alloy_sol_types::SolError for InvalidSignature {
3879            type Parameters<'a> = UnderlyingSolTuple<'a>;
3880            type Token<'a> = <Self::Parameters<
3881                'a,
3882            > as alloy_sol_types::SolType>::Token<'a>;
3883            const SIGNATURE: &'static str = "InvalidSignature()";
3884            const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8];
3885            #[inline]
3886            fn new<'a>(
3887                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3888            ) -> Self {
3889                tuple.into()
3890            }
3891            #[inline]
3892            fn tokenize(&self) -> Self::Token<'_> {
3893                ()
3894            }
3895            #[inline]
3896            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3897                <Self::Parameters<
3898                    '_,
3899                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3900                    .map(Self::new)
3901            }
3902        }
3903    };
3904    #[derive(serde::Serialize, serde::Deserialize)]
3905    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3906    /**Custom error with signature `InvalidSnapshotOrdering()` and selector `0x2a371c7e`.
3907```solidity
3908error InvalidSnapshotOrdering();
3909```*/
3910    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3911    #[derive(Clone)]
3912    pub struct InvalidSnapshotOrdering;
3913    #[allow(
3914        non_camel_case_types,
3915        non_snake_case,
3916        clippy::pub_underscore_fields,
3917        clippy::style
3918    )]
3919    const _: () = {
3920        use alloy::sol_types as alloy_sol_types;
3921        #[doc(hidden)]
3922        type UnderlyingSolTuple<'a> = ();
3923        #[doc(hidden)]
3924        type UnderlyingRustTuple<'a> = ();
3925        #[cfg(test)]
3926        #[allow(dead_code, unreachable_patterns)]
3927        fn _type_assertion(
3928            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3929        ) {
3930            match _t {
3931                alloy_sol_types::private::AssertTypeEq::<
3932                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3933                >(_) => {}
3934            }
3935        }
3936        #[automatically_derived]
3937        #[doc(hidden)]
3938        impl ::core::convert::From<InvalidSnapshotOrdering> for UnderlyingRustTuple<'_> {
3939            fn from(value: InvalidSnapshotOrdering) -> Self {
3940                ()
3941            }
3942        }
3943        #[automatically_derived]
3944        #[doc(hidden)]
3945        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSnapshotOrdering {
3946            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3947                Self
3948            }
3949        }
3950        #[automatically_derived]
3951        impl alloy_sol_types::SolError for InvalidSnapshotOrdering {
3952            type Parameters<'a> = UnderlyingSolTuple<'a>;
3953            type Token<'a> = <Self::Parameters<
3954                'a,
3955            > as alloy_sol_types::SolType>::Token<'a>;
3956            const SIGNATURE: &'static str = "InvalidSnapshotOrdering()";
3957            const SELECTOR: [u8; 4] = [42u8, 55u8, 28u8, 126u8];
3958            #[inline]
3959            fn new<'a>(
3960                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3961            ) -> Self {
3962                tuple.into()
3963            }
3964            #[inline]
3965            fn tokenize(&self) -> Self::Token<'_> {
3966                ()
3967            }
3968            #[inline]
3969            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3970                <Self::Parameters<
3971                    '_,
3972                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3973                    .map(Self::new)
3974            }
3975        }
3976    };
3977    #[derive(serde::Serialize, serde::Deserialize)]
3978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3979    /**Custom error with signature `NotActivelyDelegated()` and selector `0xa5c7c445`.
3980```solidity
3981error NotActivelyDelegated();
3982```*/
3983    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3984    #[derive(Clone)]
3985    pub struct NotActivelyDelegated;
3986    #[allow(
3987        non_camel_case_types,
3988        non_snake_case,
3989        clippy::pub_underscore_fields,
3990        clippy::style
3991    )]
3992    const _: () = {
3993        use alloy::sol_types as alloy_sol_types;
3994        #[doc(hidden)]
3995        type UnderlyingSolTuple<'a> = ();
3996        #[doc(hidden)]
3997        type UnderlyingRustTuple<'a> = ();
3998        #[cfg(test)]
3999        #[allow(dead_code, unreachable_patterns)]
4000        fn _type_assertion(
4001            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4002        ) {
4003            match _t {
4004                alloy_sol_types::private::AssertTypeEq::<
4005                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4006                >(_) => {}
4007            }
4008        }
4009        #[automatically_derived]
4010        #[doc(hidden)]
4011        impl ::core::convert::From<NotActivelyDelegated> for UnderlyingRustTuple<'_> {
4012            fn from(value: NotActivelyDelegated) -> Self {
4013                ()
4014            }
4015        }
4016        #[automatically_derived]
4017        #[doc(hidden)]
4018        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotActivelyDelegated {
4019            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4020                Self
4021            }
4022        }
4023        #[automatically_derived]
4024        impl alloy_sol_types::SolError for NotActivelyDelegated {
4025            type Parameters<'a> = UnderlyingSolTuple<'a>;
4026            type Token<'a> = <Self::Parameters<
4027                'a,
4028            > as alloy_sol_types::SolType>::Token<'a>;
4029            const SIGNATURE: &'static str = "NotActivelyDelegated()";
4030            const SELECTOR: [u8; 4] = [165u8, 199u8, 196u8, 69u8];
4031            #[inline]
4032            fn new<'a>(
4033                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4034            ) -> Self {
4035                tuple.into()
4036            }
4037            #[inline]
4038            fn tokenize(&self) -> Self::Token<'_> {
4039                ()
4040            }
4041            #[inline]
4042            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4043                <Self::Parameters<
4044                    '_,
4045                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4046                    .map(Self::new)
4047            }
4048        }
4049    };
4050    #[derive(serde::Serialize, serde::Deserialize)]
4051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4052    /**Custom error with signature `OnlyAllocationManager()` and selector `0x23d871a5`.
4053```solidity
4054error OnlyAllocationManager();
4055```*/
4056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4057    #[derive(Clone)]
4058    pub struct OnlyAllocationManager;
4059    #[allow(
4060        non_camel_case_types,
4061        non_snake_case,
4062        clippy::pub_underscore_fields,
4063        clippy::style
4064    )]
4065    const _: () = {
4066        use alloy::sol_types as alloy_sol_types;
4067        #[doc(hidden)]
4068        type UnderlyingSolTuple<'a> = ();
4069        #[doc(hidden)]
4070        type UnderlyingRustTuple<'a> = ();
4071        #[cfg(test)]
4072        #[allow(dead_code, unreachable_patterns)]
4073        fn _type_assertion(
4074            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4075        ) {
4076            match _t {
4077                alloy_sol_types::private::AssertTypeEq::<
4078                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4079                >(_) => {}
4080            }
4081        }
4082        #[automatically_derived]
4083        #[doc(hidden)]
4084        impl ::core::convert::From<OnlyAllocationManager> for UnderlyingRustTuple<'_> {
4085            fn from(value: OnlyAllocationManager) -> Self {
4086                ()
4087            }
4088        }
4089        #[automatically_derived]
4090        #[doc(hidden)]
4091        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyAllocationManager {
4092            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4093                Self
4094            }
4095        }
4096        #[automatically_derived]
4097        impl alloy_sol_types::SolError for OnlyAllocationManager {
4098            type Parameters<'a> = UnderlyingSolTuple<'a>;
4099            type Token<'a> = <Self::Parameters<
4100                'a,
4101            > as alloy_sol_types::SolType>::Token<'a>;
4102            const SIGNATURE: &'static str = "OnlyAllocationManager()";
4103            const SELECTOR: [u8; 4] = [35u8, 216u8, 113u8, 165u8];
4104            #[inline]
4105            fn new<'a>(
4106                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4107            ) -> Self {
4108                tuple.into()
4109            }
4110            #[inline]
4111            fn tokenize(&self) -> Self::Token<'_> {
4112                ()
4113            }
4114            #[inline]
4115            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4116                <Self::Parameters<
4117                    '_,
4118                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4119                    .map(Self::new)
4120            }
4121        }
4122    };
4123    #[derive(serde::Serialize, serde::Deserialize)]
4124    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4125    /**Custom error with signature `OnlyEigenPodManager()` and selector `0xc84e9984`.
4126```solidity
4127error OnlyEigenPodManager();
4128```*/
4129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4130    #[derive(Clone)]
4131    pub struct OnlyEigenPodManager;
4132    #[allow(
4133        non_camel_case_types,
4134        non_snake_case,
4135        clippy::pub_underscore_fields,
4136        clippy::style
4137    )]
4138    const _: () = {
4139        use alloy::sol_types as alloy_sol_types;
4140        #[doc(hidden)]
4141        type UnderlyingSolTuple<'a> = ();
4142        #[doc(hidden)]
4143        type UnderlyingRustTuple<'a> = ();
4144        #[cfg(test)]
4145        #[allow(dead_code, unreachable_patterns)]
4146        fn _type_assertion(
4147            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4148        ) {
4149            match _t {
4150                alloy_sol_types::private::AssertTypeEq::<
4151                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4152                >(_) => {}
4153            }
4154        }
4155        #[automatically_derived]
4156        #[doc(hidden)]
4157        impl ::core::convert::From<OnlyEigenPodManager> for UnderlyingRustTuple<'_> {
4158            fn from(value: OnlyEigenPodManager) -> Self {
4159                ()
4160            }
4161        }
4162        #[automatically_derived]
4163        #[doc(hidden)]
4164        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyEigenPodManager {
4165            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4166                Self
4167            }
4168        }
4169        #[automatically_derived]
4170        impl alloy_sol_types::SolError for OnlyEigenPodManager {
4171            type Parameters<'a> = UnderlyingSolTuple<'a>;
4172            type Token<'a> = <Self::Parameters<
4173                'a,
4174            > as alloy_sol_types::SolType>::Token<'a>;
4175            const SIGNATURE: &'static str = "OnlyEigenPodManager()";
4176            const SELECTOR: [u8; 4] = [200u8, 78u8, 153u8, 132u8];
4177            #[inline]
4178            fn new<'a>(
4179                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4180            ) -> Self {
4181                tuple.into()
4182            }
4183            #[inline]
4184            fn tokenize(&self) -> Self::Token<'_> {
4185                ()
4186            }
4187            #[inline]
4188            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4189                <Self::Parameters<
4190                    '_,
4191                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4192                    .map(Self::new)
4193            }
4194        }
4195    };
4196    #[derive(serde::Serialize, serde::Deserialize)]
4197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4198    /**Custom error with signature `OnlyPauser()` and selector `0x75df51dc`.
4199```solidity
4200error OnlyPauser();
4201```*/
4202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4203    #[derive(Clone)]
4204    pub struct OnlyPauser;
4205    #[allow(
4206        non_camel_case_types,
4207        non_snake_case,
4208        clippy::pub_underscore_fields,
4209        clippy::style
4210    )]
4211    const _: () = {
4212        use alloy::sol_types as alloy_sol_types;
4213        #[doc(hidden)]
4214        type UnderlyingSolTuple<'a> = ();
4215        #[doc(hidden)]
4216        type UnderlyingRustTuple<'a> = ();
4217        #[cfg(test)]
4218        #[allow(dead_code, unreachable_patterns)]
4219        fn _type_assertion(
4220            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4221        ) {
4222            match _t {
4223                alloy_sol_types::private::AssertTypeEq::<
4224                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4225                >(_) => {}
4226            }
4227        }
4228        #[automatically_derived]
4229        #[doc(hidden)]
4230        impl ::core::convert::From<OnlyPauser> for UnderlyingRustTuple<'_> {
4231            fn from(value: OnlyPauser) -> Self {
4232                ()
4233            }
4234        }
4235        #[automatically_derived]
4236        #[doc(hidden)]
4237        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyPauser {
4238            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4239                Self
4240            }
4241        }
4242        #[automatically_derived]
4243        impl alloy_sol_types::SolError for OnlyPauser {
4244            type Parameters<'a> = UnderlyingSolTuple<'a>;
4245            type Token<'a> = <Self::Parameters<
4246                'a,
4247            > as alloy_sol_types::SolType>::Token<'a>;
4248            const SIGNATURE: &'static str = "OnlyPauser()";
4249            const SELECTOR: [u8; 4] = [117u8, 223u8, 81u8, 220u8];
4250            #[inline]
4251            fn new<'a>(
4252                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4253            ) -> Self {
4254                tuple.into()
4255            }
4256            #[inline]
4257            fn tokenize(&self) -> Self::Token<'_> {
4258                ()
4259            }
4260            #[inline]
4261            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4262                <Self::Parameters<
4263                    '_,
4264                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4265                    .map(Self::new)
4266            }
4267        }
4268    };
4269    #[derive(serde::Serialize, serde::Deserialize)]
4270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4271    /**Custom error with signature `OnlyStrategyManagerOrEigenPodManager()` and selector `0x11481a94`.
4272```solidity
4273error OnlyStrategyManagerOrEigenPodManager();
4274```*/
4275    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4276    #[derive(Clone)]
4277    pub struct OnlyStrategyManagerOrEigenPodManager;
4278    #[allow(
4279        non_camel_case_types,
4280        non_snake_case,
4281        clippy::pub_underscore_fields,
4282        clippy::style
4283    )]
4284    const _: () = {
4285        use alloy::sol_types as alloy_sol_types;
4286        #[doc(hidden)]
4287        type UnderlyingSolTuple<'a> = ();
4288        #[doc(hidden)]
4289        type UnderlyingRustTuple<'a> = ();
4290        #[cfg(test)]
4291        #[allow(dead_code, unreachable_patterns)]
4292        fn _type_assertion(
4293            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4294        ) {
4295            match _t {
4296                alloy_sol_types::private::AssertTypeEq::<
4297                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4298                >(_) => {}
4299            }
4300        }
4301        #[automatically_derived]
4302        #[doc(hidden)]
4303        impl ::core::convert::From<OnlyStrategyManagerOrEigenPodManager>
4304        for UnderlyingRustTuple<'_> {
4305            fn from(value: OnlyStrategyManagerOrEigenPodManager) -> Self {
4306                ()
4307            }
4308        }
4309        #[automatically_derived]
4310        #[doc(hidden)]
4311        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4312        for OnlyStrategyManagerOrEigenPodManager {
4313            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4314                Self
4315            }
4316        }
4317        #[automatically_derived]
4318        impl alloy_sol_types::SolError for OnlyStrategyManagerOrEigenPodManager {
4319            type Parameters<'a> = UnderlyingSolTuple<'a>;
4320            type Token<'a> = <Self::Parameters<
4321                'a,
4322            > as alloy_sol_types::SolType>::Token<'a>;
4323            const SIGNATURE: &'static str = "OnlyStrategyManagerOrEigenPodManager()";
4324            const SELECTOR: [u8; 4] = [17u8, 72u8, 26u8, 148u8];
4325            #[inline]
4326            fn new<'a>(
4327                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4328            ) -> Self {
4329                tuple.into()
4330            }
4331            #[inline]
4332            fn tokenize(&self) -> Self::Token<'_> {
4333                ()
4334            }
4335            #[inline]
4336            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4337                <Self::Parameters<
4338                    '_,
4339                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4340                    .map(Self::new)
4341            }
4342        }
4343    };
4344    #[derive(serde::Serialize, serde::Deserialize)]
4345    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4346    /**Custom error with signature `OnlyUnpauser()` and selector `0x794821ff`.
4347```solidity
4348error OnlyUnpauser();
4349```*/
4350    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4351    #[derive(Clone)]
4352    pub struct OnlyUnpauser;
4353    #[allow(
4354        non_camel_case_types,
4355        non_snake_case,
4356        clippy::pub_underscore_fields,
4357        clippy::style
4358    )]
4359    const _: () = {
4360        use alloy::sol_types as alloy_sol_types;
4361        #[doc(hidden)]
4362        type UnderlyingSolTuple<'a> = ();
4363        #[doc(hidden)]
4364        type UnderlyingRustTuple<'a> = ();
4365        #[cfg(test)]
4366        #[allow(dead_code, unreachable_patterns)]
4367        fn _type_assertion(
4368            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4369        ) {
4370            match _t {
4371                alloy_sol_types::private::AssertTypeEq::<
4372                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4373                >(_) => {}
4374            }
4375        }
4376        #[automatically_derived]
4377        #[doc(hidden)]
4378        impl ::core::convert::From<OnlyUnpauser> for UnderlyingRustTuple<'_> {
4379            fn from(value: OnlyUnpauser) -> Self {
4380                ()
4381            }
4382        }
4383        #[automatically_derived]
4384        #[doc(hidden)]
4385        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyUnpauser {
4386            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4387                Self
4388            }
4389        }
4390        #[automatically_derived]
4391        impl alloy_sol_types::SolError for OnlyUnpauser {
4392            type Parameters<'a> = UnderlyingSolTuple<'a>;
4393            type Token<'a> = <Self::Parameters<
4394                'a,
4395            > as alloy_sol_types::SolType>::Token<'a>;
4396            const SIGNATURE: &'static str = "OnlyUnpauser()";
4397            const SELECTOR: [u8; 4] = [121u8, 72u8, 33u8, 255u8];
4398            #[inline]
4399            fn new<'a>(
4400                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4401            ) -> Self {
4402                tuple.into()
4403            }
4404            #[inline]
4405            fn tokenize(&self) -> Self::Token<'_> {
4406                ()
4407            }
4408            #[inline]
4409            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4410                <Self::Parameters<
4411                    '_,
4412                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4413                    .map(Self::new)
4414            }
4415        }
4416    };
4417    #[derive(serde::Serialize, serde::Deserialize)]
4418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4419    /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`.
4420```solidity
4421error OperatorNotRegistered();
4422```*/
4423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4424    #[derive(Clone)]
4425    pub struct OperatorNotRegistered;
4426    #[allow(
4427        non_camel_case_types,
4428        non_snake_case,
4429        clippy::pub_underscore_fields,
4430        clippy::style
4431    )]
4432    const _: () = {
4433        use alloy::sol_types as alloy_sol_types;
4434        #[doc(hidden)]
4435        type UnderlyingSolTuple<'a> = ();
4436        #[doc(hidden)]
4437        type UnderlyingRustTuple<'a> = ();
4438        #[cfg(test)]
4439        #[allow(dead_code, unreachable_patterns)]
4440        fn _type_assertion(
4441            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4442        ) {
4443            match _t {
4444                alloy_sol_types::private::AssertTypeEq::<
4445                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4446                >(_) => {}
4447            }
4448        }
4449        #[automatically_derived]
4450        #[doc(hidden)]
4451        impl ::core::convert::From<OperatorNotRegistered> for UnderlyingRustTuple<'_> {
4452            fn from(value: OperatorNotRegistered) -> Self {
4453                ()
4454            }
4455        }
4456        #[automatically_derived]
4457        #[doc(hidden)]
4458        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorNotRegistered {
4459            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4460                Self
4461            }
4462        }
4463        #[automatically_derived]
4464        impl alloy_sol_types::SolError for OperatorNotRegistered {
4465            type Parameters<'a> = UnderlyingSolTuple<'a>;
4466            type Token<'a> = <Self::Parameters<
4467                'a,
4468            > as alloy_sol_types::SolType>::Token<'a>;
4469            const SIGNATURE: &'static str = "OperatorNotRegistered()";
4470            const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8];
4471            #[inline]
4472            fn new<'a>(
4473                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4474            ) -> Self {
4475                tuple.into()
4476            }
4477            #[inline]
4478            fn tokenize(&self) -> Self::Token<'_> {
4479                ()
4480            }
4481            #[inline]
4482            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4483                <Self::Parameters<
4484                    '_,
4485                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4486                    .map(Self::new)
4487            }
4488        }
4489    };
4490    #[derive(serde::Serialize, serde::Deserialize)]
4491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4492    /**Custom error with signature `OperatorsCannotUndelegate()` and selector `0x8e5199a8`.
4493```solidity
4494error OperatorsCannotUndelegate();
4495```*/
4496    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4497    #[derive(Clone)]
4498    pub struct OperatorsCannotUndelegate;
4499    #[allow(
4500        non_camel_case_types,
4501        non_snake_case,
4502        clippy::pub_underscore_fields,
4503        clippy::style
4504    )]
4505    const _: () = {
4506        use alloy::sol_types as alloy_sol_types;
4507        #[doc(hidden)]
4508        type UnderlyingSolTuple<'a> = ();
4509        #[doc(hidden)]
4510        type UnderlyingRustTuple<'a> = ();
4511        #[cfg(test)]
4512        #[allow(dead_code, unreachable_patterns)]
4513        fn _type_assertion(
4514            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4515        ) {
4516            match _t {
4517                alloy_sol_types::private::AssertTypeEq::<
4518                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4519                >(_) => {}
4520            }
4521        }
4522        #[automatically_derived]
4523        #[doc(hidden)]
4524        impl ::core::convert::From<OperatorsCannotUndelegate>
4525        for UnderlyingRustTuple<'_> {
4526            fn from(value: OperatorsCannotUndelegate) -> Self {
4527                ()
4528            }
4529        }
4530        #[automatically_derived]
4531        #[doc(hidden)]
4532        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4533        for OperatorsCannotUndelegate {
4534            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4535                Self
4536            }
4537        }
4538        #[automatically_derived]
4539        impl alloy_sol_types::SolError for OperatorsCannotUndelegate {
4540            type Parameters<'a> = UnderlyingSolTuple<'a>;
4541            type Token<'a> = <Self::Parameters<
4542                'a,
4543            > as alloy_sol_types::SolType>::Token<'a>;
4544            const SIGNATURE: &'static str = "OperatorsCannotUndelegate()";
4545            const SELECTOR: [u8; 4] = [142u8, 81u8, 153u8, 168u8];
4546            #[inline]
4547            fn new<'a>(
4548                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4549            ) -> Self {
4550                tuple.into()
4551            }
4552            #[inline]
4553            fn tokenize(&self) -> Self::Token<'_> {
4554                ()
4555            }
4556            #[inline]
4557            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4558                <Self::Parameters<
4559                    '_,
4560                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4561                    .map(Self::new)
4562            }
4563        }
4564    };
4565    #[derive(serde::Serialize, serde::Deserialize)]
4566    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4567    /**Custom error with signature `SaltSpent()` and selector `0x35313244`.
4568```solidity
4569error SaltSpent();
4570```*/
4571    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4572    #[derive(Clone)]
4573    pub struct SaltSpent;
4574    #[allow(
4575        non_camel_case_types,
4576        non_snake_case,
4577        clippy::pub_underscore_fields,
4578        clippy::style
4579    )]
4580    const _: () = {
4581        use alloy::sol_types as alloy_sol_types;
4582        #[doc(hidden)]
4583        type UnderlyingSolTuple<'a> = ();
4584        #[doc(hidden)]
4585        type UnderlyingRustTuple<'a> = ();
4586        #[cfg(test)]
4587        #[allow(dead_code, unreachable_patterns)]
4588        fn _type_assertion(
4589            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4590        ) {
4591            match _t {
4592                alloy_sol_types::private::AssertTypeEq::<
4593                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4594                >(_) => {}
4595            }
4596        }
4597        #[automatically_derived]
4598        #[doc(hidden)]
4599        impl ::core::convert::From<SaltSpent> for UnderlyingRustTuple<'_> {
4600            fn from(value: SaltSpent) -> Self {
4601                ()
4602            }
4603        }
4604        #[automatically_derived]
4605        #[doc(hidden)]
4606        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SaltSpent {
4607            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4608                Self
4609            }
4610        }
4611        #[automatically_derived]
4612        impl alloy_sol_types::SolError for SaltSpent {
4613            type Parameters<'a> = UnderlyingSolTuple<'a>;
4614            type Token<'a> = <Self::Parameters<
4615                'a,
4616            > as alloy_sol_types::SolType>::Token<'a>;
4617            const SIGNATURE: &'static str = "SaltSpent()";
4618            const SELECTOR: [u8; 4] = [53u8, 49u8, 50u8, 68u8];
4619            #[inline]
4620            fn new<'a>(
4621                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4622            ) -> Self {
4623                tuple.into()
4624            }
4625            #[inline]
4626            fn tokenize(&self) -> Self::Token<'_> {
4627                ()
4628            }
4629            #[inline]
4630            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4631                <Self::Parameters<
4632                    '_,
4633                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4634                    .map(Self::new)
4635            }
4636        }
4637    };
4638    #[derive(serde::Serialize, serde::Deserialize)]
4639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4640    /**Custom error with signature `SignatureExpired()` and selector `0x0819bdcd`.
4641```solidity
4642error SignatureExpired();
4643```*/
4644    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4645    #[derive(Clone)]
4646    pub struct SignatureExpired;
4647    #[allow(
4648        non_camel_case_types,
4649        non_snake_case,
4650        clippy::pub_underscore_fields,
4651        clippy::style
4652    )]
4653    const _: () = {
4654        use alloy::sol_types as alloy_sol_types;
4655        #[doc(hidden)]
4656        type UnderlyingSolTuple<'a> = ();
4657        #[doc(hidden)]
4658        type UnderlyingRustTuple<'a> = ();
4659        #[cfg(test)]
4660        #[allow(dead_code, unreachable_patterns)]
4661        fn _type_assertion(
4662            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4663        ) {
4664            match _t {
4665                alloy_sol_types::private::AssertTypeEq::<
4666                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4667                >(_) => {}
4668            }
4669        }
4670        #[automatically_derived]
4671        #[doc(hidden)]
4672        impl ::core::convert::From<SignatureExpired> for UnderlyingRustTuple<'_> {
4673            fn from(value: SignatureExpired) -> Self {
4674                ()
4675            }
4676        }
4677        #[automatically_derived]
4678        #[doc(hidden)]
4679        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SignatureExpired {
4680            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4681                Self
4682            }
4683        }
4684        #[automatically_derived]
4685        impl alloy_sol_types::SolError for SignatureExpired {
4686            type Parameters<'a> = UnderlyingSolTuple<'a>;
4687            type Token<'a> = <Self::Parameters<
4688                'a,
4689            > as alloy_sol_types::SolType>::Token<'a>;
4690            const SIGNATURE: &'static str = "SignatureExpired()";
4691            const SELECTOR: [u8; 4] = [8u8, 25u8, 189u8, 205u8];
4692            #[inline]
4693            fn new<'a>(
4694                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4695            ) -> Self {
4696                tuple.into()
4697            }
4698            #[inline]
4699            fn tokenize(&self) -> Self::Token<'_> {
4700                ()
4701            }
4702            #[inline]
4703            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4704                <Self::Parameters<
4705                    '_,
4706                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4707                    .map(Self::new)
4708            }
4709        }
4710    };
4711    #[derive(serde::Serialize, serde::Deserialize)]
4712    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4713    /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`.
4714```solidity
4715error StringTooLong(string str);
4716```*/
4717    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4718    #[derive(Clone)]
4719    pub struct StringTooLong {
4720        #[allow(missing_docs)]
4721        pub str: alloy::sol_types::private::String,
4722    }
4723    #[allow(
4724        non_camel_case_types,
4725        non_snake_case,
4726        clippy::pub_underscore_fields,
4727        clippy::style
4728    )]
4729    const _: () = {
4730        use alloy::sol_types as alloy_sol_types;
4731        #[doc(hidden)]
4732        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
4733        #[doc(hidden)]
4734        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
4735        #[cfg(test)]
4736        #[allow(dead_code, unreachable_patterns)]
4737        fn _type_assertion(
4738            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4739        ) {
4740            match _t {
4741                alloy_sol_types::private::AssertTypeEq::<
4742                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4743                >(_) => {}
4744            }
4745        }
4746        #[automatically_derived]
4747        #[doc(hidden)]
4748        impl ::core::convert::From<StringTooLong> for UnderlyingRustTuple<'_> {
4749            fn from(value: StringTooLong) -> Self {
4750                (value.str,)
4751            }
4752        }
4753        #[automatically_derived]
4754        #[doc(hidden)]
4755        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StringTooLong {
4756            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4757                Self { str: tuple.0 }
4758            }
4759        }
4760        #[automatically_derived]
4761        impl alloy_sol_types::SolError for StringTooLong {
4762            type Parameters<'a> = UnderlyingSolTuple<'a>;
4763            type Token<'a> = <Self::Parameters<
4764                'a,
4765            > as alloy_sol_types::SolType>::Token<'a>;
4766            const SIGNATURE: &'static str = "StringTooLong(string)";
4767            const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8];
4768            #[inline]
4769            fn new<'a>(
4770                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4771            ) -> Self {
4772                tuple.into()
4773            }
4774            #[inline]
4775            fn tokenize(&self) -> Self::Token<'_> {
4776                (
4777                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
4778                        &self.str,
4779                    ),
4780                )
4781            }
4782            #[inline]
4783            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4784                <Self::Parameters<
4785                    '_,
4786                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4787                    .map(Self::new)
4788            }
4789        }
4790    };
4791    #[derive(serde::Serialize, serde::Deserialize)]
4792    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4793    /**Custom error with signature `WithdrawalDelayNotElapsed()` and selector `0xf1ecf5c2`.
4794```solidity
4795error WithdrawalDelayNotElapsed();
4796```*/
4797    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4798    #[derive(Clone)]
4799    pub struct WithdrawalDelayNotElapsed;
4800    #[allow(
4801        non_camel_case_types,
4802        non_snake_case,
4803        clippy::pub_underscore_fields,
4804        clippy::style
4805    )]
4806    const _: () = {
4807        use alloy::sol_types as alloy_sol_types;
4808        #[doc(hidden)]
4809        type UnderlyingSolTuple<'a> = ();
4810        #[doc(hidden)]
4811        type UnderlyingRustTuple<'a> = ();
4812        #[cfg(test)]
4813        #[allow(dead_code, unreachable_patterns)]
4814        fn _type_assertion(
4815            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4816        ) {
4817            match _t {
4818                alloy_sol_types::private::AssertTypeEq::<
4819                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4820                >(_) => {}
4821            }
4822        }
4823        #[automatically_derived]
4824        #[doc(hidden)]
4825        impl ::core::convert::From<WithdrawalDelayNotElapsed>
4826        for UnderlyingRustTuple<'_> {
4827            fn from(value: WithdrawalDelayNotElapsed) -> Self {
4828                ()
4829            }
4830        }
4831        #[automatically_derived]
4832        #[doc(hidden)]
4833        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4834        for WithdrawalDelayNotElapsed {
4835            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4836                Self
4837            }
4838        }
4839        #[automatically_derived]
4840        impl alloy_sol_types::SolError for WithdrawalDelayNotElapsed {
4841            type Parameters<'a> = UnderlyingSolTuple<'a>;
4842            type Token<'a> = <Self::Parameters<
4843                'a,
4844            > as alloy_sol_types::SolType>::Token<'a>;
4845            const SIGNATURE: &'static str = "WithdrawalDelayNotElapsed()";
4846            const SELECTOR: [u8; 4] = [241u8, 236u8, 245u8, 194u8];
4847            #[inline]
4848            fn new<'a>(
4849                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4850            ) -> Self {
4851                tuple.into()
4852            }
4853            #[inline]
4854            fn tokenize(&self) -> Self::Token<'_> {
4855                ()
4856            }
4857            #[inline]
4858            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4859                <Self::Parameters<
4860                    '_,
4861                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4862                    .map(Self::new)
4863            }
4864        }
4865    };
4866    #[derive(serde::Serialize, serde::Deserialize)]
4867    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4868    /**Custom error with signature `WithdrawalNotQueued()` and selector `0x87c9d219`.
4869```solidity
4870error WithdrawalNotQueued();
4871```*/
4872    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4873    #[derive(Clone)]
4874    pub struct WithdrawalNotQueued;
4875    #[allow(
4876        non_camel_case_types,
4877        non_snake_case,
4878        clippy::pub_underscore_fields,
4879        clippy::style
4880    )]
4881    const _: () = {
4882        use alloy::sol_types as alloy_sol_types;
4883        #[doc(hidden)]
4884        type UnderlyingSolTuple<'a> = ();
4885        #[doc(hidden)]
4886        type UnderlyingRustTuple<'a> = ();
4887        #[cfg(test)]
4888        #[allow(dead_code, unreachable_patterns)]
4889        fn _type_assertion(
4890            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4891        ) {
4892            match _t {
4893                alloy_sol_types::private::AssertTypeEq::<
4894                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4895                >(_) => {}
4896            }
4897        }
4898        #[automatically_derived]
4899        #[doc(hidden)]
4900        impl ::core::convert::From<WithdrawalNotQueued> for UnderlyingRustTuple<'_> {
4901            fn from(value: WithdrawalNotQueued) -> Self {
4902                ()
4903            }
4904        }
4905        #[automatically_derived]
4906        #[doc(hidden)]
4907        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WithdrawalNotQueued {
4908            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4909                Self
4910            }
4911        }
4912        #[automatically_derived]
4913        impl alloy_sol_types::SolError for WithdrawalNotQueued {
4914            type Parameters<'a> = UnderlyingSolTuple<'a>;
4915            type Token<'a> = <Self::Parameters<
4916                'a,
4917            > as alloy_sol_types::SolType>::Token<'a>;
4918            const SIGNATURE: &'static str = "WithdrawalNotQueued()";
4919            const SELECTOR: [u8; 4] = [135u8, 201u8, 210u8, 25u8];
4920            #[inline]
4921            fn new<'a>(
4922                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4923            ) -> Self {
4924                tuple.into()
4925            }
4926            #[inline]
4927            fn tokenize(&self) -> Self::Token<'_> {
4928                ()
4929            }
4930            #[inline]
4931            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4932                <Self::Parameters<
4933                    '_,
4934                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4935                    .map(Self::new)
4936            }
4937        }
4938    };
4939    #[derive(serde::Serialize, serde::Deserialize)]
4940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4941    /**Custom error with signature `WithdrawerNotCaller()` and selector `0x584434d4`.
4942```solidity
4943error WithdrawerNotCaller();
4944```*/
4945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4946    #[derive(Clone)]
4947    pub struct WithdrawerNotCaller;
4948    #[allow(
4949        non_camel_case_types,
4950        non_snake_case,
4951        clippy::pub_underscore_fields,
4952        clippy::style
4953    )]
4954    const _: () = {
4955        use alloy::sol_types as alloy_sol_types;
4956        #[doc(hidden)]
4957        type UnderlyingSolTuple<'a> = ();
4958        #[doc(hidden)]
4959        type UnderlyingRustTuple<'a> = ();
4960        #[cfg(test)]
4961        #[allow(dead_code, unreachable_patterns)]
4962        fn _type_assertion(
4963            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4964        ) {
4965            match _t {
4966                alloy_sol_types::private::AssertTypeEq::<
4967                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4968                >(_) => {}
4969            }
4970        }
4971        #[automatically_derived]
4972        #[doc(hidden)]
4973        impl ::core::convert::From<WithdrawerNotCaller> for UnderlyingRustTuple<'_> {
4974            fn from(value: WithdrawerNotCaller) -> Self {
4975                ()
4976            }
4977        }
4978        #[automatically_derived]
4979        #[doc(hidden)]
4980        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WithdrawerNotCaller {
4981            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4982                Self
4983            }
4984        }
4985        #[automatically_derived]
4986        impl alloy_sol_types::SolError for WithdrawerNotCaller {
4987            type Parameters<'a> = UnderlyingSolTuple<'a>;
4988            type Token<'a> = <Self::Parameters<
4989                'a,
4990            > as alloy_sol_types::SolType>::Token<'a>;
4991            const SIGNATURE: &'static str = "WithdrawerNotCaller()";
4992            const SELECTOR: [u8; 4] = [88u8, 68u8, 52u8, 212u8];
4993            #[inline]
4994            fn new<'a>(
4995                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4996            ) -> Self {
4997                tuple.into()
4998            }
4999            #[inline]
5000            fn tokenize(&self) -> Self::Token<'_> {
5001                ()
5002            }
5003            #[inline]
5004            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5005                <Self::Parameters<
5006                    '_,
5007                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5008                    .map(Self::new)
5009            }
5010        }
5011    };
5012    #[derive(serde::Serialize, serde::Deserialize)]
5013    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5014    /**Event with signature `DelegationApproverUpdated(address,address)` and selector `0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6`.
5015```solidity
5016event DelegationApproverUpdated(address indexed operator, address newDelegationApprover);
5017```*/
5018    #[allow(
5019        non_camel_case_types,
5020        non_snake_case,
5021        clippy::pub_underscore_fields,
5022        clippy::style
5023    )]
5024    #[derive(Clone)]
5025    pub struct DelegationApproverUpdated {
5026        #[allow(missing_docs)]
5027        pub operator: alloy::sol_types::private::Address,
5028        #[allow(missing_docs)]
5029        pub newDelegationApprover: alloy::sol_types::private::Address,
5030    }
5031    #[allow(
5032        non_camel_case_types,
5033        non_snake_case,
5034        clippy::pub_underscore_fields,
5035        clippy::style
5036    )]
5037    const _: () = {
5038        use alloy::sol_types as alloy_sol_types;
5039        #[automatically_derived]
5040        impl alloy_sol_types::SolEvent for DelegationApproverUpdated {
5041            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
5042            type DataToken<'a> = <Self::DataTuple<
5043                'a,
5044            > as alloy_sol_types::SolType>::Token<'a>;
5045            type TopicList = (
5046                alloy_sol_types::sol_data::FixedBytes<32>,
5047                alloy::sol_types::sol_data::Address,
5048            );
5049            const SIGNATURE: &'static str = "DelegationApproverUpdated(address,address)";
5050            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5051                119u8, 59u8, 84u8, 192u8, 77u8, 117u8, 111u8, 204u8, 94u8, 103u8, 129u8,
5052                17u8, 247u8, 215u8, 48u8, 222u8, 59u8, 233u8, 129u8, 146u8, 0u8, 7u8,
5053                153u8, 238u8, 227u8, 214u8, 55u8, 22u8, 5u8, 90u8, 135u8, 198u8,
5054            ]);
5055            const ANONYMOUS: bool = false;
5056            #[allow(unused_variables)]
5057            #[inline]
5058            fn new(
5059                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5060                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5061            ) -> Self {
5062                Self {
5063                    operator: topics.1,
5064                    newDelegationApprover: data.0,
5065                }
5066            }
5067            #[inline]
5068            fn check_signature(
5069                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5070            ) -> alloy_sol_types::Result<()> {
5071                if topics.0 != Self::SIGNATURE_HASH {
5072                    return Err(
5073                        alloy_sol_types::Error::invalid_event_signature_hash(
5074                            Self::SIGNATURE,
5075                            topics.0,
5076                            Self::SIGNATURE_HASH,
5077                        ),
5078                    );
5079                }
5080                Ok(())
5081            }
5082            #[inline]
5083            fn tokenize_body(&self) -> Self::DataToken<'_> {
5084                (
5085                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5086                        &self.newDelegationApprover,
5087                    ),
5088                )
5089            }
5090            #[inline]
5091            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5092                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5093            }
5094            #[inline]
5095            fn encode_topics_raw(
5096                &self,
5097                out: &mut [alloy_sol_types::abi::token::WordToken],
5098            ) -> alloy_sol_types::Result<()> {
5099                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5100                    return Err(alloy_sol_types::Error::Overrun);
5101                }
5102                out[0usize] = alloy_sol_types::abi::token::WordToken(
5103                    Self::SIGNATURE_HASH,
5104                );
5105                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5106                    &self.operator,
5107                );
5108                Ok(())
5109            }
5110        }
5111        #[automatically_derived]
5112        impl alloy_sol_types::private::IntoLogData for DelegationApproverUpdated {
5113            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5114                From::from(self)
5115            }
5116            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5117                From::from(&self)
5118            }
5119        }
5120        #[automatically_derived]
5121        impl From<&DelegationApproverUpdated> for alloy_sol_types::private::LogData {
5122            #[inline]
5123            fn from(
5124                this: &DelegationApproverUpdated,
5125            ) -> alloy_sol_types::private::LogData {
5126                alloy_sol_types::SolEvent::encode_log_data(this)
5127            }
5128        }
5129    };
5130    #[derive(serde::Serialize, serde::Deserialize)]
5131    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5132    /**Event with signature `DepositScalingFactorUpdated(address,address,uint256)` and selector `0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f`.
5133```solidity
5134event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor);
5135```*/
5136    #[allow(
5137        non_camel_case_types,
5138        non_snake_case,
5139        clippy::pub_underscore_fields,
5140        clippy::style
5141    )]
5142    #[derive(Clone)]
5143    pub struct DepositScalingFactorUpdated {
5144        #[allow(missing_docs)]
5145        pub staker: alloy::sol_types::private::Address,
5146        #[allow(missing_docs)]
5147        pub strategy: alloy::sol_types::private::Address,
5148        #[allow(missing_docs)]
5149        pub newDepositScalingFactor: alloy::sol_types::private::primitives::aliases::U256,
5150    }
5151    #[allow(
5152        non_camel_case_types,
5153        non_snake_case,
5154        clippy::pub_underscore_fields,
5155        clippy::style
5156    )]
5157    const _: () = {
5158        use alloy::sol_types as alloy_sol_types;
5159        #[automatically_derived]
5160        impl alloy_sol_types::SolEvent for DepositScalingFactorUpdated {
5161            type DataTuple<'a> = (
5162                alloy::sol_types::sol_data::Address,
5163                alloy::sol_types::sol_data::Address,
5164                alloy::sol_types::sol_data::Uint<256>,
5165            );
5166            type DataToken<'a> = <Self::DataTuple<
5167                'a,
5168            > as alloy_sol_types::SolType>::Token<'a>;
5169            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5170            const SIGNATURE: &'static str = "DepositScalingFactorUpdated(address,address,uint256)";
5171            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5172                139u8, 233u8, 50u8, 186u8, 197u8, 69u8, 97u8, 242u8, 114u8, 96u8, 249u8,
5173                84u8, 99u8, 217u8, 184u8, 171u8, 55u8, 224u8, 107u8, 40u8, 66u8, 229u8,
5174                238u8, 36u8, 4u8, 21u8, 124u8, 193u8, 61u8, 246u8, 235u8, 143u8,
5175            ]);
5176            const ANONYMOUS: bool = false;
5177            #[allow(unused_variables)]
5178            #[inline]
5179            fn new(
5180                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5181                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5182            ) -> Self {
5183                Self {
5184                    staker: data.0,
5185                    strategy: data.1,
5186                    newDepositScalingFactor: data.2,
5187                }
5188            }
5189            #[inline]
5190            fn check_signature(
5191                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5192            ) -> alloy_sol_types::Result<()> {
5193                if topics.0 != Self::SIGNATURE_HASH {
5194                    return Err(
5195                        alloy_sol_types::Error::invalid_event_signature_hash(
5196                            Self::SIGNATURE,
5197                            topics.0,
5198                            Self::SIGNATURE_HASH,
5199                        ),
5200                    );
5201                }
5202                Ok(())
5203            }
5204            #[inline]
5205            fn tokenize_body(&self) -> Self::DataToken<'_> {
5206                (
5207                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5208                        &self.staker,
5209                    ),
5210                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5211                        &self.strategy,
5212                    ),
5213                    <alloy::sol_types::sol_data::Uint<
5214                        256,
5215                    > as alloy_sol_types::SolType>::tokenize(
5216                        &self.newDepositScalingFactor,
5217                    ),
5218                )
5219            }
5220            #[inline]
5221            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5222                (Self::SIGNATURE_HASH.into(),)
5223            }
5224            #[inline]
5225            fn encode_topics_raw(
5226                &self,
5227                out: &mut [alloy_sol_types::abi::token::WordToken],
5228            ) -> alloy_sol_types::Result<()> {
5229                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5230                    return Err(alloy_sol_types::Error::Overrun);
5231                }
5232                out[0usize] = alloy_sol_types::abi::token::WordToken(
5233                    Self::SIGNATURE_HASH,
5234                );
5235                Ok(())
5236            }
5237        }
5238        #[automatically_derived]
5239        impl alloy_sol_types::private::IntoLogData for DepositScalingFactorUpdated {
5240            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5241                From::from(self)
5242            }
5243            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5244                From::from(&self)
5245            }
5246        }
5247        #[automatically_derived]
5248        impl From<&DepositScalingFactorUpdated> for alloy_sol_types::private::LogData {
5249            #[inline]
5250            fn from(
5251                this: &DepositScalingFactorUpdated,
5252            ) -> alloy_sol_types::private::LogData {
5253                alloy_sol_types::SolEvent::encode_log_data(this)
5254            }
5255        }
5256    };
5257    #[derive(serde::Serialize, serde::Deserialize)]
5258    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5259    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
5260```solidity
5261event Initialized(uint8 version);
5262```*/
5263    #[allow(
5264        non_camel_case_types,
5265        non_snake_case,
5266        clippy::pub_underscore_fields,
5267        clippy::style
5268    )]
5269    #[derive(Clone)]
5270    pub struct Initialized {
5271        #[allow(missing_docs)]
5272        pub version: u8,
5273    }
5274    #[allow(
5275        non_camel_case_types,
5276        non_snake_case,
5277        clippy::pub_underscore_fields,
5278        clippy::style
5279    )]
5280    const _: () = {
5281        use alloy::sol_types as alloy_sol_types;
5282        #[automatically_derived]
5283        impl alloy_sol_types::SolEvent for Initialized {
5284            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5285            type DataToken<'a> = <Self::DataTuple<
5286                'a,
5287            > as alloy_sol_types::SolType>::Token<'a>;
5288            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5289            const SIGNATURE: &'static str = "Initialized(uint8)";
5290            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5291                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
5292                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
5293                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
5294            ]);
5295            const ANONYMOUS: bool = false;
5296            #[allow(unused_variables)]
5297            #[inline]
5298            fn new(
5299                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5300                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5301            ) -> Self {
5302                Self { version: data.0 }
5303            }
5304            #[inline]
5305            fn check_signature(
5306                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5307            ) -> alloy_sol_types::Result<()> {
5308                if topics.0 != Self::SIGNATURE_HASH {
5309                    return Err(
5310                        alloy_sol_types::Error::invalid_event_signature_hash(
5311                            Self::SIGNATURE,
5312                            topics.0,
5313                            Self::SIGNATURE_HASH,
5314                        ),
5315                    );
5316                }
5317                Ok(())
5318            }
5319            #[inline]
5320            fn tokenize_body(&self) -> Self::DataToken<'_> {
5321                (
5322                    <alloy::sol_types::sol_data::Uint<
5323                        8,
5324                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5325                )
5326            }
5327            #[inline]
5328            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5329                (Self::SIGNATURE_HASH.into(),)
5330            }
5331            #[inline]
5332            fn encode_topics_raw(
5333                &self,
5334                out: &mut [alloy_sol_types::abi::token::WordToken],
5335            ) -> alloy_sol_types::Result<()> {
5336                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5337                    return Err(alloy_sol_types::Error::Overrun);
5338                }
5339                out[0usize] = alloy_sol_types::abi::token::WordToken(
5340                    Self::SIGNATURE_HASH,
5341                );
5342                Ok(())
5343            }
5344        }
5345        #[automatically_derived]
5346        impl alloy_sol_types::private::IntoLogData for Initialized {
5347            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5348                From::from(self)
5349            }
5350            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5351                From::from(&self)
5352            }
5353        }
5354        #[automatically_derived]
5355        impl From<&Initialized> for alloy_sol_types::private::LogData {
5356            #[inline]
5357            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5358                alloy_sol_types::SolEvent::encode_log_data(this)
5359            }
5360        }
5361    };
5362    #[derive(serde::Serialize, serde::Deserialize)]
5363    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5364    /**Event with signature `OperatorMetadataURIUpdated(address,string)` and selector `0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090`.
5365```solidity
5366event OperatorMetadataURIUpdated(address indexed operator, string metadataURI);
5367```*/
5368    #[allow(
5369        non_camel_case_types,
5370        non_snake_case,
5371        clippy::pub_underscore_fields,
5372        clippy::style
5373    )]
5374    #[derive(Clone)]
5375    pub struct OperatorMetadataURIUpdated {
5376        #[allow(missing_docs)]
5377        pub operator: alloy::sol_types::private::Address,
5378        #[allow(missing_docs)]
5379        pub metadataURI: alloy::sol_types::private::String,
5380    }
5381    #[allow(
5382        non_camel_case_types,
5383        non_snake_case,
5384        clippy::pub_underscore_fields,
5385        clippy::style
5386    )]
5387    const _: () = {
5388        use alloy::sol_types as alloy_sol_types;
5389        #[automatically_derived]
5390        impl alloy_sol_types::SolEvent for OperatorMetadataURIUpdated {
5391            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
5392            type DataToken<'a> = <Self::DataTuple<
5393                'a,
5394            > as alloy_sol_types::SolType>::Token<'a>;
5395            type TopicList = (
5396                alloy_sol_types::sol_data::FixedBytes<32>,
5397                alloy::sol_types::sol_data::Address,
5398            );
5399            const SIGNATURE: &'static str = "OperatorMetadataURIUpdated(address,string)";
5400            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5401                2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8,
5402                126u8, 242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8,
5403                3u8, 74u8, 133u8, 49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8,
5404            ]);
5405            const ANONYMOUS: bool = false;
5406            #[allow(unused_variables)]
5407            #[inline]
5408            fn new(
5409                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5410                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5411            ) -> Self {
5412                Self {
5413                    operator: topics.1,
5414                    metadataURI: data.0,
5415                }
5416            }
5417            #[inline]
5418            fn check_signature(
5419                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5420            ) -> alloy_sol_types::Result<()> {
5421                if topics.0 != Self::SIGNATURE_HASH {
5422                    return Err(
5423                        alloy_sol_types::Error::invalid_event_signature_hash(
5424                            Self::SIGNATURE,
5425                            topics.0,
5426                            Self::SIGNATURE_HASH,
5427                        ),
5428                    );
5429                }
5430                Ok(())
5431            }
5432            #[inline]
5433            fn tokenize_body(&self) -> Self::DataToken<'_> {
5434                (
5435                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
5436                        &self.metadataURI,
5437                    ),
5438                )
5439            }
5440            #[inline]
5441            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5442                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5443            }
5444            #[inline]
5445            fn encode_topics_raw(
5446                &self,
5447                out: &mut [alloy_sol_types::abi::token::WordToken],
5448            ) -> alloy_sol_types::Result<()> {
5449                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5450                    return Err(alloy_sol_types::Error::Overrun);
5451                }
5452                out[0usize] = alloy_sol_types::abi::token::WordToken(
5453                    Self::SIGNATURE_HASH,
5454                );
5455                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5456                    &self.operator,
5457                );
5458                Ok(())
5459            }
5460        }
5461        #[automatically_derived]
5462        impl alloy_sol_types::private::IntoLogData for OperatorMetadataURIUpdated {
5463            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5464                From::from(self)
5465            }
5466            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5467                From::from(&self)
5468            }
5469        }
5470        #[automatically_derived]
5471        impl From<&OperatorMetadataURIUpdated> for alloy_sol_types::private::LogData {
5472            #[inline]
5473            fn from(
5474                this: &OperatorMetadataURIUpdated,
5475            ) -> alloy_sol_types::private::LogData {
5476                alloy_sol_types::SolEvent::encode_log_data(this)
5477            }
5478        }
5479    };
5480    #[derive(serde::Serialize, serde::Deserialize)]
5481    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5482    /**Event with signature `OperatorRegistered(address,address)` and selector `0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1`.
5483```solidity
5484event OperatorRegistered(address indexed operator, address delegationApprover);
5485```*/
5486    #[allow(
5487        non_camel_case_types,
5488        non_snake_case,
5489        clippy::pub_underscore_fields,
5490        clippy::style
5491    )]
5492    #[derive(Clone)]
5493    pub struct OperatorRegistered {
5494        #[allow(missing_docs)]
5495        pub operator: alloy::sol_types::private::Address,
5496        #[allow(missing_docs)]
5497        pub delegationApprover: alloy::sol_types::private::Address,
5498    }
5499    #[allow(
5500        non_camel_case_types,
5501        non_snake_case,
5502        clippy::pub_underscore_fields,
5503        clippy::style
5504    )]
5505    const _: () = {
5506        use alloy::sol_types as alloy_sol_types;
5507        #[automatically_derived]
5508        impl alloy_sol_types::SolEvent for OperatorRegistered {
5509            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
5510            type DataToken<'a> = <Self::DataTuple<
5511                'a,
5512            > as alloy_sol_types::SolType>::Token<'a>;
5513            type TopicList = (
5514                alloy_sol_types::sol_data::FixedBytes<32>,
5515                alloy::sol_types::sol_data::Address,
5516            );
5517            const SIGNATURE: &'static str = "OperatorRegistered(address,address)";
5518            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5519                164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8,
5520                146u8, 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8,
5521                183u8, 183u8, 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8,
5522            ]);
5523            const ANONYMOUS: bool = false;
5524            #[allow(unused_variables)]
5525            #[inline]
5526            fn new(
5527                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5528                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5529            ) -> Self {
5530                Self {
5531                    operator: topics.1,
5532                    delegationApprover: data.0,
5533                }
5534            }
5535            #[inline]
5536            fn check_signature(
5537                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5538            ) -> alloy_sol_types::Result<()> {
5539                if topics.0 != Self::SIGNATURE_HASH {
5540                    return Err(
5541                        alloy_sol_types::Error::invalid_event_signature_hash(
5542                            Self::SIGNATURE,
5543                            topics.0,
5544                            Self::SIGNATURE_HASH,
5545                        ),
5546                    );
5547                }
5548                Ok(())
5549            }
5550            #[inline]
5551            fn tokenize_body(&self) -> Self::DataToken<'_> {
5552                (
5553                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5554                        &self.delegationApprover,
5555                    ),
5556                )
5557            }
5558            #[inline]
5559            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5560                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5561            }
5562            #[inline]
5563            fn encode_topics_raw(
5564                &self,
5565                out: &mut [alloy_sol_types::abi::token::WordToken],
5566            ) -> alloy_sol_types::Result<()> {
5567                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5568                    return Err(alloy_sol_types::Error::Overrun);
5569                }
5570                out[0usize] = alloy_sol_types::abi::token::WordToken(
5571                    Self::SIGNATURE_HASH,
5572                );
5573                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5574                    &self.operator,
5575                );
5576                Ok(())
5577            }
5578        }
5579        #[automatically_derived]
5580        impl alloy_sol_types::private::IntoLogData for OperatorRegistered {
5581            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5582                From::from(self)
5583            }
5584            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5585                From::from(&self)
5586            }
5587        }
5588        #[automatically_derived]
5589        impl From<&OperatorRegistered> for alloy_sol_types::private::LogData {
5590            #[inline]
5591            fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData {
5592                alloy_sol_types::SolEvent::encode_log_data(this)
5593            }
5594        }
5595    };
5596    #[derive(serde::Serialize, serde::Deserialize)]
5597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5598    /**Event with signature `OperatorSharesDecreased(address,address,address,uint256)` and selector `0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd`.
5599```solidity
5600event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares);
5601```*/
5602    #[allow(
5603        non_camel_case_types,
5604        non_snake_case,
5605        clippy::pub_underscore_fields,
5606        clippy::style
5607    )]
5608    #[derive(Clone)]
5609    pub struct OperatorSharesDecreased {
5610        #[allow(missing_docs)]
5611        pub operator: alloy::sol_types::private::Address,
5612        #[allow(missing_docs)]
5613        pub staker: alloy::sol_types::private::Address,
5614        #[allow(missing_docs)]
5615        pub strategy: alloy::sol_types::private::Address,
5616        #[allow(missing_docs)]
5617        pub shares: alloy::sol_types::private::primitives::aliases::U256,
5618    }
5619    #[allow(
5620        non_camel_case_types,
5621        non_snake_case,
5622        clippy::pub_underscore_fields,
5623        clippy::style
5624    )]
5625    const _: () = {
5626        use alloy::sol_types as alloy_sol_types;
5627        #[automatically_derived]
5628        impl alloy_sol_types::SolEvent for OperatorSharesDecreased {
5629            type DataTuple<'a> = (
5630                alloy::sol_types::sol_data::Address,
5631                alloy::sol_types::sol_data::Address,
5632                alloy::sol_types::sol_data::Uint<256>,
5633            );
5634            type DataToken<'a> = <Self::DataTuple<
5635                'a,
5636            > as alloy_sol_types::SolType>::Token<'a>;
5637            type TopicList = (
5638                alloy_sol_types::sol_data::FixedBytes<32>,
5639                alloy::sol_types::sol_data::Address,
5640            );
5641            const SIGNATURE: &'static str = "OperatorSharesDecreased(address,address,address,uint256)";
5642            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5643                105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8,
5644                221u8, 129u8, 84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8,
5645                200u8, 50u8, 170u8, 255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8,
5646            ]);
5647            const ANONYMOUS: bool = false;
5648            #[allow(unused_variables)]
5649            #[inline]
5650            fn new(
5651                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5652                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5653            ) -> Self {
5654                Self {
5655                    operator: topics.1,
5656                    staker: data.0,
5657                    strategy: data.1,
5658                    shares: data.2,
5659                }
5660            }
5661            #[inline]
5662            fn check_signature(
5663                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5664            ) -> alloy_sol_types::Result<()> {
5665                if topics.0 != Self::SIGNATURE_HASH {
5666                    return Err(
5667                        alloy_sol_types::Error::invalid_event_signature_hash(
5668                            Self::SIGNATURE,
5669                            topics.0,
5670                            Self::SIGNATURE_HASH,
5671                        ),
5672                    );
5673                }
5674                Ok(())
5675            }
5676            #[inline]
5677            fn tokenize_body(&self) -> Self::DataToken<'_> {
5678                (
5679                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5680                        &self.staker,
5681                    ),
5682                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5683                        &self.strategy,
5684                    ),
5685                    <alloy::sol_types::sol_data::Uint<
5686                        256,
5687                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
5688                )
5689            }
5690            #[inline]
5691            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5692                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5693            }
5694            #[inline]
5695            fn encode_topics_raw(
5696                &self,
5697                out: &mut [alloy_sol_types::abi::token::WordToken],
5698            ) -> alloy_sol_types::Result<()> {
5699                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5700                    return Err(alloy_sol_types::Error::Overrun);
5701                }
5702                out[0usize] = alloy_sol_types::abi::token::WordToken(
5703                    Self::SIGNATURE_HASH,
5704                );
5705                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5706                    &self.operator,
5707                );
5708                Ok(())
5709            }
5710        }
5711        #[automatically_derived]
5712        impl alloy_sol_types::private::IntoLogData for OperatorSharesDecreased {
5713            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5714                From::from(self)
5715            }
5716            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5717                From::from(&self)
5718            }
5719        }
5720        #[automatically_derived]
5721        impl From<&OperatorSharesDecreased> for alloy_sol_types::private::LogData {
5722            #[inline]
5723            fn from(
5724                this: &OperatorSharesDecreased,
5725            ) -> alloy_sol_types::private::LogData {
5726                alloy_sol_types::SolEvent::encode_log_data(this)
5727            }
5728        }
5729    };
5730    #[derive(serde::Serialize, serde::Deserialize)]
5731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5732    /**Event with signature `OperatorSharesIncreased(address,address,address,uint256)` and selector `0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c`.
5733```solidity
5734event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares);
5735```*/
5736    #[allow(
5737        non_camel_case_types,
5738        non_snake_case,
5739        clippy::pub_underscore_fields,
5740        clippy::style
5741    )]
5742    #[derive(Clone)]
5743    pub struct OperatorSharesIncreased {
5744        #[allow(missing_docs)]
5745        pub operator: alloy::sol_types::private::Address,
5746        #[allow(missing_docs)]
5747        pub staker: alloy::sol_types::private::Address,
5748        #[allow(missing_docs)]
5749        pub strategy: alloy::sol_types::private::Address,
5750        #[allow(missing_docs)]
5751        pub shares: alloy::sol_types::private::primitives::aliases::U256,
5752    }
5753    #[allow(
5754        non_camel_case_types,
5755        non_snake_case,
5756        clippy::pub_underscore_fields,
5757        clippy::style
5758    )]
5759    const _: () = {
5760        use alloy::sol_types as alloy_sol_types;
5761        #[automatically_derived]
5762        impl alloy_sol_types::SolEvent for OperatorSharesIncreased {
5763            type DataTuple<'a> = (
5764                alloy::sol_types::sol_data::Address,
5765                alloy::sol_types::sol_data::Address,
5766                alloy::sol_types::sol_data::Uint<256>,
5767            );
5768            type DataToken<'a> = <Self::DataTuple<
5769                'a,
5770            > as alloy_sol_types::SolType>::Token<'a>;
5771            type TopicList = (
5772                alloy_sol_types::sol_data::FixedBytes<32>,
5773                alloy::sol_types::sol_data::Address,
5774            );
5775            const SIGNATURE: &'static str = "OperatorSharesIncreased(address,address,address,uint256)";
5776            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5777                30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8,
5778                24u8, 142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8,
5779                171u8, 58u8, 157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8,
5780            ]);
5781            const ANONYMOUS: bool = false;
5782            #[allow(unused_variables)]
5783            #[inline]
5784            fn new(
5785                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5786                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5787            ) -> Self {
5788                Self {
5789                    operator: topics.1,
5790                    staker: data.0,
5791                    strategy: data.1,
5792                    shares: data.2,
5793                }
5794            }
5795            #[inline]
5796            fn check_signature(
5797                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5798            ) -> alloy_sol_types::Result<()> {
5799                if topics.0 != Self::SIGNATURE_HASH {
5800                    return Err(
5801                        alloy_sol_types::Error::invalid_event_signature_hash(
5802                            Self::SIGNATURE,
5803                            topics.0,
5804                            Self::SIGNATURE_HASH,
5805                        ),
5806                    );
5807                }
5808                Ok(())
5809            }
5810            #[inline]
5811            fn tokenize_body(&self) -> Self::DataToken<'_> {
5812                (
5813                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5814                        &self.staker,
5815                    ),
5816                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5817                        &self.strategy,
5818                    ),
5819                    <alloy::sol_types::sol_data::Uint<
5820                        256,
5821                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
5822                )
5823            }
5824            #[inline]
5825            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5826                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5827            }
5828            #[inline]
5829            fn encode_topics_raw(
5830                &self,
5831                out: &mut [alloy_sol_types::abi::token::WordToken],
5832            ) -> alloy_sol_types::Result<()> {
5833                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5834                    return Err(alloy_sol_types::Error::Overrun);
5835                }
5836                out[0usize] = alloy_sol_types::abi::token::WordToken(
5837                    Self::SIGNATURE_HASH,
5838                );
5839                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5840                    &self.operator,
5841                );
5842                Ok(())
5843            }
5844        }
5845        #[automatically_derived]
5846        impl alloy_sol_types::private::IntoLogData for OperatorSharesIncreased {
5847            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5848                From::from(self)
5849            }
5850            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5851                From::from(&self)
5852            }
5853        }
5854        #[automatically_derived]
5855        impl From<&OperatorSharesIncreased> for alloy_sol_types::private::LogData {
5856            #[inline]
5857            fn from(
5858                this: &OperatorSharesIncreased,
5859            ) -> alloy_sol_types::private::LogData {
5860                alloy_sol_types::SolEvent::encode_log_data(this)
5861            }
5862        }
5863    };
5864    #[derive(serde::Serialize, serde::Deserialize)]
5865    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5866    /**Event with signature `OperatorSharesSlashed(address,address,uint256)` and selector `0xdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30`.
5867```solidity
5868event OperatorSharesSlashed(address indexed operator, address strategy, uint256 totalSlashedShares);
5869```*/
5870    #[allow(
5871        non_camel_case_types,
5872        non_snake_case,
5873        clippy::pub_underscore_fields,
5874        clippy::style
5875    )]
5876    #[derive(Clone)]
5877    pub struct OperatorSharesSlashed {
5878        #[allow(missing_docs)]
5879        pub operator: alloy::sol_types::private::Address,
5880        #[allow(missing_docs)]
5881        pub strategy: alloy::sol_types::private::Address,
5882        #[allow(missing_docs)]
5883        pub totalSlashedShares: alloy::sol_types::private::primitives::aliases::U256,
5884    }
5885    #[allow(
5886        non_camel_case_types,
5887        non_snake_case,
5888        clippy::pub_underscore_fields,
5889        clippy::style
5890    )]
5891    const _: () = {
5892        use alloy::sol_types as alloy_sol_types;
5893        #[automatically_derived]
5894        impl alloy_sol_types::SolEvent for OperatorSharesSlashed {
5895            type DataTuple<'a> = (
5896                alloy::sol_types::sol_data::Address,
5897                alloy::sol_types::sol_data::Uint<256>,
5898            );
5899            type DataToken<'a> = <Self::DataTuple<
5900                'a,
5901            > as alloy_sol_types::SolType>::Token<'a>;
5902            type TopicList = (
5903                alloy_sol_types::sol_data::FixedBytes<32>,
5904                alloy::sol_types::sol_data::Address,
5905            );
5906            const SIGNATURE: &'static str = "OperatorSharesSlashed(address,address,uint256)";
5907            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5908                221u8, 97u8, 31u8, 78u8, 246u8, 63u8, 67u8, 133u8, 241u8, 117u8, 108u8,
5909                134u8, 206u8, 31u8, 31u8, 56u8, 154u8, 144u8, 19u8, 186u8, 111u8, 160u8,
5910                125u8, 171u8, 168u8, 82u8, 130u8, 145u8, 188u8, 45u8, 60u8, 48u8,
5911            ]);
5912            const ANONYMOUS: bool = false;
5913            #[allow(unused_variables)]
5914            #[inline]
5915            fn new(
5916                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5917                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5918            ) -> Self {
5919                Self {
5920                    operator: topics.1,
5921                    strategy: data.0,
5922                    totalSlashedShares: data.1,
5923                }
5924            }
5925            #[inline]
5926            fn check_signature(
5927                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5928            ) -> alloy_sol_types::Result<()> {
5929                if topics.0 != Self::SIGNATURE_HASH {
5930                    return Err(
5931                        alloy_sol_types::Error::invalid_event_signature_hash(
5932                            Self::SIGNATURE,
5933                            topics.0,
5934                            Self::SIGNATURE_HASH,
5935                        ),
5936                    );
5937                }
5938                Ok(())
5939            }
5940            #[inline]
5941            fn tokenize_body(&self) -> Self::DataToken<'_> {
5942                (
5943                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5944                        &self.strategy,
5945                    ),
5946                    <alloy::sol_types::sol_data::Uint<
5947                        256,
5948                    > as alloy_sol_types::SolType>::tokenize(&self.totalSlashedShares),
5949                )
5950            }
5951            #[inline]
5952            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5953                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5954            }
5955            #[inline]
5956            fn encode_topics_raw(
5957                &self,
5958                out: &mut [alloy_sol_types::abi::token::WordToken],
5959            ) -> alloy_sol_types::Result<()> {
5960                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5961                    return Err(alloy_sol_types::Error::Overrun);
5962                }
5963                out[0usize] = alloy_sol_types::abi::token::WordToken(
5964                    Self::SIGNATURE_HASH,
5965                );
5966                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5967                    &self.operator,
5968                );
5969                Ok(())
5970            }
5971        }
5972        #[automatically_derived]
5973        impl alloy_sol_types::private::IntoLogData for OperatorSharesSlashed {
5974            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5975                From::from(self)
5976            }
5977            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5978                From::from(&self)
5979            }
5980        }
5981        #[automatically_derived]
5982        impl From<&OperatorSharesSlashed> for alloy_sol_types::private::LogData {
5983            #[inline]
5984            fn from(this: &OperatorSharesSlashed) -> alloy_sol_types::private::LogData {
5985                alloy_sol_types::SolEvent::encode_log_data(this)
5986            }
5987        }
5988    };
5989    #[derive(serde::Serialize, serde::Deserialize)]
5990    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5991    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5992```solidity
5993event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5994```*/
5995    #[allow(
5996        non_camel_case_types,
5997        non_snake_case,
5998        clippy::pub_underscore_fields,
5999        clippy::style
6000    )]
6001    #[derive(Clone)]
6002    pub struct OwnershipTransferred {
6003        #[allow(missing_docs)]
6004        pub previousOwner: alloy::sol_types::private::Address,
6005        #[allow(missing_docs)]
6006        pub newOwner: alloy::sol_types::private::Address,
6007    }
6008    #[allow(
6009        non_camel_case_types,
6010        non_snake_case,
6011        clippy::pub_underscore_fields,
6012        clippy::style
6013    )]
6014    const _: () = {
6015        use alloy::sol_types as alloy_sol_types;
6016        #[automatically_derived]
6017        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6018            type DataTuple<'a> = ();
6019            type DataToken<'a> = <Self::DataTuple<
6020                'a,
6021            > as alloy_sol_types::SolType>::Token<'a>;
6022            type TopicList = (
6023                alloy_sol_types::sol_data::FixedBytes<32>,
6024                alloy::sol_types::sol_data::Address,
6025                alloy::sol_types::sol_data::Address,
6026            );
6027            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6028            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6029                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6030                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6031                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6032            ]);
6033            const ANONYMOUS: bool = false;
6034            #[allow(unused_variables)]
6035            #[inline]
6036            fn new(
6037                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6038                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6039            ) -> Self {
6040                Self {
6041                    previousOwner: topics.1,
6042                    newOwner: topics.2,
6043                }
6044            }
6045            #[inline]
6046            fn check_signature(
6047                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6048            ) -> alloy_sol_types::Result<()> {
6049                if topics.0 != Self::SIGNATURE_HASH {
6050                    return Err(
6051                        alloy_sol_types::Error::invalid_event_signature_hash(
6052                            Self::SIGNATURE,
6053                            topics.0,
6054                            Self::SIGNATURE_HASH,
6055                        ),
6056                    );
6057                }
6058                Ok(())
6059            }
6060            #[inline]
6061            fn tokenize_body(&self) -> Self::DataToken<'_> {
6062                ()
6063            }
6064            #[inline]
6065            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6066                (
6067                    Self::SIGNATURE_HASH.into(),
6068                    self.previousOwner.clone(),
6069                    self.newOwner.clone(),
6070                )
6071            }
6072            #[inline]
6073            fn encode_topics_raw(
6074                &self,
6075                out: &mut [alloy_sol_types::abi::token::WordToken],
6076            ) -> alloy_sol_types::Result<()> {
6077                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6078                    return Err(alloy_sol_types::Error::Overrun);
6079                }
6080                out[0usize] = alloy_sol_types::abi::token::WordToken(
6081                    Self::SIGNATURE_HASH,
6082                );
6083                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6084                    &self.previousOwner,
6085                );
6086                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6087                    &self.newOwner,
6088                );
6089                Ok(())
6090            }
6091        }
6092        #[automatically_derived]
6093        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6094            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6095                From::from(self)
6096            }
6097            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6098                From::from(&self)
6099            }
6100        }
6101        #[automatically_derived]
6102        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6103            #[inline]
6104            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6105                alloy_sol_types::SolEvent::encode_log_data(this)
6106            }
6107        }
6108    };
6109    #[derive(serde::Serialize, serde::Deserialize)]
6110    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6111    /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`.
6112```solidity
6113event Paused(address indexed account, uint256 newPausedStatus);
6114```*/
6115    #[allow(
6116        non_camel_case_types,
6117        non_snake_case,
6118        clippy::pub_underscore_fields,
6119        clippy::style
6120    )]
6121    #[derive(Clone)]
6122    pub struct Paused {
6123        #[allow(missing_docs)]
6124        pub account: alloy::sol_types::private::Address,
6125        #[allow(missing_docs)]
6126        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
6127    }
6128    #[allow(
6129        non_camel_case_types,
6130        non_snake_case,
6131        clippy::pub_underscore_fields,
6132        clippy::style
6133    )]
6134    const _: () = {
6135        use alloy::sol_types as alloy_sol_types;
6136        #[automatically_derived]
6137        impl alloy_sol_types::SolEvent for Paused {
6138            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6139            type DataToken<'a> = <Self::DataTuple<
6140                'a,
6141            > as alloy_sol_types::SolType>::Token<'a>;
6142            type TopicList = (
6143                alloy_sol_types::sol_data::FixedBytes<32>,
6144                alloy::sol_types::sol_data::Address,
6145            );
6146            const SIGNATURE: &'static str = "Paused(address,uint256)";
6147            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6148                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8,
6149                188u8, 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8,
6150                11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
6151            ]);
6152            const ANONYMOUS: bool = false;
6153            #[allow(unused_variables)]
6154            #[inline]
6155            fn new(
6156                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6157                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6158            ) -> Self {
6159                Self {
6160                    account: topics.1,
6161                    newPausedStatus: data.0,
6162                }
6163            }
6164            #[inline]
6165            fn check_signature(
6166                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6167            ) -> alloy_sol_types::Result<()> {
6168                if topics.0 != Self::SIGNATURE_HASH {
6169                    return Err(
6170                        alloy_sol_types::Error::invalid_event_signature_hash(
6171                            Self::SIGNATURE,
6172                            topics.0,
6173                            Self::SIGNATURE_HASH,
6174                        ),
6175                    );
6176                }
6177                Ok(())
6178            }
6179            #[inline]
6180            fn tokenize_body(&self) -> Self::DataToken<'_> {
6181                (
6182                    <alloy::sol_types::sol_data::Uint<
6183                        256,
6184                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
6185                )
6186            }
6187            #[inline]
6188            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6189                (Self::SIGNATURE_HASH.into(), self.account.clone())
6190            }
6191            #[inline]
6192            fn encode_topics_raw(
6193                &self,
6194                out: &mut [alloy_sol_types::abi::token::WordToken],
6195            ) -> alloy_sol_types::Result<()> {
6196                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6197                    return Err(alloy_sol_types::Error::Overrun);
6198                }
6199                out[0usize] = alloy_sol_types::abi::token::WordToken(
6200                    Self::SIGNATURE_HASH,
6201                );
6202                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6203                    &self.account,
6204                );
6205                Ok(())
6206            }
6207        }
6208        #[automatically_derived]
6209        impl alloy_sol_types::private::IntoLogData for Paused {
6210            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6211                From::from(self)
6212            }
6213            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6214                From::from(&self)
6215            }
6216        }
6217        #[automatically_derived]
6218        impl From<&Paused> for alloy_sol_types::private::LogData {
6219            #[inline]
6220            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
6221                alloy_sol_types::SolEvent::encode_log_data(this)
6222            }
6223        }
6224    };
6225    #[derive(serde::Serialize, serde::Deserialize)]
6226    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6227    /**Event with signature `SlashingWithdrawalCompleted(bytes32)` and selector `0x1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00`.
6228```solidity
6229event SlashingWithdrawalCompleted(bytes32 withdrawalRoot);
6230```*/
6231    #[allow(
6232        non_camel_case_types,
6233        non_snake_case,
6234        clippy::pub_underscore_fields,
6235        clippy::style
6236    )]
6237    #[derive(Clone)]
6238    pub struct SlashingWithdrawalCompleted {
6239        #[allow(missing_docs)]
6240        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
6241    }
6242    #[allow(
6243        non_camel_case_types,
6244        non_snake_case,
6245        clippy::pub_underscore_fields,
6246        clippy::style
6247    )]
6248    const _: () = {
6249        use alloy::sol_types as alloy_sol_types;
6250        #[automatically_derived]
6251        impl alloy_sol_types::SolEvent for SlashingWithdrawalCompleted {
6252            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6253            type DataToken<'a> = <Self::DataTuple<
6254                'a,
6255            > as alloy_sol_types::SolType>::Token<'a>;
6256            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6257            const SIGNATURE: &'static str = "SlashingWithdrawalCompleted(bytes32)";
6258            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6259                31u8, 64u8, 64u8, 8u8, 137u8, 39u8, 78u8, 208u8, 123u8, 36u8, 132u8,
6260                94u8, 80u8, 84u8, 168u8, 122u8, 12u8, 171u8, 150u8, 158u8, 177u8, 39u8,
6261                122u8, 175u8, 230u8, 26u8, 227u8, 82u8, 231u8, 195u8, 42u8, 0u8,
6262            ]);
6263            const ANONYMOUS: bool = false;
6264            #[allow(unused_variables)]
6265            #[inline]
6266            fn new(
6267                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6268                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6269            ) -> Self {
6270                Self { withdrawalRoot: data.0 }
6271            }
6272            #[inline]
6273            fn check_signature(
6274                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6275            ) -> alloy_sol_types::Result<()> {
6276                if topics.0 != Self::SIGNATURE_HASH {
6277                    return Err(
6278                        alloy_sol_types::Error::invalid_event_signature_hash(
6279                            Self::SIGNATURE,
6280                            topics.0,
6281                            Self::SIGNATURE_HASH,
6282                        ),
6283                    );
6284                }
6285                Ok(())
6286            }
6287            #[inline]
6288            fn tokenize_body(&self) -> Self::DataToken<'_> {
6289                (
6290                    <alloy::sol_types::sol_data::FixedBytes<
6291                        32,
6292                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
6293                )
6294            }
6295            #[inline]
6296            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6297                (Self::SIGNATURE_HASH.into(),)
6298            }
6299            #[inline]
6300            fn encode_topics_raw(
6301                &self,
6302                out: &mut [alloy_sol_types::abi::token::WordToken],
6303            ) -> alloy_sol_types::Result<()> {
6304                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6305                    return Err(alloy_sol_types::Error::Overrun);
6306                }
6307                out[0usize] = alloy_sol_types::abi::token::WordToken(
6308                    Self::SIGNATURE_HASH,
6309                );
6310                Ok(())
6311            }
6312        }
6313        #[automatically_derived]
6314        impl alloy_sol_types::private::IntoLogData for SlashingWithdrawalCompleted {
6315            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6316                From::from(self)
6317            }
6318            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6319                From::from(&self)
6320            }
6321        }
6322        #[automatically_derived]
6323        impl From<&SlashingWithdrawalCompleted> for alloy_sol_types::private::LogData {
6324            #[inline]
6325            fn from(
6326                this: &SlashingWithdrawalCompleted,
6327            ) -> alloy_sol_types::private::LogData {
6328                alloy_sol_types::SolEvent::encode_log_data(this)
6329            }
6330        }
6331    };
6332    #[derive(serde::Serialize, serde::Deserialize)]
6333    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6334    /**Event with signature `SlashingWithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]),uint256[])` and selector `0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30`.
6335```solidity
6336event SlashingWithdrawalQueued(bytes32 withdrawalRoot, IDelegationManagerTypes.Withdrawal withdrawal, uint256[] sharesToWithdraw);
6337```*/
6338    #[allow(
6339        non_camel_case_types,
6340        non_snake_case,
6341        clippy::pub_underscore_fields,
6342        clippy::style
6343    )]
6344    #[derive(Clone)]
6345    pub struct SlashingWithdrawalQueued {
6346        #[allow(missing_docs)]
6347        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
6348        #[allow(missing_docs)]
6349        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
6350        #[allow(missing_docs)]
6351        pub sharesToWithdraw: alloy::sol_types::private::Vec<
6352            alloy::sol_types::private::primitives::aliases::U256,
6353        >,
6354    }
6355    #[allow(
6356        non_camel_case_types,
6357        non_snake_case,
6358        clippy::pub_underscore_fields,
6359        clippy::style
6360    )]
6361    const _: () = {
6362        use alloy::sol_types as alloy_sol_types;
6363        #[automatically_derived]
6364        impl alloy_sol_types::SolEvent for SlashingWithdrawalQueued {
6365            type DataTuple<'a> = (
6366                alloy::sol_types::sol_data::FixedBytes<32>,
6367                IDelegationManagerTypes::Withdrawal,
6368                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6369            );
6370            type DataToken<'a> = <Self::DataTuple<
6371                'a,
6372            > as alloy_sol_types::SolType>::Token<'a>;
6373            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6374            const SIGNATURE: &'static str = "SlashingWithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]),uint256[])";
6375            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6376                38u8, 178u8, 170u8, 226u8, 101u8, 22u8, 232u8, 113u8, 158u8, 245u8, 14u8,
6377                162u8, 246u8, 131u8, 26u8, 46u8, 251u8, 212u8, 227u8, 125u8, 204u8,
6378                223u8, 15u8, 105u8, 54u8, 178u8, 123u8, 192u8, 142u8, 121u8, 62u8, 48u8,
6379            ]);
6380            const ANONYMOUS: bool = false;
6381            #[allow(unused_variables)]
6382            #[inline]
6383            fn new(
6384                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6385                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6386            ) -> Self {
6387                Self {
6388                    withdrawalRoot: data.0,
6389                    withdrawal: data.1,
6390                    sharesToWithdraw: data.2,
6391                }
6392            }
6393            #[inline]
6394            fn check_signature(
6395                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6396            ) -> alloy_sol_types::Result<()> {
6397                if topics.0 != Self::SIGNATURE_HASH {
6398                    return Err(
6399                        alloy_sol_types::Error::invalid_event_signature_hash(
6400                            Self::SIGNATURE,
6401                            topics.0,
6402                            Self::SIGNATURE_HASH,
6403                        ),
6404                    );
6405                }
6406                Ok(())
6407            }
6408            #[inline]
6409            fn tokenize_body(&self) -> Self::DataToken<'_> {
6410                (
6411                    <alloy::sol_types::sol_data::FixedBytes<
6412                        32,
6413                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
6414                    <IDelegationManagerTypes::Withdrawal as alloy_sol_types::SolType>::tokenize(
6415                        &self.withdrawal,
6416                    ),
6417                    <alloy::sol_types::sol_data::Array<
6418                        alloy::sol_types::sol_data::Uint<256>,
6419                    > as alloy_sol_types::SolType>::tokenize(&self.sharesToWithdraw),
6420                )
6421            }
6422            #[inline]
6423            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6424                (Self::SIGNATURE_HASH.into(),)
6425            }
6426            #[inline]
6427            fn encode_topics_raw(
6428                &self,
6429                out: &mut [alloy_sol_types::abi::token::WordToken],
6430            ) -> alloy_sol_types::Result<()> {
6431                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6432                    return Err(alloy_sol_types::Error::Overrun);
6433                }
6434                out[0usize] = alloy_sol_types::abi::token::WordToken(
6435                    Self::SIGNATURE_HASH,
6436                );
6437                Ok(())
6438            }
6439        }
6440        #[automatically_derived]
6441        impl alloy_sol_types::private::IntoLogData for SlashingWithdrawalQueued {
6442            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6443                From::from(self)
6444            }
6445            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6446                From::from(&self)
6447            }
6448        }
6449        #[automatically_derived]
6450        impl From<&SlashingWithdrawalQueued> for alloy_sol_types::private::LogData {
6451            #[inline]
6452            fn from(
6453                this: &SlashingWithdrawalQueued,
6454            ) -> alloy_sol_types::private::LogData {
6455                alloy_sol_types::SolEvent::encode_log_data(this)
6456            }
6457        }
6458    };
6459    #[derive(serde::Serialize, serde::Deserialize)]
6460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6461    /**Event with signature `StakerDelegated(address,address)` and selector `0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304`.
6462```solidity
6463event StakerDelegated(address indexed staker, address indexed operator);
6464```*/
6465    #[allow(
6466        non_camel_case_types,
6467        non_snake_case,
6468        clippy::pub_underscore_fields,
6469        clippy::style
6470    )]
6471    #[derive(Clone)]
6472    pub struct StakerDelegated {
6473        #[allow(missing_docs)]
6474        pub staker: alloy::sol_types::private::Address,
6475        #[allow(missing_docs)]
6476        pub operator: alloy::sol_types::private::Address,
6477    }
6478    #[allow(
6479        non_camel_case_types,
6480        non_snake_case,
6481        clippy::pub_underscore_fields,
6482        clippy::style
6483    )]
6484    const _: () = {
6485        use alloy::sol_types as alloy_sol_types;
6486        #[automatically_derived]
6487        impl alloy_sol_types::SolEvent for StakerDelegated {
6488            type DataTuple<'a> = ();
6489            type DataToken<'a> = <Self::DataTuple<
6490                'a,
6491            > as alloy_sol_types::SolType>::Token<'a>;
6492            type TopicList = (
6493                alloy_sol_types::sol_data::FixedBytes<32>,
6494                alloy::sol_types::sol_data::Address,
6495                alloy::sol_types::sol_data::Address,
6496            );
6497            const SIGNATURE: &'static str = "StakerDelegated(address,address)";
6498            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6499                195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8,
6500                116u8, 91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8,
6501                85u8, 156u8, 210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8,
6502            ]);
6503            const ANONYMOUS: bool = false;
6504            #[allow(unused_variables)]
6505            #[inline]
6506            fn new(
6507                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6508                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6509            ) -> Self {
6510                Self {
6511                    staker: topics.1,
6512                    operator: topics.2,
6513                }
6514            }
6515            #[inline]
6516            fn check_signature(
6517                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6518            ) -> alloy_sol_types::Result<()> {
6519                if topics.0 != Self::SIGNATURE_HASH {
6520                    return Err(
6521                        alloy_sol_types::Error::invalid_event_signature_hash(
6522                            Self::SIGNATURE,
6523                            topics.0,
6524                            Self::SIGNATURE_HASH,
6525                        ),
6526                    );
6527                }
6528                Ok(())
6529            }
6530            #[inline]
6531            fn tokenize_body(&self) -> Self::DataToken<'_> {
6532                ()
6533            }
6534            #[inline]
6535            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6536                (Self::SIGNATURE_HASH.into(), self.staker.clone(), self.operator.clone())
6537            }
6538            #[inline]
6539            fn encode_topics_raw(
6540                &self,
6541                out: &mut [alloy_sol_types::abi::token::WordToken],
6542            ) -> alloy_sol_types::Result<()> {
6543                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6544                    return Err(alloy_sol_types::Error::Overrun);
6545                }
6546                out[0usize] = alloy_sol_types::abi::token::WordToken(
6547                    Self::SIGNATURE_HASH,
6548                );
6549                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6550                    &self.staker,
6551                );
6552                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6553                    &self.operator,
6554                );
6555                Ok(())
6556            }
6557        }
6558        #[automatically_derived]
6559        impl alloy_sol_types::private::IntoLogData for StakerDelegated {
6560            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6561                From::from(self)
6562            }
6563            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6564                From::from(&self)
6565            }
6566        }
6567        #[automatically_derived]
6568        impl From<&StakerDelegated> for alloy_sol_types::private::LogData {
6569            #[inline]
6570            fn from(this: &StakerDelegated) -> alloy_sol_types::private::LogData {
6571                alloy_sol_types::SolEvent::encode_log_data(this)
6572            }
6573        }
6574    };
6575    #[derive(serde::Serialize, serde::Deserialize)]
6576    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6577    /**Event with signature `StakerForceUndelegated(address,address)` and selector `0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a`.
6578```solidity
6579event StakerForceUndelegated(address indexed staker, address indexed operator);
6580```*/
6581    #[allow(
6582        non_camel_case_types,
6583        non_snake_case,
6584        clippy::pub_underscore_fields,
6585        clippy::style
6586    )]
6587    #[derive(Clone)]
6588    pub struct StakerForceUndelegated {
6589        #[allow(missing_docs)]
6590        pub staker: alloy::sol_types::private::Address,
6591        #[allow(missing_docs)]
6592        pub operator: alloy::sol_types::private::Address,
6593    }
6594    #[allow(
6595        non_camel_case_types,
6596        non_snake_case,
6597        clippy::pub_underscore_fields,
6598        clippy::style
6599    )]
6600    const _: () = {
6601        use alloy::sol_types as alloy_sol_types;
6602        #[automatically_derived]
6603        impl alloy_sol_types::SolEvent for StakerForceUndelegated {
6604            type DataTuple<'a> = ();
6605            type DataToken<'a> = <Self::DataTuple<
6606                'a,
6607            > as alloy_sol_types::SolType>::Token<'a>;
6608            type TopicList = (
6609                alloy_sol_types::sol_data::FixedBytes<32>,
6610                alloy::sol_types::sol_data::Address,
6611                alloy::sol_types::sol_data::Address,
6612            );
6613            const SIGNATURE: &'static str = "StakerForceUndelegated(address,address)";
6614            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6615                240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8,
6616                30u8, 148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8,
6617                113u8, 19u8, 14u8, 15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8,
6618            ]);
6619            const ANONYMOUS: bool = false;
6620            #[allow(unused_variables)]
6621            #[inline]
6622            fn new(
6623                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6624                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6625            ) -> Self {
6626                Self {
6627                    staker: topics.1,
6628                    operator: topics.2,
6629                }
6630            }
6631            #[inline]
6632            fn check_signature(
6633                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6634            ) -> alloy_sol_types::Result<()> {
6635                if topics.0 != Self::SIGNATURE_HASH {
6636                    return Err(
6637                        alloy_sol_types::Error::invalid_event_signature_hash(
6638                            Self::SIGNATURE,
6639                            topics.0,
6640                            Self::SIGNATURE_HASH,
6641                        ),
6642                    );
6643                }
6644                Ok(())
6645            }
6646            #[inline]
6647            fn tokenize_body(&self) -> Self::DataToken<'_> {
6648                ()
6649            }
6650            #[inline]
6651            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6652                (Self::SIGNATURE_HASH.into(), self.staker.clone(), self.operator.clone())
6653            }
6654            #[inline]
6655            fn encode_topics_raw(
6656                &self,
6657                out: &mut [alloy_sol_types::abi::token::WordToken],
6658            ) -> alloy_sol_types::Result<()> {
6659                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6660                    return Err(alloy_sol_types::Error::Overrun);
6661                }
6662                out[0usize] = alloy_sol_types::abi::token::WordToken(
6663                    Self::SIGNATURE_HASH,
6664                );
6665                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6666                    &self.staker,
6667                );
6668                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6669                    &self.operator,
6670                );
6671                Ok(())
6672            }
6673        }
6674        #[automatically_derived]
6675        impl alloy_sol_types::private::IntoLogData for StakerForceUndelegated {
6676            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6677                From::from(self)
6678            }
6679            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6680                From::from(&self)
6681            }
6682        }
6683        #[automatically_derived]
6684        impl From<&StakerForceUndelegated> for alloy_sol_types::private::LogData {
6685            #[inline]
6686            fn from(this: &StakerForceUndelegated) -> alloy_sol_types::private::LogData {
6687                alloy_sol_types::SolEvent::encode_log_data(this)
6688            }
6689        }
6690    };
6691    #[derive(serde::Serialize, serde::Deserialize)]
6692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6693    /**Event with signature `StakerUndelegated(address,address)` and selector `0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676`.
6694```solidity
6695event StakerUndelegated(address indexed staker, address indexed operator);
6696```*/
6697    #[allow(
6698        non_camel_case_types,
6699        non_snake_case,
6700        clippy::pub_underscore_fields,
6701        clippy::style
6702    )]
6703    #[derive(Clone)]
6704    pub struct StakerUndelegated {
6705        #[allow(missing_docs)]
6706        pub staker: alloy::sol_types::private::Address,
6707        #[allow(missing_docs)]
6708        pub operator: alloy::sol_types::private::Address,
6709    }
6710    #[allow(
6711        non_camel_case_types,
6712        non_snake_case,
6713        clippy::pub_underscore_fields,
6714        clippy::style
6715    )]
6716    const _: () = {
6717        use alloy::sol_types as alloy_sol_types;
6718        #[automatically_derived]
6719        impl alloy_sol_types::SolEvent for StakerUndelegated {
6720            type DataTuple<'a> = ();
6721            type DataToken<'a> = <Self::DataTuple<
6722                'a,
6723            > as alloy_sol_types::SolType>::Token<'a>;
6724            type TopicList = (
6725                alloy_sol_types::sol_data::FixedBytes<32>,
6726                alloy::sol_types::sol_data::Address,
6727                alloy::sol_types::sol_data::Address,
6728            );
6729            const SIGNATURE: &'static str = "StakerUndelegated(address,address)";
6730            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6731                254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8,
6732                191u8, 201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8,
6733                169u8, 226u8, 183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8,
6734            ]);
6735            const ANONYMOUS: bool = false;
6736            #[allow(unused_variables)]
6737            #[inline]
6738            fn new(
6739                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6740                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6741            ) -> Self {
6742                Self {
6743                    staker: topics.1,
6744                    operator: topics.2,
6745                }
6746            }
6747            #[inline]
6748            fn check_signature(
6749                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6750            ) -> alloy_sol_types::Result<()> {
6751                if topics.0 != Self::SIGNATURE_HASH {
6752                    return Err(
6753                        alloy_sol_types::Error::invalid_event_signature_hash(
6754                            Self::SIGNATURE,
6755                            topics.0,
6756                            Self::SIGNATURE_HASH,
6757                        ),
6758                    );
6759                }
6760                Ok(())
6761            }
6762            #[inline]
6763            fn tokenize_body(&self) -> Self::DataToken<'_> {
6764                ()
6765            }
6766            #[inline]
6767            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6768                (Self::SIGNATURE_HASH.into(), self.staker.clone(), self.operator.clone())
6769            }
6770            #[inline]
6771            fn encode_topics_raw(
6772                &self,
6773                out: &mut [alloy_sol_types::abi::token::WordToken],
6774            ) -> alloy_sol_types::Result<()> {
6775                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6776                    return Err(alloy_sol_types::Error::Overrun);
6777                }
6778                out[0usize] = alloy_sol_types::abi::token::WordToken(
6779                    Self::SIGNATURE_HASH,
6780                );
6781                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6782                    &self.staker,
6783                );
6784                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6785                    &self.operator,
6786                );
6787                Ok(())
6788            }
6789        }
6790        #[automatically_derived]
6791        impl alloy_sol_types::private::IntoLogData for StakerUndelegated {
6792            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6793                From::from(self)
6794            }
6795            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6796                From::from(&self)
6797            }
6798        }
6799        #[automatically_derived]
6800        impl From<&StakerUndelegated> for alloy_sol_types::private::LogData {
6801            #[inline]
6802            fn from(this: &StakerUndelegated) -> alloy_sol_types::private::LogData {
6803                alloy_sol_types::SolEvent::encode_log_data(this)
6804            }
6805        }
6806    };
6807    #[derive(serde::Serialize, serde::Deserialize)]
6808    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6809    /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`.
6810```solidity
6811event Unpaused(address indexed account, uint256 newPausedStatus);
6812```*/
6813    #[allow(
6814        non_camel_case_types,
6815        non_snake_case,
6816        clippy::pub_underscore_fields,
6817        clippy::style
6818    )]
6819    #[derive(Clone)]
6820    pub struct Unpaused {
6821        #[allow(missing_docs)]
6822        pub account: alloy::sol_types::private::Address,
6823        #[allow(missing_docs)]
6824        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
6825    }
6826    #[allow(
6827        non_camel_case_types,
6828        non_snake_case,
6829        clippy::pub_underscore_fields,
6830        clippy::style
6831    )]
6832    const _: () = {
6833        use alloy::sol_types as alloy_sol_types;
6834        #[automatically_derived]
6835        impl alloy_sol_types::SolEvent for Unpaused {
6836            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6837            type DataToken<'a> = <Self::DataTuple<
6838                'a,
6839            > as alloy_sol_types::SolType>::Token<'a>;
6840            type TopicList = (
6841                alloy_sol_types::sol_data::FixedBytes<32>,
6842                alloy::sol_types::sol_data::Address,
6843            );
6844            const SIGNATURE: &'static str = "Unpaused(address,uint256)";
6845            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6846                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8,
6847                2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8,
6848                228u8, 152u8, 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
6849            ]);
6850            const ANONYMOUS: bool = false;
6851            #[allow(unused_variables)]
6852            #[inline]
6853            fn new(
6854                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6855                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6856            ) -> Self {
6857                Self {
6858                    account: topics.1,
6859                    newPausedStatus: data.0,
6860                }
6861            }
6862            #[inline]
6863            fn check_signature(
6864                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6865            ) -> alloy_sol_types::Result<()> {
6866                if topics.0 != Self::SIGNATURE_HASH {
6867                    return Err(
6868                        alloy_sol_types::Error::invalid_event_signature_hash(
6869                            Self::SIGNATURE,
6870                            topics.0,
6871                            Self::SIGNATURE_HASH,
6872                        ),
6873                    );
6874                }
6875                Ok(())
6876            }
6877            #[inline]
6878            fn tokenize_body(&self) -> Self::DataToken<'_> {
6879                (
6880                    <alloy::sol_types::sol_data::Uint<
6881                        256,
6882                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
6883                )
6884            }
6885            #[inline]
6886            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6887                (Self::SIGNATURE_HASH.into(), self.account.clone())
6888            }
6889            #[inline]
6890            fn encode_topics_raw(
6891                &self,
6892                out: &mut [alloy_sol_types::abi::token::WordToken],
6893            ) -> alloy_sol_types::Result<()> {
6894                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6895                    return Err(alloy_sol_types::Error::Overrun);
6896                }
6897                out[0usize] = alloy_sol_types::abi::token::WordToken(
6898                    Self::SIGNATURE_HASH,
6899                );
6900                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6901                    &self.account,
6902                );
6903                Ok(())
6904            }
6905        }
6906        #[automatically_derived]
6907        impl alloy_sol_types::private::IntoLogData for Unpaused {
6908            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6909                From::from(self)
6910            }
6911            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6912                From::from(&self)
6913            }
6914        }
6915        #[automatically_derived]
6916        impl From<&Unpaused> for alloy_sol_types::private::LogData {
6917            #[inline]
6918            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
6919                alloy_sol_types::SolEvent::encode_log_data(this)
6920            }
6921        }
6922    };
6923    /**Constructor`.
6924```solidity
6925constructor(address _strategyManager, address _eigenPodManager, address _allocationManager, address _pauserRegistry, address _permissionController, uint32 _MIN_WITHDRAWAL_DELAY, string _version);
6926```*/
6927    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6928    #[derive(Clone)]
6929    pub struct constructorCall {
6930        #[allow(missing_docs)]
6931        pub _strategyManager: alloy::sol_types::private::Address,
6932        #[allow(missing_docs)]
6933        pub _eigenPodManager: alloy::sol_types::private::Address,
6934        #[allow(missing_docs)]
6935        pub _allocationManager: alloy::sol_types::private::Address,
6936        #[allow(missing_docs)]
6937        pub _pauserRegistry: alloy::sol_types::private::Address,
6938        #[allow(missing_docs)]
6939        pub _permissionController: alloy::sol_types::private::Address,
6940        #[allow(missing_docs)]
6941        pub _MIN_WITHDRAWAL_DELAY: u32,
6942        #[allow(missing_docs)]
6943        pub _version: alloy::sol_types::private::String,
6944    }
6945    const _: () = {
6946        use alloy::sol_types as alloy_sol_types;
6947        {
6948            #[doc(hidden)]
6949            type UnderlyingSolTuple<'a> = (
6950                alloy::sol_types::sol_data::Address,
6951                alloy::sol_types::sol_data::Address,
6952                alloy::sol_types::sol_data::Address,
6953                alloy::sol_types::sol_data::Address,
6954                alloy::sol_types::sol_data::Address,
6955                alloy::sol_types::sol_data::Uint<32>,
6956                alloy::sol_types::sol_data::String,
6957            );
6958            #[doc(hidden)]
6959            type UnderlyingRustTuple<'a> = (
6960                alloy::sol_types::private::Address,
6961                alloy::sol_types::private::Address,
6962                alloy::sol_types::private::Address,
6963                alloy::sol_types::private::Address,
6964                alloy::sol_types::private::Address,
6965                u32,
6966                alloy::sol_types::private::String,
6967            );
6968            #[cfg(test)]
6969            #[allow(dead_code, unreachable_patterns)]
6970            fn _type_assertion(
6971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6972            ) {
6973                match _t {
6974                    alloy_sol_types::private::AssertTypeEq::<
6975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6976                    >(_) => {}
6977                }
6978            }
6979            #[automatically_derived]
6980            #[doc(hidden)]
6981            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
6982                fn from(value: constructorCall) -> Self {
6983                    (
6984                        value._strategyManager,
6985                        value._eigenPodManager,
6986                        value._allocationManager,
6987                        value._pauserRegistry,
6988                        value._permissionController,
6989                        value._MIN_WITHDRAWAL_DELAY,
6990                        value._version,
6991                    )
6992                }
6993            }
6994            #[automatically_derived]
6995            #[doc(hidden)]
6996            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
6997                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6998                    Self {
6999                        _strategyManager: tuple.0,
7000                        _eigenPodManager: tuple.1,
7001                        _allocationManager: tuple.2,
7002                        _pauserRegistry: tuple.3,
7003                        _permissionController: tuple.4,
7004                        _MIN_WITHDRAWAL_DELAY: tuple.5,
7005                        _version: tuple.6,
7006                    }
7007                }
7008            }
7009        }
7010        #[automatically_derived]
7011        impl alloy_sol_types::SolConstructor for constructorCall {
7012            type Parameters<'a> = (
7013                alloy::sol_types::sol_data::Address,
7014                alloy::sol_types::sol_data::Address,
7015                alloy::sol_types::sol_data::Address,
7016                alloy::sol_types::sol_data::Address,
7017                alloy::sol_types::sol_data::Address,
7018                alloy::sol_types::sol_data::Uint<32>,
7019                alloy::sol_types::sol_data::String,
7020            );
7021            type Token<'a> = <Self::Parameters<
7022                'a,
7023            > as alloy_sol_types::SolType>::Token<'a>;
7024            #[inline]
7025            fn new<'a>(
7026                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7027            ) -> Self {
7028                tuple.into()
7029            }
7030            #[inline]
7031            fn tokenize(&self) -> Self::Token<'_> {
7032                (
7033                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7034                        &self._strategyManager,
7035                    ),
7036                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7037                        &self._eigenPodManager,
7038                    ),
7039                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7040                        &self._allocationManager,
7041                    ),
7042                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7043                        &self._pauserRegistry,
7044                    ),
7045                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7046                        &self._permissionController,
7047                    ),
7048                    <alloy::sol_types::sol_data::Uint<
7049                        32,
7050                    > as alloy_sol_types::SolType>::tokenize(
7051                        &self._MIN_WITHDRAWAL_DELAY,
7052                    ),
7053                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7054                        &self._version,
7055                    ),
7056                )
7057            }
7058        }
7059    };
7060    #[derive(serde::Serialize, serde::Deserialize)]
7061    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7062    /**Function with signature `DELEGATION_APPROVAL_TYPEHASH()` and selector `0x04a4f979`.
7063```solidity
7064function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32);
7065```*/
7066    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7067    #[derive(Clone)]
7068    pub struct DELEGATION_APPROVAL_TYPEHASHCall;
7069    #[derive(serde::Serialize, serde::Deserialize)]
7070    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7071    ///Container type for the return parameters of the [`DELEGATION_APPROVAL_TYPEHASH()`](DELEGATION_APPROVAL_TYPEHASHCall) function.
7072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7073    #[derive(Clone)]
7074    pub struct DELEGATION_APPROVAL_TYPEHASHReturn {
7075        #[allow(missing_docs)]
7076        pub _0: alloy::sol_types::private::FixedBytes<32>,
7077    }
7078    #[allow(
7079        non_camel_case_types,
7080        non_snake_case,
7081        clippy::pub_underscore_fields,
7082        clippy::style
7083    )]
7084    const _: () = {
7085        use alloy::sol_types as alloy_sol_types;
7086        {
7087            #[doc(hidden)]
7088            type UnderlyingSolTuple<'a> = ();
7089            #[doc(hidden)]
7090            type UnderlyingRustTuple<'a> = ();
7091            #[cfg(test)]
7092            #[allow(dead_code, unreachable_patterns)]
7093            fn _type_assertion(
7094                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7095            ) {
7096                match _t {
7097                    alloy_sol_types::private::AssertTypeEq::<
7098                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7099                    >(_) => {}
7100                }
7101            }
7102            #[automatically_derived]
7103            #[doc(hidden)]
7104            impl ::core::convert::From<DELEGATION_APPROVAL_TYPEHASHCall>
7105            for UnderlyingRustTuple<'_> {
7106                fn from(value: DELEGATION_APPROVAL_TYPEHASHCall) -> Self {
7107                    ()
7108                }
7109            }
7110            #[automatically_derived]
7111            #[doc(hidden)]
7112            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7113            for DELEGATION_APPROVAL_TYPEHASHCall {
7114                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7115                    Self
7116                }
7117            }
7118        }
7119        {
7120            #[doc(hidden)]
7121            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7122            #[doc(hidden)]
7123            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7124            #[cfg(test)]
7125            #[allow(dead_code, unreachable_patterns)]
7126            fn _type_assertion(
7127                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7128            ) {
7129                match _t {
7130                    alloy_sol_types::private::AssertTypeEq::<
7131                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7132                    >(_) => {}
7133                }
7134            }
7135            #[automatically_derived]
7136            #[doc(hidden)]
7137            impl ::core::convert::From<DELEGATION_APPROVAL_TYPEHASHReturn>
7138            for UnderlyingRustTuple<'_> {
7139                fn from(value: DELEGATION_APPROVAL_TYPEHASHReturn) -> Self {
7140                    (value._0,)
7141                }
7142            }
7143            #[automatically_derived]
7144            #[doc(hidden)]
7145            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7146            for DELEGATION_APPROVAL_TYPEHASHReturn {
7147                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7148                    Self { _0: tuple.0 }
7149                }
7150            }
7151        }
7152        #[automatically_derived]
7153        impl alloy_sol_types::SolCall for DELEGATION_APPROVAL_TYPEHASHCall {
7154            type Parameters<'a> = ();
7155            type Token<'a> = <Self::Parameters<
7156                'a,
7157            > as alloy_sol_types::SolType>::Token<'a>;
7158            type Return = alloy::sol_types::private::FixedBytes<32>;
7159            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7160            type ReturnToken<'a> = <Self::ReturnTuple<
7161                'a,
7162            > as alloy_sol_types::SolType>::Token<'a>;
7163            const SIGNATURE: &'static str = "DELEGATION_APPROVAL_TYPEHASH()";
7164            const SELECTOR: [u8; 4] = [4u8, 164u8, 249u8, 121u8];
7165            #[inline]
7166            fn new<'a>(
7167                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7168            ) -> Self {
7169                tuple.into()
7170            }
7171            #[inline]
7172            fn tokenize(&self) -> Self::Token<'_> {
7173                ()
7174            }
7175            #[inline]
7176            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7177                (
7178                    <alloy::sol_types::sol_data::FixedBytes<
7179                        32,
7180                    > as alloy_sol_types::SolType>::tokenize(ret),
7181                )
7182            }
7183            #[inline]
7184            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7185                <Self::ReturnTuple<
7186                    '_,
7187                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7188                    .map(|r| {
7189                        let r: DELEGATION_APPROVAL_TYPEHASHReturn = r.into();
7190                        r._0
7191                    })
7192            }
7193            #[inline]
7194            fn abi_decode_returns_validate(
7195                data: &[u8],
7196            ) -> alloy_sol_types::Result<Self::Return> {
7197                <Self::ReturnTuple<
7198                    '_,
7199                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7200                    .map(|r| {
7201                        let r: DELEGATION_APPROVAL_TYPEHASHReturn = r.into();
7202                        r._0
7203                    })
7204            }
7205        }
7206    };
7207    #[derive(serde::Serialize, serde::Deserialize)]
7208    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7209    /**Function with signature `allocationManager()` and selector `0xca8aa7c7`.
7210```solidity
7211function allocationManager() external view returns (address);
7212```*/
7213    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7214    #[derive(Clone)]
7215    pub struct allocationManagerCall;
7216    #[derive(serde::Serialize, serde::Deserialize)]
7217    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7218    ///Container type for the return parameters of the [`allocationManager()`](allocationManagerCall) function.
7219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7220    #[derive(Clone)]
7221    pub struct allocationManagerReturn {
7222        #[allow(missing_docs)]
7223        pub _0: alloy::sol_types::private::Address,
7224    }
7225    #[allow(
7226        non_camel_case_types,
7227        non_snake_case,
7228        clippy::pub_underscore_fields,
7229        clippy::style
7230    )]
7231    const _: () = {
7232        use alloy::sol_types as alloy_sol_types;
7233        {
7234            #[doc(hidden)]
7235            type UnderlyingSolTuple<'a> = ();
7236            #[doc(hidden)]
7237            type UnderlyingRustTuple<'a> = ();
7238            #[cfg(test)]
7239            #[allow(dead_code, unreachable_patterns)]
7240            fn _type_assertion(
7241                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7242            ) {
7243                match _t {
7244                    alloy_sol_types::private::AssertTypeEq::<
7245                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7246                    >(_) => {}
7247                }
7248            }
7249            #[automatically_derived]
7250            #[doc(hidden)]
7251            impl ::core::convert::From<allocationManagerCall>
7252            for UnderlyingRustTuple<'_> {
7253                fn from(value: allocationManagerCall) -> Self {
7254                    ()
7255                }
7256            }
7257            #[automatically_derived]
7258            #[doc(hidden)]
7259            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7260            for allocationManagerCall {
7261                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7262                    Self
7263                }
7264            }
7265        }
7266        {
7267            #[doc(hidden)]
7268            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7269            #[doc(hidden)]
7270            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7271            #[cfg(test)]
7272            #[allow(dead_code, unreachable_patterns)]
7273            fn _type_assertion(
7274                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7275            ) {
7276                match _t {
7277                    alloy_sol_types::private::AssertTypeEq::<
7278                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7279                    >(_) => {}
7280                }
7281            }
7282            #[automatically_derived]
7283            #[doc(hidden)]
7284            impl ::core::convert::From<allocationManagerReturn>
7285            for UnderlyingRustTuple<'_> {
7286                fn from(value: allocationManagerReturn) -> Self {
7287                    (value._0,)
7288                }
7289            }
7290            #[automatically_derived]
7291            #[doc(hidden)]
7292            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7293            for allocationManagerReturn {
7294                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7295                    Self { _0: tuple.0 }
7296                }
7297            }
7298        }
7299        #[automatically_derived]
7300        impl alloy_sol_types::SolCall for allocationManagerCall {
7301            type Parameters<'a> = ();
7302            type Token<'a> = <Self::Parameters<
7303                'a,
7304            > as alloy_sol_types::SolType>::Token<'a>;
7305            type Return = alloy::sol_types::private::Address;
7306            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7307            type ReturnToken<'a> = <Self::ReturnTuple<
7308                'a,
7309            > as alloy_sol_types::SolType>::Token<'a>;
7310            const SIGNATURE: &'static str = "allocationManager()";
7311            const SELECTOR: [u8; 4] = [202u8, 138u8, 167u8, 199u8];
7312            #[inline]
7313            fn new<'a>(
7314                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7315            ) -> Self {
7316                tuple.into()
7317            }
7318            #[inline]
7319            fn tokenize(&self) -> Self::Token<'_> {
7320                ()
7321            }
7322            #[inline]
7323            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7324                (
7325                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7326                        ret,
7327                    ),
7328                )
7329            }
7330            #[inline]
7331            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7332                <Self::ReturnTuple<
7333                    '_,
7334                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7335                    .map(|r| {
7336                        let r: allocationManagerReturn = r.into();
7337                        r._0
7338                    })
7339            }
7340            #[inline]
7341            fn abi_decode_returns_validate(
7342                data: &[u8],
7343            ) -> alloy_sol_types::Result<Self::Return> {
7344                <Self::ReturnTuple<
7345                    '_,
7346                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7347                    .map(|r| {
7348                        let r: allocationManagerReturn = r.into();
7349                        r._0
7350                    })
7351            }
7352        }
7353    };
7354    #[derive(serde::Serialize, serde::Deserialize)]
7355    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7356    /**Function with signature `beaconChainETHStrategy()` and selector `0x9104c319`.
7357```solidity
7358function beaconChainETHStrategy() external view returns (address);
7359```*/
7360    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7361    #[derive(Clone)]
7362    pub struct beaconChainETHStrategyCall;
7363    #[derive(serde::Serialize, serde::Deserialize)]
7364    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7365    ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function.
7366    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7367    #[derive(Clone)]
7368    pub struct beaconChainETHStrategyReturn {
7369        #[allow(missing_docs)]
7370        pub _0: alloy::sol_types::private::Address,
7371    }
7372    #[allow(
7373        non_camel_case_types,
7374        non_snake_case,
7375        clippy::pub_underscore_fields,
7376        clippy::style
7377    )]
7378    const _: () = {
7379        use alloy::sol_types as alloy_sol_types;
7380        {
7381            #[doc(hidden)]
7382            type UnderlyingSolTuple<'a> = ();
7383            #[doc(hidden)]
7384            type UnderlyingRustTuple<'a> = ();
7385            #[cfg(test)]
7386            #[allow(dead_code, unreachable_patterns)]
7387            fn _type_assertion(
7388                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7389            ) {
7390                match _t {
7391                    alloy_sol_types::private::AssertTypeEq::<
7392                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7393                    >(_) => {}
7394                }
7395            }
7396            #[automatically_derived]
7397            #[doc(hidden)]
7398            impl ::core::convert::From<beaconChainETHStrategyCall>
7399            for UnderlyingRustTuple<'_> {
7400                fn from(value: beaconChainETHStrategyCall) -> Self {
7401                    ()
7402                }
7403            }
7404            #[automatically_derived]
7405            #[doc(hidden)]
7406            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7407            for beaconChainETHStrategyCall {
7408                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7409                    Self
7410                }
7411            }
7412        }
7413        {
7414            #[doc(hidden)]
7415            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7416            #[doc(hidden)]
7417            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7418            #[cfg(test)]
7419            #[allow(dead_code, unreachable_patterns)]
7420            fn _type_assertion(
7421                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7422            ) {
7423                match _t {
7424                    alloy_sol_types::private::AssertTypeEq::<
7425                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7426                    >(_) => {}
7427                }
7428            }
7429            #[automatically_derived]
7430            #[doc(hidden)]
7431            impl ::core::convert::From<beaconChainETHStrategyReturn>
7432            for UnderlyingRustTuple<'_> {
7433                fn from(value: beaconChainETHStrategyReturn) -> Self {
7434                    (value._0,)
7435                }
7436            }
7437            #[automatically_derived]
7438            #[doc(hidden)]
7439            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7440            for beaconChainETHStrategyReturn {
7441                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7442                    Self { _0: tuple.0 }
7443                }
7444            }
7445        }
7446        #[automatically_derived]
7447        impl alloy_sol_types::SolCall for beaconChainETHStrategyCall {
7448            type Parameters<'a> = ();
7449            type Token<'a> = <Self::Parameters<
7450                'a,
7451            > as alloy_sol_types::SolType>::Token<'a>;
7452            type Return = alloy::sol_types::private::Address;
7453            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7454            type ReturnToken<'a> = <Self::ReturnTuple<
7455                'a,
7456            > as alloy_sol_types::SolType>::Token<'a>;
7457            const SIGNATURE: &'static str = "beaconChainETHStrategy()";
7458            const SELECTOR: [u8; 4] = [145u8, 4u8, 195u8, 25u8];
7459            #[inline]
7460            fn new<'a>(
7461                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7462            ) -> Self {
7463                tuple.into()
7464            }
7465            #[inline]
7466            fn tokenize(&self) -> Self::Token<'_> {
7467                ()
7468            }
7469            #[inline]
7470            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7471                (
7472                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7473                        ret,
7474                    ),
7475                )
7476            }
7477            #[inline]
7478            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7479                <Self::ReturnTuple<
7480                    '_,
7481                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7482                    .map(|r| {
7483                        let r: beaconChainETHStrategyReturn = r.into();
7484                        r._0
7485                    })
7486            }
7487            #[inline]
7488            fn abi_decode_returns_validate(
7489                data: &[u8],
7490            ) -> alloy_sol_types::Result<Self::Return> {
7491                <Self::ReturnTuple<
7492                    '_,
7493                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7494                    .map(|r| {
7495                        let r: beaconChainETHStrategyReturn = r.into();
7496                        r._0
7497                    })
7498            }
7499        }
7500    };
7501    #[derive(serde::Serialize, serde::Deserialize)]
7502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7503    /**Function with signature `calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)` and selector `0x0b9f487a`.
7504```solidity
7505function calculateDelegationApprovalDigestHash(address staker, address operator, address approver, bytes32 approverSalt, uint256 expiry) external view returns (bytes32);
7506```*/
7507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7508    #[derive(Clone)]
7509    pub struct calculateDelegationApprovalDigestHashCall {
7510        #[allow(missing_docs)]
7511        pub staker: alloy::sol_types::private::Address,
7512        #[allow(missing_docs)]
7513        pub operator: alloy::sol_types::private::Address,
7514        #[allow(missing_docs)]
7515        pub approver: alloy::sol_types::private::Address,
7516        #[allow(missing_docs)]
7517        pub approverSalt: alloy::sol_types::private::FixedBytes<32>,
7518        #[allow(missing_docs)]
7519        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
7520    }
7521    #[derive(serde::Serialize, serde::Deserialize)]
7522    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7523    ///Container type for the return parameters of the [`calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)`](calculateDelegationApprovalDigestHashCall) function.
7524    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7525    #[derive(Clone)]
7526    pub struct calculateDelegationApprovalDigestHashReturn {
7527        #[allow(missing_docs)]
7528        pub _0: alloy::sol_types::private::FixedBytes<32>,
7529    }
7530    #[allow(
7531        non_camel_case_types,
7532        non_snake_case,
7533        clippy::pub_underscore_fields,
7534        clippy::style
7535    )]
7536    const _: () = {
7537        use alloy::sol_types as alloy_sol_types;
7538        {
7539            #[doc(hidden)]
7540            type UnderlyingSolTuple<'a> = (
7541                alloy::sol_types::sol_data::Address,
7542                alloy::sol_types::sol_data::Address,
7543                alloy::sol_types::sol_data::Address,
7544                alloy::sol_types::sol_data::FixedBytes<32>,
7545                alloy::sol_types::sol_data::Uint<256>,
7546            );
7547            #[doc(hidden)]
7548            type UnderlyingRustTuple<'a> = (
7549                alloy::sol_types::private::Address,
7550                alloy::sol_types::private::Address,
7551                alloy::sol_types::private::Address,
7552                alloy::sol_types::private::FixedBytes<32>,
7553                alloy::sol_types::private::primitives::aliases::U256,
7554            );
7555            #[cfg(test)]
7556            #[allow(dead_code, unreachable_patterns)]
7557            fn _type_assertion(
7558                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7559            ) {
7560                match _t {
7561                    alloy_sol_types::private::AssertTypeEq::<
7562                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7563                    >(_) => {}
7564                }
7565            }
7566            #[automatically_derived]
7567            #[doc(hidden)]
7568            impl ::core::convert::From<calculateDelegationApprovalDigestHashCall>
7569            for UnderlyingRustTuple<'_> {
7570                fn from(value: calculateDelegationApprovalDigestHashCall) -> Self {
7571                    (
7572                        value.staker,
7573                        value.operator,
7574                        value.approver,
7575                        value.approverSalt,
7576                        value.expiry,
7577                    )
7578                }
7579            }
7580            #[automatically_derived]
7581            #[doc(hidden)]
7582            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7583            for calculateDelegationApprovalDigestHashCall {
7584                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7585                    Self {
7586                        staker: tuple.0,
7587                        operator: tuple.1,
7588                        approver: tuple.2,
7589                        approverSalt: tuple.3,
7590                        expiry: tuple.4,
7591                    }
7592                }
7593            }
7594        }
7595        {
7596            #[doc(hidden)]
7597            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7598            #[doc(hidden)]
7599            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7600            #[cfg(test)]
7601            #[allow(dead_code, unreachable_patterns)]
7602            fn _type_assertion(
7603                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7604            ) {
7605                match _t {
7606                    alloy_sol_types::private::AssertTypeEq::<
7607                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7608                    >(_) => {}
7609                }
7610            }
7611            #[automatically_derived]
7612            #[doc(hidden)]
7613            impl ::core::convert::From<calculateDelegationApprovalDigestHashReturn>
7614            for UnderlyingRustTuple<'_> {
7615                fn from(value: calculateDelegationApprovalDigestHashReturn) -> Self {
7616                    (value._0,)
7617                }
7618            }
7619            #[automatically_derived]
7620            #[doc(hidden)]
7621            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7622            for calculateDelegationApprovalDigestHashReturn {
7623                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7624                    Self { _0: tuple.0 }
7625                }
7626            }
7627        }
7628        #[automatically_derived]
7629        impl alloy_sol_types::SolCall for calculateDelegationApprovalDigestHashCall {
7630            type Parameters<'a> = (
7631                alloy::sol_types::sol_data::Address,
7632                alloy::sol_types::sol_data::Address,
7633                alloy::sol_types::sol_data::Address,
7634                alloy::sol_types::sol_data::FixedBytes<32>,
7635                alloy::sol_types::sol_data::Uint<256>,
7636            );
7637            type Token<'a> = <Self::Parameters<
7638                'a,
7639            > as alloy_sol_types::SolType>::Token<'a>;
7640            type Return = alloy::sol_types::private::FixedBytes<32>;
7641            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7642            type ReturnToken<'a> = <Self::ReturnTuple<
7643                'a,
7644            > as alloy_sol_types::SolType>::Token<'a>;
7645            const SIGNATURE: &'static str = "calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)";
7646            const SELECTOR: [u8; 4] = [11u8, 159u8, 72u8, 122u8];
7647            #[inline]
7648            fn new<'a>(
7649                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7650            ) -> Self {
7651                tuple.into()
7652            }
7653            #[inline]
7654            fn tokenize(&self) -> Self::Token<'_> {
7655                (
7656                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7657                        &self.staker,
7658                    ),
7659                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7660                        &self.operator,
7661                    ),
7662                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7663                        &self.approver,
7664                    ),
7665                    <alloy::sol_types::sol_data::FixedBytes<
7666                        32,
7667                    > as alloy_sol_types::SolType>::tokenize(&self.approverSalt),
7668                    <alloy::sol_types::sol_data::Uint<
7669                        256,
7670                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
7671                )
7672            }
7673            #[inline]
7674            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7675                (
7676                    <alloy::sol_types::sol_data::FixedBytes<
7677                        32,
7678                    > as alloy_sol_types::SolType>::tokenize(ret),
7679                )
7680            }
7681            #[inline]
7682            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7683                <Self::ReturnTuple<
7684                    '_,
7685                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7686                    .map(|r| {
7687                        let r: calculateDelegationApprovalDigestHashReturn = r.into();
7688                        r._0
7689                    })
7690            }
7691            #[inline]
7692            fn abi_decode_returns_validate(
7693                data: &[u8],
7694            ) -> alloy_sol_types::Result<Self::Return> {
7695                <Self::ReturnTuple<
7696                    '_,
7697                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7698                    .map(|r| {
7699                        let r: calculateDelegationApprovalDigestHashReturn = r.into();
7700                        r._0
7701                    })
7702            }
7703        }
7704    };
7705    #[derive(serde::Serialize, serde::Deserialize)]
7706    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7707    /**Function with signature `calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))` and selector `0x597b36da`.
7708```solidity
7709function calculateWithdrawalRoot(IDelegationManagerTypes.Withdrawal memory withdrawal) external pure returns (bytes32);
7710```*/
7711    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7712    #[derive(Clone)]
7713    pub struct calculateWithdrawalRootCall {
7714        #[allow(missing_docs)]
7715        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7716    }
7717    #[derive(serde::Serialize, serde::Deserialize)]
7718    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7719    ///Container type for the return parameters of the [`calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))`](calculateWithdrawalRootCall) function.
7720    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7721    #[derive(Clone)]
7722    pub struct calculateWithdrawalRootReturn {
7723        #[allow(missing_docs)]
7724        pub _0: alloy::sol_types::private::FixedBytes<32>,
7725    }
7726    #[allow(
7727        non_camel_case_types,
7728        non_snake_case,
7729        clippy::pub_underscore_fields,
7730        clippy::style
7731    )]
7732    const _: () = {
7733        use alloy::sol_types as alloy_sol_types;
7734        {
7735            #[doc(hidden)]
7736            type UnderlyingSolTuple<'a> = (IDelegationManagerTypes::Withdrawal,);
7737            #[doc(hidden)]
7738            type UnderlyingRustTuple<'a> = (
7739                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7740            );
7741            #[cfg(test)]
7742            #[allow(dead_code, unreachable_patterns)]
7743            fn _type_assertion(
7744                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7745            ) {
7746                match _t {
7747                    alloy_sol_types::private::AssertTypeEq::<
7748                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7749                    >(_) => {}
7750                }
7751            }
7752            #[automatically_derived]
7753            #[doc(hidden)]
7754            impl ::core::convert::From<calculateWithdrawalRootCall>
7755            for UnderlyingRustTuple<'_> {
7756                fn from(value: calculateWithdrawalRootCall) -> Self {
7757                    (value.withdrawal,)
7758                }
7759            }
7760            #[automatically_derived]
7761            #[doc(hidden)]
7762            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7763            for calculateWithdrawalRootCall {
7764                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7765                    Self { withdrawal: tuple.0 }
7766                }
7767            }
7768        }
7769        {
7770            #[doc(hidden)]
7771            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7772            #[doc(hidden)]
7773            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7774            #[cfg(test)]
7775            #[allow(dead_code, unreachable_patterns)]
7776            fn _type_assertion(
7777                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7778            ) {
7779                match _t {
7780                    alloy_sol_types::private::AssertTypeEq::<
7781                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7782                    >(_) => {}
7783                }
7784            }
7785            #[automatically_derived]
7786            #[doc(hidden)]
7787            impl ::core::convert::From<calculateWithdrawalRootReturn>
7788            for UnderlyingRustTuple<'_> {
7789                fn from(value: calculateWithdrawalRootReturn) -> Self {
7790                    (value._0,)
7791                }
7792            }
7793            #[automatically_derived]
7794            #[doc(hidden)]
7795            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7796            for calculateWithdrawalRootReturn {
7797                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7798                    Self { _0: tuple.0 }
7799                }
7800            }
7801        }
7802        #[automatically_derived]
7803        impl alloy_sol_types::SolCall for calculateWithdrawalRootCall {
7804            type Parameters<'a> = (IDelegationManagerTypes::Withdrawal,);
7805            type Token<'a> = <Self::Parameters<
7806                'a,
7807            > as alloy_sol_types::SolType>::Token<'a>;
7808            type Return = alloy::sol_types::private::FixedBytes<32>;
7809            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7810            type ReturnToken<'a> = <Self::ReturnTuple<
7811                'a,
7812            > as alloy_sol_types::SolType>::Token<'a>;
7813            const SIGNATURE: &'static str = "calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))";
7814            const SELECTOR: [u8; 4] = [89u8, 123u8, 54u8, 218u8];
7815            #[inline]
7816            fn new<'a>(
7817                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7818            ) -> Self {
7819                tuple.into()
7820            }
7821            #[inline]
7822            fn tokenize(&self) -> Self::Token<'_> {
7823                (
7824                    <IDelegationManagerTypes::Withdrawal as alloy_sol_types::SolType>::tokenize(
7825                        &self.withdrawal,
7826                    ),
7827                )
7828            }
7829            #[inline]
7830            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7831                (
7832                    <alloy::sol_types::sol_data::FixedBytes<
7833                        32,
7834                    > as alloy_sol_types::SolType>::tokenize(ret),
7835                )
7836            }
7837            #[inline]
7838            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7839                <Self::ReturnTuple<
7840                    '_,
7841                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7842                    .map(|r| {
7843                        let r: calculateWithdrawalRootReturn = r.into();
7844                        r._0
7845                    })
7846            }
7847            #[inline]
7848            fn abi_decode_returns_validate(
7849                data: &[u8],
7850            ) -> alloy_sol_types::Result<Self::Return> {
7851                <Self::ReturnTuple<
7852                    '_,
7853                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7854                    .map(|r| {
7855                        let r: calculateWithdrawalRootReturn = r.into();
7856                        r._0
7857                    })
7858            }
7859        }
7860    };
7861    #[derive(serde::Serialize, serde::Deserialize)]
7862    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7863    /**Function with signature `completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],bool)` and selector `0xe4cc3f90`.
7864```solidity
7865function completeQueuedWithdrawal(IDelegationManagerTypes.Withdrawal memory withdrawal, address[] memory tokens, bool receiveAsTokens) external;
7866```*/
7867    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7868    #[derive(Clone)]
7869    pub struct completeQueuedWithdrawalCall {
7870        #[allow(missing_docs)]
7871        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7872        #[allow(missing_docs)]
7873        pub tokens: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7874        #[allow(missing_docs)]
7875        pub receiveAsTokens: bool,
7876    }
7877    ///Container type for the return parameters of the [`completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],bool)`](completeQueuedWithdrawalCall) function.
7878    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7879    #[derive(Clone)]
7880    pub struct completeQueuedWithdrawalReturn {}
7881    #[allow(
7882        non_camel_case_types,
7883        non_snake_case,
7884        clippy::pub_underscore_fields,
7885        clippy::style
7886    )]
7887    const _: () = {
7888        use alloy::sol_types as alloy_sol_types;
7889        {
7890            #[doc(hidden)]
7891            type UnderlyingSolTuple<'a> = (
7892                IDelegationManagerTypes::Withdrawal,
7893                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7894                alloy::sol_types::sol_data::Bool,
7895            );
7896            #[doc(hidden)]
7897            type UnderlyingRustTuple<'a> = (
7898                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7899                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7900                bool,
7901            );
7902            #[cfg(test)]
7903            #[allow(dead_code, unreachable_patterns)]
7904            fn _type_assertion(
7905                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7906            ) {
7907                match _t {
7908                    alloy_sol_types::private::AssertTypeEq::<
7909                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7910                    >(_) => {}
7911                }
7912            }
7913            #[automatically_derived]
7914            #[doc(hidden)]
7915            impl ::core::convert::From<completeQueuedWithdrawalCall>
7916            for UnderlyingRustTuple<'_> {
7917                fn from(value: completeQueuedWithdrawalCall) -> Self {
7918                    (value.withdrawal, value.tokens, value.receiveAsTokens)
7919                }
7920            }
7921            #[automatically_derived]
7922            #[doc(hidden)]
7923            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7924            for completeQueuedWithdrawalCall {
7925                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7926                    Self {
7927                        withdrawal: tuple.0,
7928                        tokens: tuple.1,
7929                        receiveAsTokens: tuple.2,
7930                    }
7931                }
7932            }
7933        }
7934        {
7935            #[doc(hidden)]
7936            type UnderlyingSolTuple<'a> = ();
7937            #[doc(hidden)]
7938            type UnderlyingRustTuple<'a> = ();
7939            #[cfg(test)]
7940            #[allow(dead_code, unreachable_patterns)]
7941            fn _type_assertion(
7942                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7943            ) {
7944                match _t {
7945                    alloy_sol_types::private::AssertTypeEq::<
7946                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7947                    >(_) => {}
7948                }
7949            }
7950            #[automatically_derived]
7951            #[doc(hidden)]
7952            impl ::core::convert::From<completeQueuedWithdrawalReturn>
7953            for UnderlyingRustTuple<'_> {
7954                fn from(value: completeQueuedWithdrawalReturn) -> Self {
7955                    ()
7956                }
7957            }
7958            #[automatically_derived]
7959            #[doc(hidden)]
7960            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7961            for completeQueuedWithdrawalReturn {
7962                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7963                    Self {}
7964                }
7965            }
7966        }
7967        impl completeQueuedWithdrawalReturn {
7968            fn _tokenize(
7969                &self,
7970            ) -> <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<
7971                '_,
7972            > {
7973                ()
7974            }
7975        }
7976        #[automatically_derived]
7977        impl alloy_sol_types::SolCall for completeQueuedWithdrawalCall {
7978            type Parameters<'a> = (
7979                IDelegationManagerTypes::Withdrawal,
7980                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7981                alloy::sol_types::sol_data::Bool,
7982            );
7983            type Token<'a> = <Self::Parameters<
7984                'a,
7985            > as alloy_sol_types::SolType>::Token<'a>;
7986            type Return = completeQueuedWithdrawalReturn;
7987            type ReturnTuple<'a> = ();
7988            type ReturnToken<'a> = <Self::ReturnTuple<
7989                'a,
7990            > as alloy_sol_types::SolType>::Token<'a>;
7991            const SIGNATURE: &'static str = "completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],bool)";
7992            const SELECTOR: [u8; 4] = [228u8, 204u8, 63u8, 144u8];
7993            #[inline]
7994            fn new<'a>(
7995                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7996            ) -> Self {
7997                tuple.into()
7998            }
7999            #[inline]
8000            fn tokenize(&self) -> Self::Token<'_> {
8001                (
8002                    <IDelegationManagerTypes::Withdrawal as alloy_sol_types::SolType>::tokenize(
8003                        &self.withdrawal,
8004                    ),
8005                    <alloy::sol_types::sol_data::Array<
8006                        alloy::sol_types::sol_data::Address,
8007                    > as alloy_sol_types::SolType>::tokenize(&self.tokens),
8008                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8009                        &self.receiveAsTokens,
8010                    ),
8011                )
8012            }
8013            #[inline]
8014            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8015                completeQueuedWithdrawalReturn::_tokenize(ret)
8016            }
8017            #[inline]
8018            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8019                <Self::ReturnTuple<
8020                    '_,
8021                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8022                    .map(Into::into)
8023            }
8024            #[inline]
8025            fn abi_decode_returns_validate(
8026                data: &[u8],
8027            ) -> alloy_sol_types::Result<Self::Return> {
8028                <Self::ReturnTuple<
8029                    '_,
8030                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8031                    .map(Into::into)
8032            }
8033        }
8034    };
8035    #[derive(serde::Serialize, serde::Deserialize)]
8036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8037    /**Function with signature `completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],bool[])` and selector `0x9435bb43`.
8038```solidity
8039function completeQueuedWithdrawals(IDelegationManagerTypes.Withdrawal[] memory withdrawals, address[][] memory tokens, bool[] memory receiveAsTokens) external;
8040```*/
8041    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8042    #[derive(Clone)]
8043    pub struct completeQueuedWithdrawalsCall {
8044        #[allow(missing_docs)]
8045        pub withdrawals: alloy::sol_types::private::Vec<
8046            <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
8047        >,
8048        #[allow(missing_docs)]
8049        pub tokens: alloy::sol_types::private::Vec<
8050            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8051        >,
8052        #[allow(missing_docs)]
8053        pub receiveAsTokens: alloy::sol_types::private::Vec<bool>,
8054    }
8055    ///Container type for the return parameters of the [`completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],bool[])`](completeQueuedWithdrawalsCall) function.
8056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8057    #[derive(Clone)]
8058    pub struct completeQueuedWithdrawalsReturn {}
8059    #[allow(
8060        non_camel_case_types,
8061        non_snake_case,
8062        clippy::pub_underscore_fields,
8063        clippy::style
8064    )]
8065    const _: () = {
8066        use alloy::sol_types as alloy_sol_types;
8067        {
8068            #[doc(hidden)]
8069            type UnderlyingSolTuple<'a> = (
8070                alloy::sol_types::sol_data::Array<IDelegationManagerTypes::Withdrawal>,
8071                alloy::sol_types::sol_data::Array<
8072                    alloy::sol_types::sol_data::Array<
8073                        alloy::sol_types::sol_data::Address,
8074                    >,
8075                >,
8076                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
8077            );
8078            #[doc(hidden)]
8079            type UnderlyingRustTuple<'a> = (
8080                alloy::sol_types::private::Vec<
8081                    <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
8082                >,
8083                alloy::sol_types::private::Vec<
8084                    alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8085                >,
8086                alloy::sol_types::private::Vec<bool>,
8087            );
8088            #[cfg(test)]
8089            #[allow(dead_code, unreachable_patterns)]
8090            fn _type_assertion(
8091                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8092            ) {
8093                match _t {
8094                    alloy_sol_types::private::AssertTypeEq::<
8095                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8096                    >(_) => {}
8097                }
8098            }
8099            #[automatically_derived]
8100            #[doc(hidden)]
8101            impl ::core::convert::From<completeQueuedWithdrawalsCall>
8102            for UnderlyingRustTuple<'_> {
8103                fn from(value: completeQueuedWithdrawalsCall) -> Self {
8104                    (value.withdrawals, value.tokens, value.receiveAsTokens)
8105                }
8106            }
8107            #[automatically_derived]
8108            #[doc(hidden)]
8109            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8110            for completeQueuedWithdrawalsCall {
8111                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8112                    Self {
8113                        withdrawals: tuple.0,
8114                        tokens: tuple.1,
8115                        receiveAsTokens: tuple.2,
8116                    }
8117                }
8118            }
8119        }
8120        {
8121            #[doc(hidden)]
8122            type UnderlyingSolTuple<'a> = ();
8123            #[doc(hidden)]
8124            type UnderlyingRustTuple<'a> = ();
8125            #[cfg(test)]
8126            #[allow(dead_code, unreachable_patterns)]
8127            fn _type_assertion(
8128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8129            ) {
8130                match _t {
8131                    alloy_sol_types::private::AssertTypeEq::<
8132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8133                    >(_) => {}
8134                }
8135            }
8136            #[automatically_derived]
8137            #[doc(hidden)]
8138            impl ::core::convert::From<completeQueuedWithdrawalsReturn>
8139            for UnderlyingRustTuple<'_> {
8140                fn from(value: completeQueuedWithdrawalsReturn) -> Self {
8141                    ()
8142                }
8143            }
8144            #[automatically_derived]
8145            #[doc(hidden)]
8146            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8147            for completeQueuedWithdrawalsReturn {
8148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8149                    Self {}
8150                }
8151            }
8152        }
8153        impl completeQueuedWithdrawalsReturn {
8154            fn _tokenize(
8155                &self,
8156            ) -> <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::ReturnToken<
8157                '_,
8158            > {
8159                ()
8160            }
8161        }
8162        #[automatically_derived]
8163        impl alloy_sol_types::SolCall for completeQueuedWithdrawalsCall {
8164            type Parameters<'a> = (
8165                alloy::sol_types::sol_data::Array<IDelegationManagerTypes::Withdrawal>,
8166                alloy::sol_types::sol_data::Array<
8167                    alloy::sol_types::sol_data::Array<
8168                        alloy::sol_types::sol_data::Address,
8169                    >,
8170                >,
8171                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
8172            );
8173            type Token<'a> = <Self::Parameters<
8174                'a,
8175            > as alloy_sol_types::SolType>::Token<'a>;
8176            type Return = completeQueuedWithdrawalsReturn;
8177            type ReturnTuple<'a> = ();
8178            type ReturnToken<'a> = <Self::ReturnTuple<
8179                'a,
8180            > as alloy_sol_types::SolType>::Token<'a>;
8181            const SIGNATURE: &'static str = "completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],bool[])";
8182            const SELECTOR: [u8; 4] = [148u8, 53u8, 187u8, 67u8];
8183            #[inline]
8184            fn new<'a>(
8185                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8186            ) -> Self {
8187                tuple.into()
8188            }
8189            #[inline]
8190            fn tokenize(&self) -> Self::Token<'_> {
8191                (
8192                    <alloy::sol_types::sol_data::Array<
8193                        IDelegationManagerTypes::Withdrawal,
8194                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawals),
8195                    <alloy::sol_types::sol_data::Array<
8196                        alloy::sol_types::sol_data::Array<
8197                            alloy::sol_types::sol_data::Address,
8198                        >,
8199                    > as alloy_sol_types::SolType>::tokenize(&self.tokens),
8200                    <alloy::sol_types::sol_data::Array<
8201                        alloy::sol_types::sol_data::Bool,
8202                    > as alloy_sol_types::SolType>::tokenize(&self.receiveAsTokens),
8203                )
8204            }
8205            #[inline]
8206            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8207                completeQueuedWithdrawalsReturn::_tokenize(ret)
8208            }
8209            #[inline]
8210            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8211                <Self::ReturnTuple<
8212                    '_,
8213                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8214                    .map(Into::into)
8215            }
8216            #[inline]
8217            fn abi_decode_returns_validate(
8218                data: &[u8],
8219            ) -> alloy_sol_types::Result<Self::Return> {
8220                <Self::ReturnTuple<
8221                    '_,
8222                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8223                    .map(Into::into)
8224            }
8225        }
8226    };
8227    #[derive(serde::Serialize, serde::Deserialize)]
8228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8229    /**Function with signature `convertToDepositShares(address,address[],uint256[])` and selector `0x25df922e`.
8230```solidity
8231function convertToDepositShares(address staker, address[] memory strategies, uint256[] memory withdrawableShares) external view returns (uint256[] memory);
8232```*/
8233    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8234    #[derive(Clone)]
8235    pub struct convertToDepositSharesCall {
8236        #[allow(missing_docs)]
8237        pub staker: alloy::sol_types::private::Address,
8238        #[allow(missing_docs)]
8239        pub strategies: alloy::sol_types::private::Vec<
8240            alloy::sol_types::private::Address,
8241        >,
8242        #[allow(missing_docs)]
8243        pub withdrawableShares: alloy::sol_types::private::Vec<
8244            alloy::sol_types::private::primitives::aliases::U256,
8245        >,
8246    }
8247    #[derive(serde::Serialize, serde::Deserialize)]
8248    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8249    ///Container type for the return parameters of the [`convertToDepositShares(address,address[],uint256[])`](convertToDepositSharesCall) function.
8250    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8251    #[derive(Clone)]
8252    pub struct convertToDepositSharesReturn {
8253        #[allow(missing_docs)]
8254        pub _0: alloy::sol_types::private::Vec<
8255            alloy::sol_types::private::primitives::aliases::U256,
8256        >,
8257    }
8258    #[allow(
8259        non_camel_case_types,
8260        non_snake_case,
8261        clippy::pub_underscore_fields,
8262        clippy::style
8263    )]
8264    const _: () = {
8265        use alloy::sol_types as alloy_sol_types;
8266        {
8267            #[doc(hidden)]
8268            type UnderlyingSolTuple<'a> = (
8269                alloy::sol_types::sol_data::Address,
8270                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8271                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8272            );
8273            #[doc(hidden)]
8274            type UnderlyingRustTuple<'a> = (
8275                alloy::sol_types::private::Address,
8276                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8277                alloy::sol_types::private::Vec<
8278                    alloy::sol_types::private::primitives::aliases::U256,
8279                >,
8280            );
8281            #[cfg(test)]
8282            #[allow(dead_code, unreachable_patterns)]
8283            fn _type_assertion(
8284                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8285            ) {
8286                match _t {
8287                    alloy_sol_types::private::AssertTypeEq::<
8288                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8289                    >(_) => {}
8290                }
8291            }
8292            #[automatically_derived]
8293            #[doc(hidden)]
8294            impl ::core::convert::From<convertToDepositSharesCall>
8295            for UnderlyingRustTuple<'_> {
8296                fn from(value: convertToDepositSharesCall) -> Self {
8297                    (value.staker, value.strategies, value.withdrawableShares)
8298                }
8299            }
8300            #[automatically_derived]
8301            #[doc(hidden)]
8302            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8303            for convertToDepositSharesCall {
8304                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8305                    Self {
8306                        staker: tuple.0,
8307                        strategies: tuple.1,
8308                        withdrawableShares: tuple.2,
8309                    }
8310                }
8311            }
8312        }
8313        {
8314            #[doc(hidden)]
8315            type UnderlyingSolTuple<'a> = (
8316                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8317            );
8318            #[doc(hidden)]
8319            type UnderlyingRustTuple<'a> = (
8320                alloy::sol_types::private::Vec<
8321                    alloy::sol_types::private::primitives::aliases::U256,
8322                >,
8323            );
8324            #[cfg(test)]
8325            #[allow(dead_code, unreachable_patterns)]
8326            fn _type_assertion(
8327                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8328            ) {
8329                match _t {
8330                    alloy_sol_types::private::AssertTypeEq::<
8331                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8332                    >(_) => {}
8333                }
8334            }
8335            #[automatically_derived]
8336            #[doc(hidden)]
8337            impl ::core::convert::From<convertToDepositSharesReturn>
8338            for UnderlyingRustTuple<'_> {
8339                fn from(value: convertToDepositSharesReturn) -> Self {
8340                    (value._0,)
8341                }
8342            }
8343            #[automatically_derived]
8344            #[doc(hidden)]
8345            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8346            for convertToDepositSharesReturn {
8347                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8348                    Self { _0: tuple.0 }
8349                }
8350            }
8351        }
8352        #[automatically_derived]
8353        impl alloy_sol_types::SolCall for convertToDepositSharesCall {
8354            type Parameters<'a> = (
8355                alloy::sol_types::sol_data::Address,
8356                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8357                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8358            );
8359            type Token<'a> = <Self::Parameters<
8360                'a,
8361            > as alloy_sol_types::SolType>::Token<'a>;
8362            type Return = alloy::sol_types::private::Vec<
8363                alloy::sol_types::private::primitives::aliases::U256,
8364            >;
8365            type ReturnTuple<'a> = (
8366                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8367            );
8368            type ReturnToken<'a> = <Self::ReturnTuple<
8369                'a,
8370            > as alloy_sol_types::SolType>::Token<'a>;
8371            const SIGNATURE: &'static str = "convertToDepositShares(address,address[],uint256[])";
8372            const SELECTOR: [u8; 4] = [37u8, 223u8, 146u8, 46u8];
8373            #[inline]
8374            fn new<'a>(
8375                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8376            ) -> Self {
8377                tuple.into()
8378            }
8379            #[inline]
8380            fn tokenize(&self) -> Self::Token<'_> {
8381                (
8382                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8383                        &self.staker,
8384                    ),
8385                    <alloy::sol_types::sol_data::Array<
8386                        alloy::sol_types::sol_data::Address,
8387                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
8388                    <alloy::sol_types::sol_data::Array<
8389                        alloy::sol_types::sol_data::Uint<256>,
8390                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawableShares),
8391                )
8392            }
8393            #[inline]
8394            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8395                (
8396                    <alloy::sol_types::sol_data::Array<
8397                        alloy::sol_types::sol_data::Uint<256>,
8398                    > as alloy_sol_types::SolType>::tokenize(ret),
8399                )
8400            }
8401            #[inline]
8402            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8403                <Self::ReturnTuple<
8404                    '_,
8405                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8406                    .map(|r| {
8407                        let r: convertToDepositSharesReturn = r.into();
8408                        r._0
8409                    })
8410            }
8411            #[inline]
8412            fn abi_decode_returns_validate(
8413                data: &[u8],
8414            ) -> alloy_sol_types::Result<Self::Return> {
8415                <Self::ReturnTuple<
8416                    '_,
8417                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8418                    .map(|r| {
8419                        let r: convertToDepositSharesReturn = r.into();
8420                        r._0
8421                    })
8422            }
8423        }
8424    };
8425    #[derive(serde::Serialize, serde::Deserialize)]
8426    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8427    /**Function with signature `cumulativeWithdrawalsQueued(address)` and selector `0xa1788484`.
8428```solidity
8429function cumulativeWithdrawalsQueued(address staker) external view returns (uint256 totalQueued);
8430```*/
8431    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8432    #[derive(Clone)]
8433    pub struct cumulativeWithdrawalsQueuedCall {
8434        #[allow(missing_docs)]
8435        pub staker: alloy::sol_types::private::Address,
8436    }
8437    #[derive(serde::Serialize, serde::Deserialize)]
8438    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8439    ///Container type for the return parameters of the [`cumulativeWithdrawalsQueued(address)`](cumulativeWithdrawalsQueuedCall) function.
8440    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8441    #[derive(Clone)]
8442    pub struct cumulativeWithdrawalsQueuedReturn {
8443        #[allow(missing_docs)]
8444        pub totalQueued: alloy::sol_types::private::primitives::aliases::U256,
8445    }
8446    #[allow(
8447        non_camel_case_types,
8448        non_snake_case,
8449        clippy::pub_underscore_fields,
8450        clippy::style
8451    )]
8452    const _: () = {
8453        use alloy::sol_types as alloy_sol_types;
8454        {
8455            #[doc(hidden)]
8456            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8457            #[doc(hidden)]
8458            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8459            #[cfg(test)]
8460            #[allow(dead_code, unreachable_patterns)]
8461            fn _type_assertion(
8462                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8463            ) {
8464                match _t {
8465                    alloy_sol_types::private::AssertTypeEq::<
8466                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8467                    >(_) => {}
8468                }
8469            }
8470            #[automatically_derived]
8471            #[doc(hidden)]
8472            impl ::core::convert::From<cumulativeWithdrawalsQueuedCall>
8473            for UnderlyingRustTuple<'_> {
8474                fn from(value: cumulativeWithdrawalsQueuedCall) -> Self {
8475                    (value.staker,)
8476                }
8477            }
8478            #[automatically_derived]
8479            #[doc(hidden)]
8480            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8481            for cumulativeWithdrawalsQueuedCall {
8482                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8483                    Self { staker: tuple.0 }
8484                }
8485            }
8486        }
8487        {
8488            #[doc(hidden)]
8489            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8490            #[doc(hidden)]
8491            type UnderlyingRustTuple<'a> = (
8492                alloy::sol_types::private::primitives::aliases::U256,
8493            );
8494            #[cfg(test)]
8495            #[allow(dead_code, unreachable_patterns)]
8496            fn _type_assertion(
8497                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8498            ) {
8499                match _t {
8500                    alloy_sol_types::private::AssertTypeEq::<
8501                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8502                    >(_) => {}
8503                }
8504            }
8505            #[automatically_derived]
8506            #[doc(hidden)]
8507            impl ::core::convert::From<cumulativeWithdrawalsQueuedReturn>
8508            for UnderlyingRustTuple<'_> {
8509                fn from(value: cumulativeWithdrawalsQueuedReturn) -> Self {
8510                    (value.totalQueued,)
8511                }
8512            }
8513            #[automatically_derived]
8514            #[doc(hidden)]
8515            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8516            for cumulativeWithdrawalsQueuedReturn {
8517                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8518                    Self { totalQueued: tuple.0 }
8519                }
8520            }
8521        }
8522        #[automatically_derived]
8523        impl alloy_sol_types::SolCall for cumulativeWithdrawalsQueuedCall {
8524            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8525            type Token<'a> = <Self::Parameters<
8526                'a,
8527            > as alloy_sol_types::SolType>::Token<'a>;
8528            type Return = alloy::sol_types::private::primitives::aliases::U256;
8529            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8530            type ReturnToken<'a> = <Self::ReturnTuple<
8531                'a,
8532            > as alloy_sol_types::SolType>::Token<'a>;
8533            const SIGNATURE: &'static str = "cumulativeWithdrawalsQueued(address)";
8534            const SELECTOR: [u8; 4] = [161u8, 120u8, 132u8, 132u8];
8535            #[inline]
8536            fn new<'a>(
8537                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8538            ) -> Self {
8539                tuple.into()
8540            }
8541            #[inline]
8542            fn tokenize(&self) -> Self::Token<'_> {
8543                (
8544                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8545                        &self.staker,
8546                    ),
8547                )
8548            }
8549            #[inline]
8550            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8551                (
8552                    <alloy::sol_types::sol_data::Uint<
8553                        256,
8554                    > as alloy_sol_types::SolType>::tokenize(ret),
8555                )
8556            }
8557            #[inline]
8558            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8559                <Self::ReturnTuple<
8560                    '_,
8561                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8562                    .map(|r| {
8563                        let r: cumulativeWithdrawalsQueuedReturn = r.into();
8564                        r.totalQueued
8565                    })
8566            }
8567            #[inline]
8568            fn abi_decode_returns_validate(
8569                data: &[u8],
8570            ) -> alloy_sol_types::Result<Self::Return> {
8571                <Self::ReturnTuple<
8572                    '_,
8573                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8574                    .map(|r| {
8575                        let r: cumulativeWithdrawalsQueuedReturn = r.into();
8576                        r.totalQueued
8577                    })
8578            }
8579        }
8580    };
8581    #[derive(serde::Serialize, serde::Deserialize)]
8582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8583    /**Function with signature `decreaseDelegatedShares(address,uint256,uint64)` and selector `0x60a0d1ce`.
8584```solidity
8585function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) external;
8586```*/
8587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8588    #[derive(Clone)]
8589    pub struct decreaseDelegatedSharesCall {
8590        #[allow(missing_docs)]
8591        pub staker: alloy::sol_types::private::Address,
8592        #[allow(missing_docs)]
8593        pub curDepositShares: alloy::sol_types::private::primitives::aliases::U256,
8594        #[allow(missing_docs)]
8595        pub beaconChainSlashingFactorDecrease: u64,
8596    }
8597    ///Container type for the return parameters of the [`decreaseDelegatedShares(address,uint256,uint64)`](decreaseDelegatedSharesCall) function.
8598    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8599    #[derive(Clone)]
8600    pub struct decreaseDelegatedSharesReturn {}
8601    #[allow(
8602        non_camel_case_types,
8603        non_snake_case,
8604        clippy::pub_underscore_fields,
8605        clippy::style
8606    )]
8607    const _: () = {
8608        use alloy::sol_types as alloy_sol_types;
8609        {
8610            #[doc(hidden)]
8611            type UnderlyingSolTuple<'a> = (
8612                alloy::sol_types::sol_data::Address,
8613                alloy::sol_types::sol_data::Uint<256>,
8614                alloy::sol_types::sol_data::Uint<64>,
8615            );
8616            #[doc(hidden)]
8617            type UnderlyingRustTuple<'a> = (
8618                alloy::sol_types::private::Address,
8619                alloy::sol_types::private::primitives::aliases::U256,
8620                u64,
8621            );
8622            #[cfg(test)]
8623            #[allow(dead_code, unreachable_patterns)]
8624            fn _type_assertion(
8625                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8626            ) {
8627                match _t {
8628                    alloy_sol_types::private::AssertTypeEq::<
8629                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8630                    >(_) => {}
8631                }
8632            }
8633            #[automatically_derived]
8634            #[doc(hidden)]
8635            impl ::core::convert::From<decreaseDelegatedSharesCall>
8636            for UnderlyingRustTuple<'_> {
8637                fn from(value: decreaseDelegatedSharesCall) -> Self {
8638                    (
8639                        value.staker,
8640                        value.curDepositShares,
8641                        value.beaconChainSlashingFactorDecrease,
8642                    )
8643                }
8644            }
8645            #[automatically_derived]
8646            #[doc(hidden)]
8647            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8648            for decreaseDelegatedSharesCall {
8649                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8650                    Self {
8651                        staker: tuple.0,
8652                        curDepositShares: tuple.1,
8653                        beaconChainSlashingFactorDecrease: tuple.2,
8654                    }
8655                }
8656            }
8657        }
8658        {
8659            #[doc(hidden)]
8660            type UnderlyingSolTuple<'a> = ();
8661            #[doc(hidden)]
8662            type UnderlyingRustTuple<'a> = ();
8663            #[cfg(test)]
8664            #[allow(dead_code, unreachable_patterns)]
8665            fn _type_assertion(
8666                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8667            ) {
8668                match _t {
8669                    alloy_sol_types::private::AssertTypeEq::<
8670                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8671                    >(_) => {}
8672                }
8673            }
8674            #[automatically_derived]
8675            #[doc(hidden)]
8676            impl ::core::convert::From<decreaseDelegatedSharesReturn>
8677            for UnderlyingRustTuple<'_> {
8678                fn from(value: decreaseDelegatedSharesReturn) -> Self {
8679                    ()
8680                }
8681            }
8682            #[automatically_derived]
8683            #[doc(hidden)]
8684            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8685            for decreaseDelegatedSharesReturn {
8686                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8687                    Self {}
8688                }
8689            }
8690        }
8691        impl decreaseDelegatedSharesReturn {
8692            fn _tokenize(
8693                &self,
8694            ) -> <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::ReturnToken<
8695                '_,
8696            > {
8697                ()
8698            }
8699        }
8700        #[automatically_derived]
8701        impl alloy_sol_types::SolCall for decreaseDelegatedSharesCall {
8702            type Parameters<'a> = (
8703                alloy::sol_types::sol_data::Address,
8704                alloy::sol_types::sol_data::Uint<256>,
8705                alloy::sol_types::sol_data::Uint<64>,
8706            );
8707            type Token<'a> = <Self::Parameters<
8708                'a,
8709            > as alloy_sol_types::SolType>::Token<'a>;
8710            type Return = decreaseDelegatedSharesReturn;
8711            type ReturnTuple<'a> = ();
8712            type ReturnToken<'a> = <Self::ReturnTuple<
8713                'a,
8714            > as alloy_sol_types::SolType>::Token<'a>;
8715            const SIGNATURE: &'static str = "decreaseDelegatedShares(address,uint256,uint64)";
8716            const SELECTOR: [u8; 4] = [96u8, 160u8, 209u8, 206u8];
8717            #[inline]
8718            fn new<'a>(
8719                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8720            ) -> Self {
8721                tuple.into()
8722            }
8723            #[inline]
8724            fn tokenize(&self) -> Self::Token<'_> {
8725                (
8726                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8727                        &self.staker,
8728                    ),
8729                    <alloy::sol_types::sol_data::Uint<
8730                        256,
8731                    > as alloy_sol_types::SolType>::tokenize(&self.curDepositShares),
8732                    <alloy::sol_types::sol_data::Uint<
8733                        64,
8734                    > as alloy_sol_types::SolType>::tokenize(
8735                        &self.beaconChainSlashingFactorDecrease,
8736                    ),
8737                )
8738            }
8739            #[inline]
8740            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8741                decreaseDelegatedSharesReturn::_tokenize(ret)
8742            }
8743            #[inline]
8744            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8745                <Self::ReturnTuple<
8746                    '_,
8747                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8748                    .map(Into::into)
8749            }
8750            #[inline]
8751            fn abi_decode_returns_validate(
8752                data: &[u8],
8753            ) -> alloy_sol_types::Result<Self::Return> {
8754                <Self::ReturnTuple<
8755                    '_,
8756                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8757                    .map(Into::into)
8758            }
8759        }
8760    };
8761    #[derive(serde::Serialize, serde::Deserialize)]
8762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8763    /**Function with signature `delegateTo(address,(bytes,uint256),bytes32)` and selector `0xeea9064b`.
8764```solidity
8765function delegateTo(address operator, ISignatureUtilsMixinTypes.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external;
8766```*/
8767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8768    #[derive(Clone)]
8769    pub struct delegateToCall {
8770        #[allow(missing_docs)]
8771        pub operator: alloy::sol_types::private::Address,
8772        #[allow(missing_docs)]
8773        pub approverSignatureAndExpiry: <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
8774        #[allow(missing_docs)]
8775        pub approverSalt: alloy::sol_types::private::FixedBytes<32>,
8776    }
8777    ///Container type for the return parameters of the [`delegateTo(address,(bytes,uint256),bytes32)`](delegateToCall) function.
8778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8779    #[derive(Clone)]
8780    pub struct delegateToReturn {}
8781    #[allow(
8782        non_camel_case_types,
8783        non_snake_case,
8784        clippy::pub_underscore_fields,
8785        clippy::style
8786    )]
8787    const _: () = {
8788        use alloy::sol_types as alloy_sol_types;
8789        {
8790            #[doc(hidden)]
8791            type UnderlyingSolTuple<'a> = (
8792                alloy::sol_types::sol_data::Address,
8793                ISignatureUtilsMixinTypes::SignatureWithExpiry,
8794                alloy::sol_types::sol_data::FixedBytes<32>,
8795            );
8796            #[doc(hidden)]
8797            type UnderlyingRustTuple<'a> = (
8798                alloy::sol_types::private::Address,
8799                <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
8800                alloy::sol_types::private::FixedBytes<32>,
8801            );
8802            #[cfg(test)]
8803            #[allow(dead_code, unreachable_patterns)]
8804            fn _type_assertion(
8805                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8806            ) {
8807                match _t {
8808                    alloy_sol_types::private::AssertTypeEq::<
8809                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8810                    >(_) => {}
8811                }
8812            }
8813            #[automatically_derived]
8814            #[doc(hidden)]
8815            impl ::core::convert::From<delegateToCall> for UnderlyingRustTuple<'_> {
8816                fn from(value: delegateToCall) -> Self {
8817                    (
8818                        value.operator,
8819                        value.approverSignatureAndExpiry,
8820                        value.approverSalt,
8821                    )
8822                }
8823            }
8824            #[automatically_derived]
8825            #[doc(hidden)]
8826            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateToCall {
8827                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8828                    Self {
8829                        operator: tuple.0,
8830                        approverSignatureAndExpiry: tuple.1,
8831                        approverSalt: tuple.2,
8832                    }
8833                }
8834            }
8835        }
8836        {
8837            #[doc(hidden)]
8838            type UnderlyingSolTuple<'a> = ();
8839            #[doc(hidden)]
8840            type UnderlyingRustTuple<'a> = ();
8841            #[cfg(test)]
8842            #[allow(dead_code, unreachable_patterns)]
8843            fn _type_assertion(
8844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8845            ) {
8846                match _t {
8847                    alloy_sol_types::private::AssertTypeEq::<
8848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8849                    >(_) => {}
8850                }
8851            }
8852            #[automatically_derived]
8853            #[doc(hidden)]
8854            impl ::core::convert::From<delegateToReturn> for UnderlyingRustTuple<'_> {
8855                fn from(value: delegateToReturn) -> Self {
8856                    ()
8857                }
8858            }
8859            #[automatically_derived]
8860            #[doc(hidden)]
8861            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateToReturn {
8862                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8863                    Self {}
8864                }
8865            }
8866        }
8867        impl delegateToReturn {
8868            fn _tokenize(
8869                &self,
8870            ) -> <delegateToCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8871                ()
8872            }
8873        }
8874        #[automatically_derived]
8875        impl alloy_sol_types::SolCall for delegateToCall {
8876            type Parameters<'a> = (
8877                alloy::sol_types::sol_data::Address,
8878                ISignatureUtilsMixinTypes::SignatureWithExpiry,
8879                alloy::sol_types::sol_data::FixedBytes<32>,
8880            );
8881            type Token<'a> = <Self::Parameters<
8882                'a,
8883            > as alloy_sol_types::SolType>::Token<'a>;
8884            type Return = delegateToReturn;
8885            type ReturnTuple<'a> = ();
8886            type ReturnToken<'a> = <Self::ReturnTuple<
8887                'a,
8888            > as alloy_sol_types::SolType>::Token<'a>;
8889            const SIGNATURE: &'static str = "delegateTo(address,(bytes,uint256),bytes32)";
8890            const SELECTOR: [u8; 4] = [238u8, 169u8, 6u8, 75u8];
8891            #[inline]
8892            fn new<'a>(
8893                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8894            ) -> Self {
8895                tuple.into()
8896            }
8897            #[inline]
8898            fn tokenize(&self) -> Self::Token<'_> {
8899                (
8900                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8901                        &self.operator,
8902                    ),
8903                    <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy_sol_types::SolType>::tokenize(
8904                        &self.approverSignatureAndExpiry,
8905                    ),
8906                    <alloy::sol_types::sol_data::FixedBytes<
8907                        32,
8908                    > as alloy_sol_types::SolType>::tokenize(&self.approverSalt),
8909                )
8910            }
8911            #[inline]
8912            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8913                delegateToReturn::_tokenize(ret)
8914            }
8915            #[inline]
8916            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8917                <Self::ReturnTuple<
8918                    '_,
8919                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8920                    .map(Into::into)
8921            }
8922            #[inline]
8923            fn abi_decode_returns_validate(
8924                data: &[u8],
8925            ) -> alloy_sol_types::Result<Self::Return> {
8926                <Self::ReturnTuple<
8927                    '_,
8928                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8929                    .map(Into::into)
8930            }
8931        }
8932    };
8933    #[derive(serde::Serialize, serde::Deserialize)]
8934    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8935    /**Function with signature `delegatedTo(address)` and selector `0x65da1264`.
8936```solidity
8937function delegatedTo(address staker) external view returns (address operator);
8938```*/
8939    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8940    #[derive(Clone)]
8941    pub struct delegatedToCall {
8942        #[allow(missing_docs)]
8943        pub staker: alloy::sol_types::private::Address,
8944    }
8945    #[derive(serde::Serialize, serde::Deserialize)]
8946    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8947    ///Container type for the return parameters of the [`delegatedTo(address)`](delegatedToCall) function.
8948    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8949    #[derive(Clone)]
8950    pub struct delegatedToReturn {
8951        #[allow(missing_docs)]
8952        pub operator: alloy::sol_types::private::Address,
8953    }
8954    #[allow(
8955        non_camel_case_types,
8956        non_snake_case,
8957        clippy::pub_underscore_fields,
8958        clippy::style
8959    )]
8960    const _: () = {
8961        use alloy::sol_types as alloy_sol_types;
8962        {
8963            #[doc(hidden)]
8964            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8965            #[doc(hidden)]
8966            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8967            #[cfg(test)]
8968            #[allow(dead_code, unreachable_patterns)]
8969            fn _type_assertion(
8970                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8971            ) {
8972                match _t {
8973                    alloy_sol_types::private::AssertTypeEq::<
8974                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8975                    >(_) => {}
8976                }
8977            }
8978            #[automatically_derived]
8979            #[doc(hidden)]
8980            impl ::core::convert::From<delegatedToCall> for UnderlyingRustTuple<'_> {
8981                fn from(value: delegatedToCall) -> Self {
8982                    (value.staker,)
8983                }
8984            }
8985            #[automatically_derived]
8986            #[doc(hidden)]
8987            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegatedToCall {
8988                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8989                    Self { staker: tuple.0 }
8990                }
8991            }
8992        }
8993        {
8994            #[doc(hidden)]
8995            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8996            #[doc(hidden)]
8997            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8998            #[cfg(test)]
8999            #[allow(dead_code, unreachable_patterns)]
9000            fn _type_assertion(
9001                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9002            ) {
9003                match _t {
9004                    alloy_sol_types::private::AssertTypeEq::<
9005                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9006                    >(_) => {}
9007                }
9008            }
9009            #[automatically_derived]
9010            #[doc(hidden)]
9011            impl ::core::convert::From<delegatedToReturn> for UnderlyingRustTuple<'_> {
9012                fn from(value: delegatedToReturn) -> Self {
9013                    (value.operator,)
9014                }
9015            }
9016            #[automatically_derived]
9017            #[doc(hidden)]
9018            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegatedToReturn {
9019                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9020                    Self { operator: tuple.0 }
9021                }
9022            }
9023        }
9024        #[automatically_derived]
9025        impl alloy_sol_types::SolCall for delegatedToCall {
9026            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9027            type Token<'a> = <Self::Parameters<
9028                'a,
9029            > as alloy_sol_types::SolType>::Token<'a>;
9030            type Return = alloy::sol_types::private::Address;
9031            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9032            type ReturnToken<'a> = <Self::ReturnTuple<
9033                'a,
9034            > as alloy_sol_types::SolType>::Token<'a>;
9035            const SIGNATURE: &'static str = "delegatedTo(address)";
9036            const SELECTOR: [u8; 4] = [101u8, 218u8, 18u8, 100u8];
9037            #[inline]
9038            fn new<'a>(
9039                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9040            ) -> Self {
9041                tuple.into()
9042            }
9043            #[inline]
9044            fn tokenize(&self) -> Self::Token<'_> {
9045                (
9046                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9047                        &self.staker,
9048                    ),
9049                )
9050            }
9051            #[inline]
9052            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9053                (
9054                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9055                        ret,
9056                    ),
9057                )
9058            }
9059            #[inline]
9060            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9061                <Self::ReturnTuple<
9062                    '_,
9063                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9064                    .map(|r| {
9065                        let r: delegatedToReturn = r.into();
9066                        r.operator
9067                    })
9068            }
9069            #[inline]
9070            fn abi_decode_returns_validate(
9071                data: &[u8],
9072            ) -> alloy_sol_types::Result<Self::Return> {
9073                <Self::ReturnTuple<
9074                    '_,
9075                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9076                    .map(|r| {
9077                        let r: delegatedToReturn = r.into();
9078                        r.operator
9079                    })
9080            }
9081        }
9082    };
9083    #[derive(serde::Serialize, serde::Deserialize)]
9084    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9085    /**Function with signature `delegationApprover(address)` and selector `0x3cdeb5e0`.
9086```solidity
9087function delegationApprover(address operator) external view returns (address);
9088```*/
9089    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9090    #[derive(Clone)]
9091    pub struct delegationApproverCall {
9092        #[allow(missing_docs)]
9093        pub operator: alloy::sol_types::private::Address,
9094    }
9095    #[derive(serde::Serialize, serde::Deserialize)]
9096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9097    ///Container type for the return parameters of the [`delegationApprover(address)`](delegationApproverCall) function.
9098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9099    #[derive(Clone)]
9100    pub struct delegationApproverReturn {
9101        #[allow(missing_docs)]
9102        pub _0: alloy::sol_types::private::Address,
9103    }
9104    #[allow(
9105        non_camel_case_types,
9106        non_snake_case,
9107        clippy::pub_underscore_fields,
9108        clippy::style
9109    )]
9110    const _: () = {
9111        use alloy::sol_types as alloy_sol_types;
9112        {
9113            #[doc(hidden)]
9114            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9115            #[doc(hidden)]
9116            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9117            #[cfg(test)]
9118            #[allow(dead_code, unreachable_patterns)]
9119            fn _type_assertion(
9120                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9121            ) {
9122                match _t {
9123                    alloy_sol_types::private::AssertTypeEq::<
9124                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9125                    >(_) => {}
9126                }
9127            }
9128            #[automatically_derived]
9129            #[doc(hidden)]
9130            impl ::core::convert::From<delegationApproverCall>
9131            for UnderlyingRustTuple<'_> {
9132                fn from(value: delegationApproverCall) -> Self {
9133                    (value.operator,)
9134                }
9135            }
9136            #[automatically_derived]
9137            #[doc(hidden)]
9138            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9139            for delegationApproverCall {
9140                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9141                    Self { operator: tuple.0 }
9142                }
9143            }
9144        }
9145        {
9146            #[doc(hidden)]
9147            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9148            #[doc(hidden)]
9149            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9150            #[cfg(test)]
9151            #[allow(dead_code, unreachable_patterns)]
9152            fn _type_assertion(
9153                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9154            ) {
9155                match _t {
9156                    alloy_sol_types::private::AssertTypeEq::<
9157                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9158                    >(_) => {}
9159                }
9160            }
9161            #[automatically_derived]
9162            #[doc(hidden)]
9163            impl ::core::convert::From<delegationApproverReturn>
9164            for UnderlyingRustTuple<'_> {
9165                fn from(value: delegationApproverReturn) -> Self {
9166                    (value._0,)
9167                }
9168            }
9169            #[automatically_derived]
9170            #[doc(hidden)]
9171            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9172            for delegationApproverReturn {
9173                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9174                    Self { _0: tuple.0 }
9175                }
9176            }
9177        }
9178        #[automatically_derived]
9179        impl alloy_sol_types::SolCall for delegationApproverCall {
9180            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9181            type Token<'a> = <Self::Parameters<
9182                'a,
9183            > as alloy_sol_types::SolType>::Token<'a>;
9184            type Return = alloy::sol_types::private::Address;
9185            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9186            type ReturnToken<'a> = <Self::ReturnTuple<
9187                'a,
9188            > as alloy_sol_types::SolType>::Token<'a>;
9189            const SIGNATURE: &'static str = "delegationApprover(address)";
9190            const SELECTOR: [u8; 4] = [60u8, 222u8, 181u8, 224u8];
9191            #[inline]
9192            fn new<'a>(
9193                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9194            ) -> Self {
9195                tuple.into()
9196            }
9197            #[inline]
9198            fn tokenize(&self) -> Self::Token<'_> {
9199                (
9200                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9201                        &self.operator,
9202                    ),
9203                )
9204            }
9205            #[inline]
9206            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9207                (
9208                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9209                        ret,
9210                    ),
9211                )
9212            }
9213            #[inline]
9214            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9215                <Self::ReturnTuple<
9216                    '_,
9217                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9218                    .map(|r| {
9219                        let r: delegationApproverReturn = r.into();
9220                        r._0
9221                    })
9222            }
9223            #[inline]
9224            fn abi_decode_returns_validate(
9225                data: &[u8],
9226            ) -> alloy_sol_types::Result<Self::Return> {
9227                <Self::ReturnTuple<
9228                    '_,
9229                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9230                    .map(|r| {
9231                        let r: delegationApproverReturn = r.into();
9232                        r._0
9233                    })
9234            }
9235        }
9236    };
9237    #[derive(serde::Serialize, serde::Deserialize)]
9238    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9239    /**Function with signature `delegationApproverSaltIsSpent(address,bytes32)` and selector `0xbb45fef2`.
9240```solidity
9241function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) external view returns (bool spent);
9242```*/
9243    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9244    #[derive(Clone)]
9245    pub struct delegationApproverSaltIsSpentCall {
9246        #[allow(missing_docs)]
9247        pub delegationApprover: alloy::sol_types::private::Address,
9248        #[allow(missing_docs)]
9249        pub salt: alloy::sol_types::private::FixedBytes<32>,
9250    }
9251    #[derive(serde::Serialize, serde::Deserialize)]
9252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9253    ///Container type for the return parameters of the [`delegationApproverSaltIsSpent(address,bytes32)`](delegationApproverSaltIsSpentCall) function.
9254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9255    #[derive(Clone)]
9256    pub struct delegationApproverSaltIsSpentReturn {
9257        #[allow(missing_docs)]
9258        pub spent: bool,
9259    }
9260    #[allow(
9261        non_camel_case_types,
9262        non_snake_case,
9263        clippy::pub_underscore_fields,
9264        clippy::style
9265    )]
9266    const _: () = {
9267        use alloy::sol_types as alloy_sol_types;
9268        {
9269            #[doc(hidden)]
9270            type UnderlyingSolTuple<'a> = (
9271                alloy::sol_types::sol_data::Address,
9272                alloy::sol_types::sol_data::FixedBytes<32>,
9273            );
9274            #[doc(hidden)]
9275            type UnderlyingRustTuple<'a> = (
9276                alloy::sol_types::private::Address,
9277                alloy::sol_types::private::FixedBytes<32>,
9278            );
9279            #[cfg(test)]
9280            #[allow(dead_code, unreachable_patterns)]
9281            fn _type_assertion(
9282                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9283            ) {
9284                match _t {
9285                    alloy_sol_types::private::AssertTypeEq::<
9286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9287                    >(_) => {}
9288                }
9289            }
9290            #[automatically_derived]
9291            #[doc(hidden)]
9292            impl ::core::convert::From<delegationApproverSaltIsSpentCall>
9293            for UnderlyingRustTuple<'_> {
9294                fn from(value: delegationApproverSaltIsSpentCall) -> Self {
9295                    (value.delegationApprover, value.salt)
9296                }
9297            }
9298            #[automatically_derived]
9299            #[doc(hidden)]
9300            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9301            for delegationApproverSaltIsSpentCall {
9302                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9303                    Self {
9304                        delegationApprover: tuple.0,
9305                        salt: tuple.1,
9306                    }
9307                }
9308            }
9309        }
9310        {
9311            #[doc(hidden)]
9312            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9313            #[doc(hidden)]
9314            type UnderlyingRustTuple<'a> = (bool,);
9315            #[cfg(test)]
9316            #[allow(dead_code, unreachable_patterns)]
9317            fn _type_assertion(
9318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9319            ) {
9320                match _t {
9321                    alloy_sol_types::private::AssertTypeEq::<
9322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9323                    >(_) => {}
9324                }
9325            }
9326            #[automatically_derived]
9327            #[doc(hidden)]
9328            impl ::core::convert::From<delegationApproverSaltIsSpentReturn>
9329            for UnderlyingRustTuple<'_> {
9330                fn from(value: delegationApproverSaltIsSpentReturn) -> Self {
9331                    (value.spent,)
9332                }
9333            }
9334            #[automatically_derived]
9335            #[doc(hidden)]
9336            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9337            for delegationApproverSaltIsSpentReturn {
9338                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9339                    Self { spent: tuple.0 }
9340                }
9341            }
9342        }
9343        #[automatically_derived]
9344        impl alloy_sol_types::SolCall for delegationApproverSaltIsSpentCall {
9345            type Parameters<'a> = (
9346                alloy::sol_types::sol_data::Address,
9347                alloy::sol_types::sol_data::FixedBytes<32>,
9348            );
9349            type Token<'a> = <Self::Parameters<
9350                'a,
9351            > as alloy_sol_types::SolType>::Token<'a>;
9352            type Return = bool;
9353            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9354            type ReturnToken<'a> = <Self::ReturnTuple<
9355                'a,
9356            > as alloy_sol_types::SolType>::Token<'a>;
9357            const SIGNATURE: &'static str = "delegationApproverSaltIsSpent(address,bytes32)";
9358            const SELECTOR: [u8; 4] = [187u8, 69u8, 254u8, 242u8];
9359            #[inline]
9360            fn new<'a>(
9361                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9362            ) -> Self {
9363                tuple.into()
9364            }
9365            #[inline]
9366            fn tokenize(&self) -> Self::Token<'_> {
9367                (
9368                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9369                        &self.delegationApprover,
9370                    ),
9371                    <alloy::sol_types::sol_data::FixedBytes<
9372                        32,
9373                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
9374                )
9375            }
9376            #[inline]
9377            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9378                (
9379                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9380                        ret,
9381                    ),
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: delegationApproverSaltIsSpentReturn = r.into();
9391                        r.spent
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: delegationApproverSaltIsSpentReturn = r.into();
9403                        r.spent
9404                    })
9405            }
9406        }
9407    };
9408    #[derive(serde::Serialize, serde::Deserialize)]
9409    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9410    /**Function with signature `depositScalingFactor(address,address)` and selector `0xbfae3fd2`.
9411```solidity
9412function depositScalingFactor(address staker, address strategy) external view returns (uint256);
9413```*/
9414    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9415    #[derive(Clone)]
9416    pub struct depositScalingFactorCall {
9417        #[allow(missing_docs)]
9418        pub staker: alloy::sol_types::private::Address,
9419        #[allow(missing_docs)]
9420        pub strategy: alloy::sol_types::private::Address,
9421    }
9422    #[derive(serde::Serialize, serde::Deserialize)]
9423    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9424    ///Container type for the return parameters of the [`depositScalingFactor(address,address)`](depositScalingFactorCall) function.
9425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9426    #[derive(Clone)]
9427    pub struct depositScalingFactorReturn {
9428        #[allow(missing_docs)]
9429        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9430    }
9431    #[allow(
9432        non_camel_case_types,
9433        non_snake_case,
9434        clippy::pub_underscore_fields,
9435        clippy::style
9436    )]
9437    const _: () = {
9438        use alloy::sol_types as alloy_sol_types;
9439        {
9440            #[doc(hidden)]
9441            type UnderlyingSolTuple<'a> = (
9442                alloy::sol_types::sol_data::Address,
9443                alloy::sol_types::sol_data::Address,
9444            );
9445            #[doc(hidden)]
9446            type UnderlyingRustTuple<'a> = (
9447                alloy::sol_types::private::Address,
9448                alloy::sol_types::private::Address,
9449            );
9450            #[cfg(test)]
9451            #[allow(dead_code, unreachable_patterns)]
9452            fn _type_assertion(
9453                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9454            ) {
9455                match _t {
9456                    alloy_sol_types::private::AssertTypeEq::<
9457                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9458                    >(_) => {}
9459                }
9460            }
9461            #[automatically_derived]
9462            #[doc(hidden)]
9463            impl ::core::convert::From<depositScalingFactorCall>
9464            for UnderlyingRustTuple<'_> {
9465                fn from(value: depositScalingFactorCall) -> Self {
9466                    (value.staker, value.strategy)
9467                }
9468            }
9469            #[automatically_derived]
9470            #[doc(hidden)]
9471            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9472            for depositScalingFactorCall {
9473                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9474                    Self {
9475                        staker: tuple.0,
9476                        strategy: tuple.1,
9477                    }
9478                }
9479            }
9480        }
9481        {
9482            #[doc(hidden)]
9483            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9484            #[doc(hidden)]
9485            type UnderlyingRustTuple<'a> = (
9486                alloy::sol_types::private::primitives::aliases::U256,
9487            );
9488            #[cfg(test)]
9489            #[allow(dead_code, unreachable_patterns)]
9490            fn _type_assertion(
9491                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9492            ) {
9493                match _t {
9494                    alloy_sol_types::private::AssertTypeEq::<
9495                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9496                    >(_) => {}
9497                }
9498            }
9499            #[automatically_derived]
9500            #[doc(hidden)]
9501            impl ::core::convert::From<depositScalingFactorReturn>
9502            for UnderlyingRustTuple<'_> {
9503                fn from(value: depositScalingFactorReturn) -> Self {
9504                    (value._0,)
9505                }
9506            }
9507            #[automatically_derived]
9508            #[doc(hidden)]
9509            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9510            for depositScalingFactorReturn {
9511                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9512                    Self { _0: tuple.0 }
9513                }
9514            }
9515        }
9516        #[automatically_derived]
9517        impl alloy_sol_types::SolCall for depositScalingFactorCall {
9518            type Parameters<'a> = (
9519                alloy::sol_types::sol_data::Address,
9520                alloy::sol_types::sol_data::Address,
9521            );
9522            type Token<'a> = <Self::Parameters<
9523                'a,
9524            > as alloy_sol_types::SolType>::Token<'a>;
9525            type Return = alloy::sol_types::private::primitives::aliases::U256;
9526            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9527            type ReturnToken<'a> = <Self::ReturnTuple<
9528                'a,
9529            > as alloy_sol_types::SolType>::Token<'a>;
9530            const SIGNATURE: &'static str = "depositScalingFactor(address,address)";
9531            const SELECTOR: [u8; 4] = [191u8, 174u8, 63u8, 210u8];
9532            #[inline]
9533            fn new<'a>(
9534                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9535            ) -> Self {
9536                tuple.into()
9537            }
9538            #[inline]
9539            fn tokenize(&self) -> Self::Token<'_> {
9540                (
9541                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9542                        &self.staker,
9543                    ),
9544                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9545                        &self.strategy,
9546                    ),
9547                )
9548            }
9549            #[inline]
9550            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9551                (
9552                    <alloy::sol_types::sol_data::Uint<
9553                        256,
9554                    > as alloy_sol_types::SolType>::tokenize(ret),
9555                )
9556            }
9557            #[inline]
9558            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9559                <Self::ReturnTuple<
9560                    '_,
9561                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9562                    .map(|r| {
9563                        let r: depositScalingFactorReturn = r.into();
9564                        r._0
9565                    })
9566            }
9567            #[inline]
9568            fn abi_decode_returns_validate(
9569                data: &[u8],
9570            ) -> alloy_sol_types::Result<Self::Return> {
9571                <Self::ReturnTuple<
9572                    '_,
9573                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9574                    .map(|r| {
9575                        let r: depositScalingFactorReturn = r.into();
9576                        r._0
9577                    })
9578            }
9579        }
9580    };
9581    #[derive(serde::Serialize, serde::Deserialize)]
9582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9583    /**Function with signature `domainSeparator()` and selector `0xf698da25`.
9584```solidity
9585function domainSeparator() external view returns (bytes32);
9586```*/
9587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9588    #[derive(Clone)]
9589    pub struct domainSeparatorCall;
9590    #[derive(serde::Serialize, serde::Deserialize)]
9591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9592    ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function.
9593    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9594    #[derive(Clone)]
9595    pub struct domainSeparatorReturn {
9596        #[allow(missing_docs)]
9597        pub _0: alloy::sol_types::private::FixedBytes<32>,
9598    }
9599    #[allow(
9600        non_camel_case_types,
9601        non_snake_case,
9602        clippy::pub_underscore_fields,
9603        clippy::style
9604    )]
9605    const _: () = {
9606        use alloy::sol_types as alloy_sol_types;
9607        {
9608            #[doc(hidden)]
9609            type UnderlyingSolTuple<'a> = ();
9610            #[doc(hidden)]
9611            type UnderlyingRustTuple<'a> = ();
9612            #[cfg(test)]
9613            #[allow(dead_code, unreachable_patterns)]
9614            fn _type_assertion(
9615                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9616            ) {
9617                match _t {
9618                    alloy_sol_types::private::AssertTypeEq::<
9619                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9620                    >(_) => {}
9621                }
9622            }
9623            #[automatically_derived]
9624            #[doc(hidden)]
9625            impl ::core::convert::From<domainSeparatorCall> for UnderlyingRustTuple<'_> {
9626                fn from(value: domainSeparatorCall) -> Self {
9627                    ()
9628                }
9629            }
9630            #[automatically_derived]
9631            #[doc(hidden)]
9632            impl ::core::convert::From<UnderlyingRustTuple<'_>> for domainSeparatorCall {
9633                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9634                    Self
9635                }
9636            }
9637        }
9638        {
9639            #[doc(hidden)]
9640            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9641            #[doc(hidden)]
9642            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9643            #[cfg(test)]
9644            #[allow(dead_code, unreachable_patterns)]
9645            fn _type_assertion(
9646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9647            ) {
9648                match _t {
9649                    alloy_sol_types::private::AssertTypeEq::<
9650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9651                    >(_) => {}
9652                }
9653            }
9654            #[automatically_derived]
9655            #[doc(hidden)]
9656            impl ::core::convert::From<domainSeparatorReturn>
9657            for UnderlyingRustTuple<'_> {
9658                fn from(value: domainSeparatorReturn) -> Self {
9659                    (value._0,)
9660                }
9661            }
9662            #[automatically_derived]
9663            #[doc(hidden)]
9664            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9665            for domainSeparatorReturn {
9666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9667                    Self { _0: tuple.0 }
9668                }
9669            }
9670        }
9671        #[automatically_derived]
9672        impl alloy_sol_types::SolCall for domainSeparatorCall {
9673            type Parameters<'a> = ();
9674            type Token<'a> = <Self::Parameters<
9675                'a,
9676            > as alloy_sol_types::SolType>::Token<'a>;
9677            type Return = alloy::sol_types::private::FixedBytes<32>;
9678            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9679            type ReturnToken<'a> = <Self::ReturnTuple<
9680                'a,
9681            > as alloy_sol_types::SolType>::Token<'a>;
9682            const SIGNATURE: &'static str = "domainSeparator()";
9683            const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8];
9684            #[inline]
9685            fn new<'a>(
9686                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9687            ) -> Self {
9688                tuple.into()
9689            }
9690            #[inline]
9691            fn tokenize(&self) -> Self::Token<'_> {
9692                ()
9693            }
9694            #[inline]
9695            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9696                (
9697                    <alloy::sol_types::sol_data::FixedBytes<
9698                        32,
9699                    > as alloy_sol_types::SolType>::tokenize(ret),
9700                )
9701            }
9702            #[inline]
9703            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9704                <Self::ReturnTuple<
9705                    '_,
9706                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9707                    .map(|r| {
9708                        let r: domainSeparatorReturn = r.into();
9709                        r._0
9710                    })
9711            }
9712            #[inline]
9713            fn abi_decode_returns_validate(
9714                data: &[u8],
9715            ) -> alloy_sol_types::Result<Self::Return> {
9716                <Self::ReturnTuple<
9717                    '_,
9718                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9719                    .map(|r| {
9720                        let r: domainSeparatorReturn = r.into();
9721                        r._0
9722                    })
9723            }
9724        }
9725    };
9726    #[derive(serde::Serialize, serde::Deserialize)]
9727    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9728    /**Function with signature `eigenPodManager()` and selector `0x4665bcda`.
9729```solidity
9730function eigenPodManager() external view returns (address);
9731```*/
9732    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9733    #[derive(Clone)]
9734    pub struct eigenPodManagerCall;
9735    #[derive(serde::Serialize, serde::Deserialize)]
9736    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9737    ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function.
9738    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9739    #[derive(Clone)]
9740    pub struct eigenPodManagerReturn {
9741        #[allow(missing_docs)]
9742        pub _0: alloy::sol_types::private::Address,
9743    }
9744    #[allow(
9745        non_camel_case_types,
9746        non_snake_case,
9747        clippy::pub_underscore_fields,
9748        clippy::style
9749    )]
9750    const _: () = {
9751        use alloy::sol_types as alloy_sol_types;
9752        {
9753            #[doc(hidden)]
9754            type UnderlyingSolTuple<'a> = ();
9755            #[doc(hidden)]
9756            type UnderlyingRustTuple<'a> = ();
9757            #[cfg(test)]
9758            #[allow(dead_code, unreachable_patterns)]
9759            fn _type_assertion(
9760                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9761            ) {
9762                match _t {
9763                    alloy_sol_types::private::AssertTypeEq::<
9764                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9765                    >(_) => {}
9766                }
9767            }
9768            #[automatically_derived]
9769            #[doc(hidden)]
9770            impl ::core::convert::From<eigenPodManagerCall> for UnderlyingRustTuple<'_> {
9771                fn from(value: eigenPodManagerCall) -> Self {
9772                    ()
9773                }
9774            }
9775            #[automatically_derived]
9776            #[doc(hidden)]
9777            impl ::core::convert::From<UnderlyingRustTuple<'_>> for eigenPodManagerCall {
9778                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9779                    Self
9780                }
9781            }
9782        }
9783        {
9784            #[doc(hidden)]
9785            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9786            #[doc(hidden)]
9787            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9788            #[cfg(test)]
9789            #[allow(dead_code, unreachable_patterns)]
9790            fn _type_assertion(
9791                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9792            ) {
9793                match _t {
9794                    alloy_sol_types::private::AssertTypeEq::<
9795                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9796                    >(_) => {}
9797                }
9798            }
9799            #[automatically_derived]
9800            #[doc(hidden)]
9801            impl ::core::convert::From<eigenPodManagerReturn>
9802            for UnderlyingRustTuple<'_> {
9803                fn from(value: eigenPodManagerReturn) -> Self {
9804                    (value._0,)
9805                }
9806            }
9807            #[automatically_derived]
9808            #[doc(hidden)]
9809            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9810            for eigenPodManagerReturn {
9811                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9812                    Self { _0: tuple.0 }
9813                }
9814            }
9815        }
9816        #[automatically_derived]
9817        impl alloy_sol_types::SolCall for eigenPodManagerCall {
9818            type Parameters<'a> = ();
9819            type Token<'a> = <Self::Parameters<
9820                'a,
9821            > as alloy_sol_types::SolType>::Token<'a>;
9822            type Return = alloy::sol_types::private::Address;
9823            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9824            type ReturnToken<'a> = <Self::ReturnTuple<
9825                'a,
9826            > as alloy_sol_types::SolType>::Token<'a>;
9827            const SIGNATURE: &'static str = "eigenPodManager()";
9828            const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8];
9829            #[inline]
9830            fn new<'a>(
9831                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9832            ) -> Self {
9833                tuple.into()
9834            }
9835            #[inline]
9836            fn tokenize(&self) -> Self::Token<'_> {
9837                ()
9838            }
9839            #[inline]
9840            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9841                (
9842                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9843                        ret,
9844                    ),
9845                )
9846            }
9847            #[inline]
9848            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9849                <Self::ReturnTuple<
9850                    '_,
9851                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9852                    .map(|r| {
9853                        let r: eigenPodManagerReturn = r.into();
9854                        r._0
9855                    })
9856            }
9857            #[inline]
9858            fn abi_decode_returns_validate(
9859                data: &[u8],
9860            ) -> alloy_sol_types::Result<Self::Return> {
9861                <Self::ReturnTuple<
9862                    '_,
9863                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9864                    .map(|r| {
9865                        let r: eigenPodManagerReturn = r.into();
9866                        r._0
9867                    })
9868            }
9869        }
9870    };
9871    #[derive(serde::Serialize, serde::Deserialize)]
9872    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9873    /**Function with signature `getDepositedShares(address)` and selector `0x66d5ba93`.
9874```solidity
9875function getDepositedShares(address staker) external view returns (address[] memory, uint256[] memory);
9876```*/
9877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9878    #[derive(Clone)]
9879    pub struct getDepositedSharesCall {
9880        #[allow(missing_docs)]
9881        pub staker: alloy::sol_types::private::Address,
9882    }
9883    #[derive(serde::Serialize, serde::Deserialize)]
9884    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9885    ///Container type for the return parameters of the [`getDepositedShares(address)`](getDepositedSharesCall) function.
9886    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9887    #[derive(Clone)]
9888    pub struct getDepositedSharesReturn {
9889        #[allow(missing_docs)]
9890        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9891        #[allow(missing_docs)]
9892        pub _1: alloy::sol_types::private::Vec<
9893            alloy::sol_types::private::primitives::aliases::U256,
9894        >,
9895    }
9896    #[allow(
9897        non_camel_case_types,
9898        non_snake_case,
9899        clippy::pub_underscore_fields,
9900        clippy::style
9901    )]
9902    const _: () = {
9903        use alloy::sol_types as alloy_sol_types;
9904        {
9905            #[doc(hidden)]
9906            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9907            #[doc(hidden)]
9908            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9909            #[cfg(test)]
9910            #[allow(dead_code, unreachable_patterns)]
9911            fn _type_assertion(
9912                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9913            ) {
9914                match _t {
9915                    alloy_sol_types::private::AssertTypeEq::<
9916                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9917                    >(_) => {}
9918                }
9919            }
9920            #[automatically_derived]
9921            #[doc(hidden)]
9922            impl ::core::convert::From<getDepositedSharesCall>
9923            for UnderlyingRustTuple<'_> {
9924                fn from(value: getDepositedSharesCall) -> Self {
9925                    (value.staker,)
9926                }
9927            }
9928            #[automatically_derived]
9929            #[doc(hidden)]
9930            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9931            for getDepositedSharesCall {
9932                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9933                    Self { staker: tuple.0 }
9934                }
9935            }
9936        }
9937        {
9938            #[doc(hidden)]
9939            type UnderlyingSolTuple<'a> = (
9940                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9941                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
9942            );
9943            #[doc(hidden)]
9944            type UnderlyingRustTuple<'a> = (
9945                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9946                alloy::sol_types::private::Vec<
9947                    alloy::sol_types::private::primitives::aliases::U256,
9948                >,
9949            );
9950            #[cfg(test)]
9951            #[allow(dead_code, unreachable_patterns)]
9952            fn _type_assertion(
9953                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9954            ) {
9955                match _t {
9956                    alloy_sol_types::private::AssertTypeEq::<
9957                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9958                    >(_) => {}
9959                }
9960            }
9961            #[automatically_derived]
9962            #[doc(hidden)]
9963            impl ::core::convert::From<getDepositedSharesReturn>
9964            for UnderlyingRustTuple<'_> {
9965                fn from(value: getDepositedSharesReturn) -> Self {
9966                    (value._0, value._1)
9967                }
9968            }
9969            #[automatically_derived]
9970            #[doc(hidden)]
9971            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9972            for getDepositedSharesReturn {
9973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9974                    Self { _0: tuple.0, _1: tuple.1 }
9975                }
9976            }
9977        }
9978        impl getDepositedSharesReturn {
9979            fn _tokenize(
9980                &self,
9981            ) -> <getDepositedSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9982                (
9983                    <alloy::sol_types::sol_data::Array<
9984                        alloy::sol_types::sol_data::Address,
9985                    > as alloy_sol_types::SolType>::tokenize(&self._0),
9986                    <alloy::sol_types::sol_data::Array<
9987                        alloy::sol_types::sol_data::Uint<256>,
9988                    > as alloy_sol_types::SolType>::tokenize(&self._1),
9989                )
9990            }
9991        }
9992        #[automatically_derived]
9993        impl alloy_sol_types::SolCall for getDepositedSharesCall {
9994            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9995            type Token<'a> = <Self::Parameters<
9996                'a,
9997            > as alloy_sol_types::SolType>::Token<'a>;
9998            type Return = getDepositedSharesReturn;
9999            type ReturnTuple<'a> = (
10000                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10001                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
10002            );
10003            type ReturnToken<'a> = <Self::ReturnTuple<
10004                'a,
10005            > as alloy_sol_types::SolType>::Token<'a>;
10006            const SIGNATURE: &'static str = "getDepositedShares(address)";
10007            const SELECTOR: [u8; 4] = [102u8, 213u8, 186u8, 147u8];
10008            #[inline]
10009            fn new<'a>(
10010                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10011            ) -> Self {
10012                tuple.into()
10013            }
10014            #[inline]
10015            fn tokenize(&self) -> Self::Token<'_> {
10016                (
10017                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10018                        &self.staker,
10019                    ),
10020                )
10021            }
10022            #[inline]
10023            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10024                getDepositedSharesReturn::_tokenize(ret)
10025            }
10026            #[inline]
10027            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10028                <Self::ReturnTuple<
10029                    '_,
10030                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10031                    .map(Into::into)
10032            }
10033            #[inline]
10034            fn abi_decode_returns_validate(
10035                data: &[u8],
10036            ) -> alloy_sol_types::Result<Self::Return> {
10037                <Self::ReturnTuple<
10038                    '_,
10039                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10040                    .map(Into::into)
10041            }
10042        }
10043    };
10044    #[derive(serde::Serialize, serde::Deserialize)]
10045    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10046    /**Function with signature `getOperatorShares(address,address[])` and selector `0x90041347`.
10047```solidity
10048function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory);
10049```*/
10050    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10051    #[derive(Clone)]
10052    pub struct getOperatorSharesCall {
10053        #[allow(missing_docs)]
10054        pub operator: alloy::sol_types::private::Address,
10055        #[allow(missing_docs)]
10056        pub strategies: alloy::sol_types::private::Vec<
10057            alloy::sol_types::private::Address,
10058        >,
10059    }
10060    #[derive(serde::Serialize, serde::Deserialize)]
10061    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10062    ///Container type for the return parameters of the [`getOperatorShares(address,address[])`](getOperatorSharesCall) function.
10063    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10064    #[derive(Clone)]
10065    pub struct getOperatorSharesReturn {
10066        #[allow(missing_docs)]
10067        pub _0: alloy::sol_types::private::Vec<
10068            alloy::sol_types::private::primitives::aliases::U256,
10069        >,
10070    }
10071    #[allow(
10072        non_camel_case_types,
10073        non_snake_case,
10074        clippy::pub_underscore_fields,
10075        clippy::style
10076    )]
10077    const _: () = {
10078        use alloy::sol_types as alloy_sol_types;
10079        {
10080            #[doc(hidden)]
10081            type UnderlyingSolTuple<'a> = (
10082                alloy::sol_types::sol_data::Address,
10083                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10084            );
10085            #[doc(hidden)]
10086            type UnderlyingRustTuple<'a> = (
10087                alloy::sol_types::private::Address,
10088                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10089            );
10090            #[cfg(test)]
10091            #[allow(dead_code, unreachable_patterns)]
10092            fn _type_assertion(
10093                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10094            ) {
10095                match _t {
10096                    alloy_sol_types::private::AssertTypeEq::<
10097                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10098                    >(_) => {}
10099                }
10100            }
10101            #[automatically_derived]
10102            #[doc(hidden)]
10103            impl ::core::convert::From<getOperatorSharesCall>
10104            for UnderlyingRustTuple<'_> {
10105                fn from(value: getOperatorSharesCall) -> Self {
10106                    (value.operator, value.strategies)
10107                }
10108            }
10109            #[automatically_derived]
10110            #[doc(hidden)]
10111            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10112            for getOperatorSharesCall {
10113                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10114                    Self {
10115                        operator: tuple.0,
10116                        strategies: tuple.1,
10117                    }
10118                }
10119            }
10120        }
10121        {
10122            #[doc(hidden)]
10123            type UnderlyingSolTuple<'a> = (
10124                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
10125            );
10126            #[doc(hidden)]
10127            type UnderlyingRustTuple<'a> = (
10128                alloy::sol_types::private::Vec<
10129                    alloy::sol_types::private::primitives::aliases::U256,
10130                >,
10131            );
10132            #[cfg(test)]
10133            #[allow(dead_code, unreachable_patterns)]
10134            fn _type_assertion(
10135                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10136            ) {
10137                match _t {
10138                    alloy_sol_types::private::AssertTypeEq::<
10139                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10140                    >(_) => {}
10141                }
10142            }
10143            #[automatically_derived]
10144            #[doc(hidden)]
10145            impl ::core::convert::From<getOperatorSharesReturn>
10146            for UnderlyingRustTuple<'_> {
10147                fn from(value: getOperatorSharesReturn) -> Self {
10148                    (value._0,)
10149                }
10150            }
10151            #[automatically_derived]
10152            #[doc(hidden)]
10153            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10154            for getOperatorSharesReturn {
10155                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10156                    Self { _0: tuple.0 }
10157                }
10158            }
10159        }
10160        #[automatically_derived]
10161        impl alloy_sol_types::SolCall for getOperatorSharesCall {
10162            type Parameters<'a> = (
10163                alloy::sol_types::sol_data::Address,
10164                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10165            );
10166            type Token<'a> = <Self::Parameters<
10167                'a,
10168            > as alloy_sol_types::SolType>::Token<'a>;
10169            type Return = alloy::sol_types::private::Vec<
10170                alloy::sol_types::private::primitives::aliases::U256,
10171            >;
10172            type ReturnTuple<'a> = (
10173                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
10174            );
10175            type ReturnToken<'a> = <Self::ReturnTuple<
10176                'a,
10177            > as alloy_sol_types::SolType>::Token<'a>;
10178            const SIGNATURE: &'static str = "getOperatorShares(address,address[])";
10179            const SELECTOR: [u8; 4] = [144u8, 4u8, 19u8, 71u8];
10180            #[inline]
10181            fn new<'a>(
10182                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10183            ) -> Self {
10184                tuple.into()
10185            }
10186            #[inline]
10187            fn tokenize(&self) -> Self::Token<'_> {
10188                (
10189                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10190                        &self.operator,
10191                    ),
10192                    <alloy::sol_types::sol_data::Array<
10193                        alloy::sol_types::sol_data::Address,
10194                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
10195                )
10196            }
10197            #[inline]
10198            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10199                (
10200                    <alloy::sol_types::sol_data::Array<
10201                        alloy::sol_types::sol_data::Uint<256>,
10202                    > as alloy_sol_types::SolType>::tokenize(ret),
10203                )
10204            }
10205            #[inline]
10206            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10207                <Self::ReturnTuple<
10208                    '_,
10209                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10210                    .map(|r| {
10211                        let r: getOperatorSharesReturn = r.into();
10212                        r._0
10213                    })
10214            }
10215            #[inline]
10216            fn abi_decode_returns_validate(
10217                data: &[u8],
10218            ) -> alloy_sol_types::Result<Self::Return> {
10219                <Self::ReturnTuple<
10220                    '_,
10221                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10222                    .map(|r| {
10223                        let r: getOperatorSharesReturn = r.into();
10224                        r._0
10225                    })
10226            }
10227        }
10228    };
10229    #[derive(serde::Serialize, serde::Deserialize)]
10230    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10231    /**Function with signature `getOperatorsShares(address[],address[])` and selector `0xf0e0e676`.
10232```solidity
10233function getOperatorsShares(address[] memory operators, address[] memory strategies) external view returns (uint256[][] memory);
10234```*/
10235    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10236    #[derive(Clone)]
10237    pub struct getOperatorsSharesCall {
10238        #[allow(missing_docs)]
10239        pub operators: alloy::sol_types::private::Vec<
10240            alloy::sol_types::private::Address,
10241        >,
10242        #[allow(missing_docs)]
10243        pub strategies: alloy::sol_types::private::Vec<
10244            alloy::sol_types::private::Address,
10245        >,
10246    }
10247    #[derive(serde::Serialize, serde::Deserialize)]
10248    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10249    ///Container type for the return parameters of the [`getOperatorsShares(address[],address[])`](getOperatorsSharesCall) function.
10250    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10251    #[derive(Clone)]
10252    pub struct getOperatorsSharesReturn {
10253        #[allow(missing_docs)]
10254        pub _0: alloy::sol_types::private::Vec<
10255            alloy::sol_types::private::Vec<
10256                alloy::sol_types::private::primitives::aliases::U256,
10257            >,
10258        >,
10259    }
10260    #[allow(
10261        non_camel_case_types,
10262        non_snake_case,
10263        clippy::pub_underscore_fields,
10264        clippy::style
10265    )]
10266    const _: () = {
10267        use alloy::sol_types as alloy_sol_types;
10268        {
10269            #[doc(hidden)]
10270            type UnderlyingSolTuple<'a> = (
10271                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10272                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10273            );
10274            #[doc(hidden)]
10275            type UnderlyingRustTuple<'a> = (
10276                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10277                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10278            );
10279            #[cfg(test)]
10280            #[allow(dead_code, unreachable_patterns)]
10281            fn _type_assertion(
10282                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10283            ) {
10284                match _t {
10285                    alloy_sol_types::private::AssertTypeEq::<
10286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10287                    >(_) => {}
10288                }
10289            }
10290            #[automatically_derived]
10291            #[doc(hidden)]
10292            impl ::core::convert::From<getOperatorsSharesCall>
10293            for UnderlyingRustTuple<'_> {
10294                fn from(value: getOperatorsSharesCall) -> Self {
10295                    (value.operators, value.strategies)
10296                }
10297            }
10298            #[automatically_derived]
10299            #[doc(hidden)]
10300            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10301            for getOperatorsSharesCall {
10302                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10303                    Self {
10304                        operators: tuple.0,
10305                        strategies: tuple.1,
10306                    }
10307                }
10308            }
10309        }
10310        {
10311            #[doc(hidden)]
10312            type UnderlyingSolTuple<'a> = (
10313                alloy::sol_types::sol_data::Array<
10314                    alloy::sol_types::sol_data::Array<
10315                        alloy::sol_types::sol_data::Uint<256>,
10316                    >,
10317                >,
10318            );
10319            #[doc(hidden)]
10320            type UnderlyingRustTuple<'a> = (
10321                alloy::sol_types::private::Vec<
10322                    alloy::sol_types::private::Vec<
10323                        alloy::sol_types::private::primitives::aliases::U256,
10324                    >,
10325                >,
10326            );
10327            #[cfg(test)]
10328            #[allow(dead_code, unreachable_patterns)]
10329            fn _type_assertion(
10330                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10331            ) {
10332                match _t {
10333                    alloy_sol_types::private::AssertTypeEq::<
10334                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10335                    >(_) => {}
10336                }
10337            }
10338            #[automatically_derived]
10339            #[doc(hidden)]
10340            impl ::core::convert::From<getOperatorsSharesReturn>
10341            for UnderlyingRustTuple<'_> {
10342                fn from(value: getOperatorsSharesReturn) -> Self {
10343                    (value._0,)
10344                }
10345            }
10346            #[automatically_derived]
10347            #[doc(hidden)]
10348            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10349            for getOperatorsSharesReturn {
10350                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10351                    Self { _0: tuple.0 }
10352                }
10353            }
10354        }
10355        #[automatically_derived]
10356        impl alloy_sol_types::SolCall for getOperatorsSharesCall {
10357            type Parameters<'a> = (
10358                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10359                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10360            );
10361            type Token<'a> = <Self::Parameters<
10362                'a,
10363            > as alloy_sol_types::SolType>::Token<'a>;
10364            type Return = alloy::sol_types::private::Vec<
10365                alloy::sol_types::private::Vec<
10366                    alloy::sol_types::private::primitives::aliases::U256,
10367                >,
10368            >;
10369            type ReturnTuple<'a> = (
10370                alloy::sol_types::sol_data::Array<
10371                    alloy::sol_types::sol_data::Array<
10372                        alloy::sol_types::sol_data::Uint<256>,
10373                    >,
10374                >,
10375            );
10376            type ReturnToken<'a> = <Self::ReturnTuple<
10377                'a,
10378            > as alloy_sol_types::SolType>::Token<'a>;
10379            const SIGNATURE: &'static str = "getOperatorsShares(address[],address[])";
10380            const SELECTOR: [u8; 4] = [240u8, 224u8, 230u8, 118u8];
10381            #[inline]
10382            fn new<'a>(
10383                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10384            ) -> Self {
10385                tuple.into()
10386            }
10387            #[inline]
10388            fn tokenize(&self) -> Self::Token<'_> {
10389                (
10390                    <alloy::sol_types::sol_data::Array<
10391                        alloy::sol_types::sol_data::Address,
10392                    > as alloy_sol_types::SolType>::tokenize(&self.operators),
10393                    <alloy::sol_types::sol_data::Array<
10394                        alloy::sol_types::sol_data::Address,
10395                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
10396                )
10397            }
10398            #[inline]
10399            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10400                (
10401                    <alloy::sol_types::sol_data::Array<
10402                        alloy::sol_types::sol_data::Array<
10403                            alloy::sol_types::sol_data::Uint<256>,
10404                        >,
10405                    > as alloy_sol_types::SolType>::tokenize(ret),
10406                )
10407            }
10408            #[inline]
10409            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10410                <Self::ReturnTuple<
10411                    '_,
10412                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10413                    .map(|r| {
10414                        let r: getOperatorsSharesReturn = r.into();
10415                        r._0
10416                    })
10417            }
10418            #[inline]
10419            fn abi_decode_returns_validate(
10420                data: &[u8],
10421            ) -> alloy_sol_types::Result<Self::Return> {
10422                <Self::ReturnTuple<
10423                    '_,
10424                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10425                    .map(|r| {
10426                        let r: getOperatorsSharesReturn = r.into();
10427                        r._0
10428                    })
10429            }
10430        }
10431    };
10432    #[derive(serde::Serialize, serde::Deserialize)]
10433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10434    /**Function with signature `getQueuedWithdrawal(bytes32)` and selector `0x5d975e88`.
10435```solidity
10436function getQueuedWithdrawal(bytes32 withdrawalRoot) external view returns (IDelegationManagerTypes.Withdrawal memory withdrawal, uint256[] memory shares);
10437```*/
10438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10439    #[derive(Clone)]
10440    pub struct getQueuedWithdrawalCall {
10441        #[allow(missing_docs)]
10442        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
10443    }
10444    #[derive(serde::Serialize, serde::Deserialize)]
10445    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10446    ///Container type for the return parameters of the [`getQueuedWithdrawal(bytes32)`](getQueuedWithdrawalCall) function.
10447    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10448    #[derive(Clone)]
10449    pub struct getQueuedWithdrawalReturn {
10450        #[allow(missing_docs)]
10451        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
10452        #[allow(missing_docs)]
10453        pub shares: alloy::sol_types::private::Vec<
10454            alloy::sol_types::private::primitives::aliases::U256,
10455        >,
10456    }
10457    #[allow(
10458        non_camel_case_types,
10459        non_snake_case,
10460        clippy::pub_underscore_fields,
10461        clippy::style
10462    )]
10463    const _: () = {
10464        use alloy::sol_types as alloy_sol_types;
10465        {
10466            #[doc(hidden)]
10467            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10468            #[doc(hidden)]
10469            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
10470            #[cfg(test)]
10471            #[allow(dead_code, unreachable_patterns)]
10472            fn _type_assertion(
10473                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10474            ) {
10475                match _t {
10476                    alloy_sol_types::private::AssertTypeEq::<
10477                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10478                    >(_) => {}
10479                }
10480            }
10481            #[automatically_derived]
10482            #[doc(hidden)]
10483            impl ::core::convert::From<getQueuedWithdrawalCall>
10484            for UnderlyingRustTuple<'_> {
10485                fn from(value: getQueuedWithdrawalCall) -> Self {
10486                    (value.withdrawalRoot,)
10487                }
10488            }
10489            #[automatically_derived]
10490            #[doc(hidden)]
10491            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10492            for getQueuedWithdrawalCall {
10493                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10494                    Self { withdrawalRoot: tuple.0 }
10495                }
10496            }
10497        }
10498        {
10499            #[doc(hidden)]
10500            type UnderlyingSolTuple<'a> = (
10501                IDelegationManagerTypes::Withdrawal,
10502                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
10503            );
10504            #[doc(hidden)]
10505            type UnderlyingRustTuple<'a> = (
10506                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
10507                alloy::sol_types::private::Vec<
10508                    alloy::sol_types::private::primitives::aliases::U256,
10509                >,
10510            );
10511            #[cfg(test)]
10512            #[allow(dead_code, unreachable_patterns)]
10513            fn _type_assertion(
10514                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10515            ) {
10516                match _t {
10517                    alloy_sol_types::private::AssertTypeEq::<
10518                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10519                    >(_) => {}
10520                }
10521            }
10522            #[automatically_derived]
10523            #[doc(hidden)]
10524            impl ::core::convert::From<getQueuedWithdrawalReturn>
10525            for UnderlyingRustTuple<'_> {
10526                fn from(value: getQueuedWithdrawalReturn) -> Self {
10527                    (value.withdrawal, value.shares)
10528                }
10529            }
10530            #[automatically_derived]
10531            #[doc(hidden)]
10532            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10533            for getQueuedWithdrawalReturn {
10534                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10535                    Self {
10536                        withdrawal: tuple.0,
10537                        shares: tuple.1,
10538                    }
10539                }
10540            }
10541        }
10542        impl getQueuedWithdrawalReturn {
10543            fn _tokenize(
10544                &self,
10545            ) -> <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10546                (
10547                    <IDelegationManagerTypes::Withdrawal as alloy_sol_types::SolType>::tokenize(
10548                        &self.withdrawal,
10549                    ),
10550                    <alloy::sol_types::sol_data::Array<
10551                        alloy::sol_types::sol_data::Uint<256>,
10552                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
10553                )
10554            }
10555        }
10556        #[automatically_derived]
10557        impl alloy_sol_types::SolCall for getQueuedWithdrawalCall {
10558            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10559            type Token<'a> = <Self::Parameters<
10560                'a,
10561            > as alloy_sol_types::SolType>::Token<'a>;
10562            type Return = getQueuedWithdrawalReturn;
10563            type ReturnTuple<'a> = (
10564                IDelegationManagerTypes::Withdrawal,
10565                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
10566            );
10567            type ReturnToken<'a> = <Self::ReturnTuple<
10568                'a,
10569            > as alloy_sol_types::SolType>::Token<'a>;
10570            const SIGNATURE: &'static str = "getQueuedWithdrawal(bytes32)";
10571            const SELECTOR: [u8; 4] = [93u8, 151u8, 94u8, 136u8];
10572            #[inline]
10573            fn new<'a>(
10574                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10575            ) -> Self {
10576                tuple.into()
10577            }
10578            #[inline]
10579            fn tokenize(&self) -> Self::Token<'_> {
10580                (
10581                    <alloy::sol_types::sol_data::FixedBytes<
10582                        32,
10583                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
10584                )
10585            }
10586            #[inline]
10587            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10588                getQueuedWithdrawalReturn::_tokenize(ret)
10589            }
10590            #[inline]
10591            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10592                <Self::ReturnTuple<
10593                    '_,
10594                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10595                    .map(Into::into)
10596            }
10597            #[inline]
10598            fn abi_decode_returns_validate(
10599                data: &[u8],
10600            ) -> alloy_sol_types::Result<Self::Return> {
10601                <Self::ReturnTuple<
10602                    '_,
10603                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10604                    .map(Into::into)
10605            }
10606        }
10607    };
10608    #[derive(serde::Serialize, serde::Deserialize)]
10609    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10610    /**Function with signature `getQueuedWithdrawalRoots(address)` and selector `0xfd8aa88d`.
10611```solidity
10612function getQueuedWithdrawalRoots(address staker) external view returns (bytes32[] memory);
10613```*/
10614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10615    #[derive(Clone)]
10616    pub struct getQueuedWithdrawalRootsCall {
10617        #[allow(missing_docs)]
10618        pub staker: alloy::sol_types::private::Address,
10619    }
10620    #[derive(serde::Serialize, serde::Deserialize)]
10621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10622    ///Container type for the return parameters of the [`getQueuedWithdrawalRoots(address)`](getQueuedWithdrawalRootsCall) function.
10623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10624    #[derive(Clone)]
10625    pub struct getQueuedWithdrawalRootsReturn {
10626        #[allow(missing_docs)]
10627        pub _0: alloy::sol_types::private::Vec<
10628            alloy::sol_types::private::FixedBytes<32>,
10629        >,
10630    }
10631    #[allow(
10632        non_camel_case_types,
10633        non_snake_case,
10634        clippy::pub_underscore_fields,
10635        clippy::style
10636    )]
10637    const _: () = {
10638        use alloy::sol_types as alloy_sol_types;
10639        {
10640            #[doc(hidden)]
10641            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10642            #[doc(hidden)]
10643            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10644            #[cfg(test)]
10645            #[allow(dead_code, unreachable_patterns)]
10646            fn _type_assertion(
10647                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10648            ) {
10649                match _t {
10650                    alloy_sol_types::private::AssertTypeEq::<
10651                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10652                    >(_) => {}
10653                }
10654            }
10655            #[automatically_derived]
10656            #[doc(hidden)]
10657            impl ::core::convert::From<getQueuedWithdrawalRootsCall>
10658            for UnderlyingRustTuple<'_> {
10659                fn from(value: getQueuedWithdrawalRootsCall) -> Self {
10660                    (value.staker,)
10661                }
10662            }
10663            #[automatically_derived]
10664            #[doc(hidden)]
10665            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10666            for getQueuedWithdrawalRootsCall {
10667                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10668                    Self { staker: tuple.0 }
10669                }
10670            }
10671        }
10672        {
10673            #[doc(hidden)]
10674            type UnderlyingSolTuple<'a> = (
10675                alloy::sol_types::sol_data::Array<
10676                    alloy::sol_types::sol_data::FixedBytes<32>,
10677                >,
10678            );
10679            #[doc(hidden)]
10680            type UnderlyingRustTuple<'a> = (
10681                alloy::sol_types::private::Vec<
10682                    alloy::sol_types::private::FixedBytes<32>,
10683                >,
10684            );
10685            #[cfg(test)]
10686            #[allow(dead_code, unreachable_patterns)]
10687            fn _type_assertion(
10688                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10689            ) {
10690                match _t {
10691                    alloy_sol_types::private::AssertTypeEq::<
10692                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10693                    >(_) => {}
10694                }
10695            }
10696            #[automatically_derived]
10697            #[doc(hidden)]
10698            impl ::core::convert::From<getQueuedWithdrawalRootsReturn>
10699            for UnderlyingRustTuple<'_> {
10700                fn from(value: getQueuedWithdrawalRootsReturn) -> Self {
10701                    (value._0,)
10702                }
10703            }
10704            #[automatically_derived]
10705            #[doc(hidden)]
10706            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10707            for getQueuedWithdrawalRootsReturn {
10708                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10709                    Self { _0: tuple.0 }
10710                }
10711            }
10712        }
10713        #[automatically_derived]
10714        impl alloy_sol_types::SolCall for getQueuedWithdrawalRootsCall {
10715            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10716            type Token<'a> = <Self::Parameters<
10717                'a,
10718            > as alloy_sol_types::SolType>::Token<'a>;
10719            type Return = alloy::sol_types::private::Vec<
10720                alloy::sol_types::private::FixedBytes<32>,
10721            >;
10722            type ReturnTuple<'a> = (
10723                alloy::sol_types::sol_data::Array<
10724                    alloy::sol_types::sol_data::FixedBytes<32>,
10725                >,
10726            );
10727            type ReturnToken<'a> = <Self::ReturnTuple<
10728                'a,
10729            > as alloy_sol_types::SolType>::Token<'a>;
10730            const SIGNATURE: &'static str = "getQueuedWithdrawalRoots(address)";
10731            const SELECTOR: [u8; 4] = [253u8, 138u8, 168u8, 141u8];
10732            #[inline]
10733            fn new<'a>(
10734                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10735            ) -> Self {
10736                tuple.into()
10737            }
10738            #[inline]
10739            fn tokenize(&self) -> Self::Token<'_> {
10740                (
10741                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10742                        &self.staker,
10743                    ),
10744                )
10745            }
10746            #[inline]
10747            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10748                (
10749                    <alloy::sol_types::sol_data::Array<
10750                        alloy::sol_types::sol_data::FixedBytes<32>,
10751                    > as alloy_sol_types::SolType>::tokenize(ret),
10752                )
10753            }
10754            #[inline]
10755            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10756                <Self::ReturnTuple<
10757                    '_,
10758                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10759                    .map(|r| {
10760                        let r: getQueuedWithdrawalRootsReturn = r.into();
10761                        r._0
10762                    })
10763            }
10764            #[inline]
10765            fn abi_decode_returns_validate(
10766                data: &[u8],
10767            ) -> alloy_sol_types::Result<Self::Return> {
10768                <Self::ReturnTuple<
10769                    '_,
10770                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10771                    .map(|r| {
10772                        let r: getQueuedWithdrawalRootsReturn = r.into();
10773                        r._0
10774                    })
10775            }
10776        }
10777    };
10778    #[derive(serde::Serialize, serde::Deserialize)]
10779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10780    /**Function with signature `getQueuedWithdrawals(address)` and selector `0x5dd68579`.
10781```solidity
10782function getQueuedWithdrawals(address staker) external view returns (IDelegationManagerTypes.Withdrawal[] memory withdrawals, uint256[][] memory shares);
10783```*/
10784    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10785    #[derive(Clone)]
10786    pub struct getQueuedWithdrawalsCall {
10787        #[allow(missing_docs)]
10788        pub staker: alloy::sol_types::private::Address,
10789    }
10790    #[derive(serde::Serialize, serde::Deserialize)]
10791    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10792    ///Container type for the return parameters of the [`getQueuedWithdrawals(address)`](getQueuedWithdrawalsCall) function.
10793    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10794    #[derive(Clone)]
10795    pub struct getQueuedWithdrawalsReturn {
10796        #[allow(missing_docs)]
10797        pub withdrawals: alloy::sol_types::private::Vec<
10798            <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
10799        >,
10800        #[allow(missing_docs)]
10801        pub shares: alloy::sol_types::private::Vec<
10802            alloy::sol_types::private::Vec<
10803                alloy::sol_types::private::primitives::aliases::U256,
10804            >,
10805        >,
10806    }
10807    #[allow(
10808        non_camel_case_types,
10809        non_snake_case,
10810        clippy::pub_underscore_fields,
10811        clippy::style
10812    )]
10813    const _: () = {
10814        use alloy::sol_types as alloy_sol_types;
10815        {
10816            #[doc(hidden)]
10817            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10818            #[doc(hidden)]
10819            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10820            #[cfg(test)]
10821            #[allow(dead_code, unreachable_patterns)]
10822            fn _type_assertion(
10823                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10824            ) {
10825                match _t {
10826                    alloy_sol_types::private::AssertTypeEq::<
10827                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10828                    >(_) => {}
10829                }
10830            }
10831            #[automatically_derived]
10832            #[doc(hidden)]
10833            impl ::core::convert::From<getQueuedWithdrawalsCall>
10834            for UnderlyingRustTuple<'_> {
10835                fn from(value: getQueuedWithdrawalsCall) -> Self {
10836                    (value.staker,)
10837                }
10838            }
10839            #[automatically_derived]
10840            #[doc(hidden)]
10841            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10842            for getQueuedWithdrawalsCall {
10843                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10844                    Self { staker: tuple.0 }
10845                }
10846            }
10847        }
10848        {
10849            #[doc(hidden)]
10850            type UnderlyingSolTuple<'a> = (
10851                alloy::sol_types::sol_data::Array<IDelegationManagerTypes::Withdrawal>,
10852                alloy::sol_types::sol_data::Array<
10853                    alloy::sol_types::sol_data::Array<
10854                        alloy::sol_types::sol_data::Uint<256>,
10855                    >,
10856                >,
10857            );
10858            #[doc(hidden)]
10859            type UnderlyingRustTuple<'a> = (
10860                alloy::sol_types::private::Vec<
10861                    <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
10862                >,
10863                alloy::sol_types::private::Vec<
10864                    alloy::sol_types::private::Vec<
10865                        alloy::sol_types::private::primitives::aliases::U256,
10866                    >,
10867                >,
10868            );
10869            #[cfg(test)]
10870            #[allow(dead_code, unreachable_patterns)]
10871            fn _type_assertion(
10872                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10873            ) {
10874                match _t {
10875                    alloy_sol_types::private::AssertTypeEq::<
10876                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10877                    >(_) => {}
10878                }
10879            }
10880            #[automatically_derived]
10881            #[doc(hidden)]
10882            impl ::core::convert::From<getQueuedWithdrawalsReturn>
10883            for UnderlyingRustTuple<'_> {
10884                fn from(value: getQueuedWithdrawalsReturn) -> Self {
10885                    (value.withdrawals, value.shares)
10886                }
10887            }
10888            #[automatically_derived]
10889            #[doc(hidden)]
10890            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10891            for getQueuedWithdrawalsReturn {
10892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10893                    Self {
10894                        withdrawals: tuple.0,
10895                        shares: tuple.1,
10896                    }
10897                }
10898            }
10899        }
10900        impl getQueuedWithdrawalsReturn {
10901            fn _tokenize(
10902                &self,
10903            ) -> <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::ReturnToken<
10904                '_,
10905            > {
10906                (
10907                    <alloy::sol_types::sol_data::Array<
10908                        IDelegationManagerTypes::Withdrawal,
10909                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawals),
10910                    <alloy::sol_types::sol_data::Array<
10911                        alloy::sol_types::sol_data::Array<
10912                            alloy::sol_types::sol_data::Uint<256>,
10913                        >,
10914                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
10915                )
10916            }
10917        }
10918        #[automatically_derived]
10919        impl alloy_sol_types::SolCall for getQueuedWithdrawalsCall {
10920            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10921            type Token<'a> = <Self::Parameters<
10922                'a,
10923            > as alloy_sol_types::SolType>::Token<'a>;
10924            type Return = getQueuedWithdrawalsReturn;
10925            type ReturnTuple<'a> = (
10926                alloy::sol_types::sol_data::Array<IDelegationManagerTypes::Withdrawal>,
10927                alloy::sol_types::sol_data::Array<
10928                    alloy::sol_types::sol_data::Array<
10929                        alloy::sol_types::sol_data::Uint<256>,
10930                    >,
10931                >,
10932            );
10933            type ReturnToken<'a> = <Self::ReturnTuple<
10934                'a,
10935            > as alloy_sol_types::SolType>::Token<'a>;
10936            const SIGNATURE: &'static str = "getQueuedWithdrawals(address)";
10937            const SELECTOR: [u8; 4] = [93u8, 214u8, 133u8, 121u8];
10938            #[inline]
10939            fn new<'a>(
10940                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10941            ) -> Self {
10942                tuple.into()
10943            }
10944            #[inline]
10945            fn tokenize(&self) -> Self::Token<'_> {
10946                (
10947                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10948                        &self.staker,
10949                    ),
10950                )
10951            }
10952            #[inline]
10953            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10954                getQueuedWithdrawalsReturn::_tokenize(ret)
10955            }
10956            #[inline]
10957            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10958                <Self::ReturnTuple<
10959                    '_,
10960                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10961                    .map(Into::into)
10962            }
10963            #[inline]
10964            fn abi_decode_returns_validate(
10965                data: &[u8],
10966            ) -> alloy_sol_types::Result<Self::Return> {
10967                <Self::ReturnTuple<
10968                    '_,
10969                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10970                    .map(Into::into)
10971            }
10972        }
10973    };
10974    #[derive(serde::Serialize, serde::Deserialize)]
10975    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10976    /**Function with signature `getSlashableSharesInQueue(address,address)` and selector `0x6e174448`.
10977```solidity
10978function getSlashableSharesInQueue(address operator, address strategy) external view returns (uint256);
10979```*/
10980    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10981    #[derive(Clone)]
10982    pub struct getSlashableSharesInQueueCall {
10983        #[allow(missing_docs)]
10984        pub operator: alloy::sol_types::private::Address,
10985        #[allow(missing_docs)]
10986        pub strategy: alloy::sol_types::private::Address,
10987    }
10988    #[derive(serde::Serialize, serde::Deserialize)]
10989    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10990    ///Container type for the return parameters of the [`getSlashableSharesInQueue(address,address)`](getSlashableSharesInQueueCall) function.
10991    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10992    #[derive(Clone)]
10993    pub struct getSlashableSharesInQueueReturn {
10994        #[allow(missing_docs)]
10995        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10996    }
10997    #[allow(
10998        non_camel_case_types,
10999        non_snake_case,
11000        clippy::pub_underscore_fields,
11001        clippy::style
11002    )]
11003    const _: () = {
11004        use alloy::sol_types as alloy_sol_types;
11005        {
11006            #[doc(hidden)]
11007            type UnderlyingSolTuple<'a> = (
11008                alloy::sol_types::sol_data::Address,
11009                alloy::sol_types::sol_data::Address,
11010            );
11011            #[doc(hidden)]
11012            type UnderlyingRustTuple<'a> = (
11013                alloy::sol_types::private::Address,
11014                alloy::sol_types::private::Address,
11015            );
11016            #[cfg(test)]
11017            #[allow(dead_code, unreachable_patterns)]
11018            fn _type_assertion(
11019                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11020            ) {
11021                match _t {
11022                    alloy_sol_types::private::AssertTypeEq::<
11023                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11024                    >(_) => {}
11025                }
11026            }
11027            #[automatically_derived]
11028            #[doc(hidden)]
11029            impl ::core::convert::From<getSlashableSharesInQueueCall>
11030            for UnderlyingRustTuple<'_> {
11031                fn from(value: getSlashableSharesInQueueCall) -> Self {
11032                    (value.operator, value.strategy)
11033                }
11034            }
11035            #[automatically_derived]
11036            #[doc(hidden)]
11037            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11038            for getSlashableSharesInQueueCall {
11039                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11040                    Self {
11041                        operator: tuple.0,
11042                        strategy: tuple.1,
11043                    }
11044                }
11045            }
11046        }
11047        {
11048            #[doc(hidden)]
11049            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11050            #[doc(hidden)]
11051            type UnderlyingRustTuple<'a> = (
11052                alloy::sol_types::private::primitives::aliases::U256,
11053            );
11054            #[cfg(test)]
11055            #[allow(dead_code, unreachable_patterns)]
11056            fn _type_assertion(
11057                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11058            ) {
11059                match _t {
11060                    alloy_sol_types::private::AssertTypeEq::<
11061                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11062                    >(_) => {}
11063                }
11064            }
11065            #[automatically_derived]
11066            #[doc(hidden)]
11067            impl ::core::convert::From<getSlashableSharesInQueueReturn>
11068            for UnderlyingRustTuple<'_> {
11069                fn from(value: getSlashableSharesInQueueReturn) -> Self {
11070                    (value._0,)
11071                }
11072            }
11073            #[automatically_derived]
11074            #[doc(hidden)]
11075            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11076            for getSlashableSharesInQueueReturn {
11077                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11078                    Self { _0: tuple.0 }
11079                }
11080            }
11081        }
11082        #[automatically_derived]
11083        impl alloy_sol_types::SolCall for getSlashableSharesInQueueCall {
11084            type Parameters<'a> = (
11085                alloy::sol_types::sol_data::Address,
11086                alloy::sol_types::sol_data::Address,
11087            );
11088            type Token<'a> = <Self::Parameters<
11089                'a,
11090            > as alloy_sol_types::SolType>::Token<'a>;
11091            type Return = alloy::sol_types::private::primitives::aliases::U256;
11092            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11093            type ReturnToken<'a> = <Self::ReturnTuple<
11094                'a,
11095            > as alloy_sol_types::SolType>::Token<'a>;
11096            const SIGNATURE: &'static str = "getSlashableSharesInQueue(address,address)";
11097            const SELECTOR: [u8; 4] = [110u8, 23u8, 68u8, 72u8];
11098            #[inline]
11099            fn new<'a>(
11100                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11101            ) -> Self {
11102                tuple.into()
11103            }
11104            #[inline]
11105            fn tokenize(&self) -> Self::Token<'_> {
11106                (
11107                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11108                        &self.operator,
11109                    ),
11110                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11111                        &self.strategy,
11112                    ),
11113                )
11114            }
11115            #[inline]
11116            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11117                (
11118                    <alloy::sol_types::sol_data::Uint<
11119                        256,
11120                    > as alloy_sol_types::SolType>::tokenize(ret),
11121                )
11122            }
11123            #[inline]
11124            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11125                <Self::ReturnTuple<
11126                    '_,
11127                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11128                    .map(|r| {
11129                        let r: getSlashableSharesInQueueReturn = r.into();
11130                        r._0
11131                    })
11132            }
11133            #[inline]
11134            fn abi_decode_returns_validate(
11135                data: &[u8],
11136            ) -> alloy_sol_types::Result<Self::Return> {
11137                <Self::ReturnTuple<
11138                    '_,
11139                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11140                    .map(|r| {
11141                        let r: getSlashableSharesInQueueReturn = r.into();
11142                        r._0
11143                    })
11144            }
11145        }
11146    };
11147    #[derive(serde::Serialize, serde::Deserialize)]
11148    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11149    /**Function with signature `getWithdrawableShares(address,address[])` and selector `0xc978f7ac`.
11150```solidity
11151function getWithdrawableShares(address staker, address[] memory strategies) external view returns (uint256[] memory withdrawableShares, uint256[] memory depositShares);
11152```*/
11153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11154    #[derive(Clone)]
11155    pub struct getWithdrawableSharesCall {
11156        #[allow(missing_docs)]
11157        pub staker: alloy::sol_types::private::Address,
11158        #[allow(missing_docs)]
11159        pub strategies: alloy::sol_types::private::Vec<
11160            alloy::sol_types::private::Address,
11161        >,
11162    }
11163    #[derive(serde::Serialize, serde::Deserialize)]
11164    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11165    ///Container type for the return parameters of the [`getWithdrawableShares(address,address[])`](getWithdrawableSharesCall) function.
11166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11167    #[derive(Clone)]
11168    pub struct getWithdrawableSharesReturn {
11169        #[allow(missing_docs)]
11170        pub withdrawableShares: alloy::sol_types::private::Vec<
11171            alloy::sol_types::private::primitives::aliases::U256,
11172        >,
11173        #[allow(missing_docs)]
11174        pub depositShares: alloy::sol_types::private::Vec<
11175            alloy::sol_types::private::primitives::aliases::U256,
11176        >,
11177    }
11178    #[allow(
11179        non_camel_case_types,
11180        non_snake_case,
11181        clippy::pub_underscore_fields,
11182        clippy::style
11183    )]
11184    const _: () = {
11185        use alloy::sol_types as alloy_sol_types;
11186        {
11187            #[doc(hidden)]
11188            type UnderlyingSolTuple<'a> = (
11189                alloy::sol_types::sol_data::Address,
11190                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
11191            );
11192            #[doc(hidden)]
11193            type UnderlyingRustTuple<'a> = (
11194                alloy::sol_types::private::Address,
11195                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
11196            );
11197            #[cfg(test)]
11198            #[allow(dead_code, unreachable_patterns)]
11199            fn _type_assertion(
11200                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11201            ) {
11202                match _t {
11203                    alloy_sol_types::private::AssertTypeEq::<
11204                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11205                    >(_) => {}
11206                }
11207            }
11208            #[automatically_derived]
11209            #[doc(hidden)]
11210            impl ::core::convert::From<getWithdrawableSharesCall>
11211            for UnderlyingRustTuple<'_> {
11212                fn from(value: getWithdrawableSharesCall) -> Self {
11213                    (value.staker, value.strategies)
11214                }
11215            }
11216            #[automatically_derived]
11217            #[doc(hidden)]
11218            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11219            for getWithdrawableSharesCall {
11220                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11221                    Self {
11222                        staker: tuple.0,
11223                        strategies: tuple.1,
11224                    }
11225                }
11226            }
11227        }
11228        {
11229            #[doc(hidden)]
11230            type UnderlyingSolTuple<'a> = (
11231                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
11232                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
11233            );
11234            #[doc(hidden)]
11235            type UnderlyingRustTuple<'a> = (
11236                alloy::sol_types::private::Vec<
11237                    alloy::sol_types::private::primitives::aliases::U256,
11238                >,
11239                alloy::sol_types::private::Vec<
11240                    alloy::sol_types::private::primitives::aliases::U256,
11241                >,
11242            );
11243            #[cfg(test)]
11244            #[allow(dead_code, unreachable_patterns)]
11245            fn _type_assertion(
11246                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11247            ) {
11248                match _t {
11249                    alloy_sol_types::private::AssertTypeEq::<
11250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11251                    >(_) => {}
11252                }
11253            }
11254            #[automatically_derived]
11255            #[doc(hidden)]
11256            impl ::core::convert::From<getWithdrawableSharesReturn>
11257            for UnderlyingRustTuple<'_> {
11258                fn from(value: getWithdrawableSharesReturn) -> Self {
11259                    (value.withdrawableShares, value.depositShares)
11260                }
11261            }
11262            #[automatically_derived]
11263            #[doc(hidden)]
11264            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11265            for getWithdrawableSharesReturn {
11266                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11267                    Self {
11268                        withdrawableShares: tuple.0,
11269                        depositShares: tuple.1,
11270                    }
11271                }
11272            }
11273        }
11274        impl getWithdrawableSharesReturn {
11275            fn _tokenize(
11276                &self,
11277            ) -> <getWithdrawableSharesCall as alloy_sol_types::SolCall>::ReturnToken<
11278                '_,
11279            > {
11280                (
11281                    <alloy::sol_types::sol_data::Array<
11282                        alloy::sol_types::sol_data::Uint<256>,
11283                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawableShares),
11284                    <alloy::sol_types::sol_data::Array<
11285                        alloy::sol_types::sol_data::Uint<256>,
11286                    > as alloy_sol_types::SolType>::tokenize(&self.depositShares),
11287                )
11288            }
11289        }
11290        #[automatically_derived]
11291        impl alloy_sol_types::SolCall for getWithdrawableSharesCall {
11292            type Parameters<'a> = (
11293                alloy::sol_types::sol_data::Address,
11294                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
11295            );
11296            type Token<'a> = <Self::Parameters<
11297                'a,
11298            > as alloy_sol_types::SolType>::Token<'a>;
11299            type Return = getWithdrawableSharesReturn;
11300            type ReturnTuple<'a> = (
11301                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
11302                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
11303            );
11304            type ReturnToken<'a> = <Self::ReturnTuple<
11305                'a,
11306            > as alloy_sol_types::SolType>::Token<'a>;
11307            const SIGNATURE: &'static str = "getWithdrawableShares(address,address[])";
11308            const SELECTOR: [u8; 4] = [201u8, 120u8, 247u8, 172u8];
11309            #[inline]
11310            fn new<'a>(
11311                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11312            ) -> Self {
11313                tuple.into()
11314            }
11315            #[inline]
11316            fn tokenize(&self) -> Self::Token<'_> {
11317                (
11318                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11319                        &self.staker,
11320                    ),
11321                    <alloy::sol_types::sol_data::Array<
11322                        alloy::sol_types::sol_data::Address,
11323                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
11324                )
11325            }
11326            #[inline]
11327            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11328                getWithdrawableSharesReturn::_tokenize(ret)
11329            }
11330            #[inline]
11331            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11332                <Self::ReturnTuple<
11333                    '_,
11334                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11335                    .map(Into::into)
11336            }
11337            #[inline]
11338            fn abi_decode_returns_validate(
11339                data: &[u8],
11340            ) -> alloy_sol_types::Result<Self::Return> {
11341                <Self::ReturnTuple<
11342                    '_,
11343                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11344                    .map(Into::into)
11345            }
11346        }
11347    };
11348    #[derive(serde::Serialize, serde::Deserialize)]
11349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11350    /**Function with signature `increaseDelegatedShares(address,address,uint256,uint256)` and selector `0x3c651cf2`.
11351```solidity
11352function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) external;
11353```*/
11354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11355    #[derive(Clone)]
11356    pub struct increaseDelegatedSharesCall {
11357        #[allow(missing_docs)]
11358        pub staker: alloy::sol_types::private::Address,
11359        #[allow(missing_docs)]
11360        pub strategy: alloy::sol_types::private::Address,
11361        #[allow(missing_docs)]
11362        pub prevDepositShares: alloy::sol_types::private::primitives::aliases::U256,
11363        #[allow(missing_docs)]
11364        pub addedShares: alloy::sol_types::private::primitives::aliases::U256,
11365    }
11366    ///Container type for the return parameters of the [`increaseDelegatedShares(address,address,uint256,uint256)`](increaseDelegatedSharesCall) function.
11367    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11368    #[derive(Clone)]
11369    pub struct increaseDelegatedSharesReturn {}
11370    #[allow(
11371        non_camel_case_types,
11372        non_snake_case,
11373        clippy::pub_underscore_fields,
11374        clippy::style
11375    )]
11376    const _: () = {
11377        use alloy::sol_types as alloy_sol_types;
11378        {
11379            #[doc(hidden)]
11380            type UnderlyingSolTuple<'a> = (
11381                alloy::sol_types::sol_data::Address,
11382                alloy::sol_types::sol_data::Address,
11383                alloy::sol_types::sol_data::Uint<256>,
11384                alloy::sol_types::sol_data::Uint<256>,
11385            );
11386            #[doc(hidden)]
11387            type UnderlyingRustTuple<'a> = (
11388                alloy::sol_types::private::Address,
11389                alloy::sol_types::private::Address,
11390                alloy::sol_types::private::primitives::aliases::U256,
11391                alloy::sol_types::private::primitives::aliases::U256,
11392            );
11393            #[cfg(test)]
11394            #[allow(dead_code, unreachable_patterns)]
11395            fn _type_assertion(
11396                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11397            ) {
11398                match _t {
11399                    alloy_sol_types::private::AssertTypeEq::<
11400                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11401                    >(_) => {}
11402                }
11403            }
11404            #[automatically_derived]
11405            #[doc(hidden)]
11406            impl ::core::convert::From<increaseDelegatedSharesCall>
11407            for UnderlyingRustTuple<'_> {
11408                fn from(value: increaseDelegatedSharesCall) -> Self {
11409                    (
11410                        value.staker,
11411                        value.strategy,
11412                        value.prevDepositShares,
11413                        value.addedShares,
11414                    )
11415                }
11416            }
11417            #[automatically_derived]
11418            #[doc(hidden)]
11419            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11420            for increaseDelegatedSharesCall {
11421                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11422                    Self {
11423                        staker: tuple.0,
11424                        strategy: tuple.1,
11425                        prevDepositShares: tuple.2,
11426                        addedShares: tuple.3,
11427                    }
11428                }
11429            }
11430        }
11431        {
11432            #[doc(hidden)]
11433            type UnderlyingSolTuple<'a> = ();
11434            #[doc(hidden)]
11435            type UnderlyingRustTuple<'a> = ();
11436            #[cfg(test)]
11437            #[allow(dead_code, unreachable_patterns)]
11438            fn _type_assertion(
11439                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11440            ) {
11441                match _t {
11442                    alloy_sol_types::private::AssertTypeEq::<
11443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11444                    >(_) => {}
11445                }
11446            }
11447            #[automatically_derived]
11448            #[doc(hidden)]
11449            impl ::core::convert::From<increaseDelegatedSharesReturn>
11450            for UnderlyingRustTuple<'_> {
11451                fn from(value: increaseDelegatedSharesReturn) -> Self {
11452                    ()
11453                }
11454            }
11455            #[automatically_derived]
11456            #[doc(hidden)]
11457            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11458            for increaseDelegatedSharesReturn {
11459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11460                    Self {}
11461                }
11462            }
11463        }
11464        impl increaseDelegatedSharesReturn {
11465            fn _tokenize(
11466                &self,
11467            ) -> <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::ReturnToken<
11468                '_,
11469            > {
11470                ()
11471            }
11472        }
11473        #[automatically_derived]
11474        impl alloy_sol_types::SolCall for increaseDelegatedSharesCall {
11475            type Parameters<'a> = (
11476                alloy::sol_types::sol_data::Address,
11477                alloy::sol_types::sol_data::Address,
11478                alloy::sol_types::sol_data::Uint<256>,
11479                alloy::sol_types::sol_data::Uint<256>,
11480            );
11481            type Token<'a> = <Self::Parameters<
11482                'a,
11483            > as alloy_sol_types::SolType>::Token<'a>;
11484            type Return = increaseDelegatedSharesReturn;
11485            type ReturnTuple<'a> = ();
11486            type ReturnToken<'a> = <Self::ReturnTuple<
11487                'a,
11488            > as alloy_sol_types::SolType>::Token<'a>;
11489            const SIGNATURE: &'static str = "increaseDelegatedShares(address,address,uint256,uint256)";
11490            const SELECTOR: [u8; 4] = [60u8, 101u8, 28u8, 242u8];
11491            #[inline]
11492            fn new<'a>(
11493                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11494            ) -> Self {
11495                tuple.into()
11496            }
11497            #[inline]
11498            fn tokenize(&self) -> Self::Token<'_> {
11499                (
11500                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11501                        &self.staker,
11502                    ),
11503                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11504                        &self.strategy,
11505                    ),
11506                    <alloy::sol_types::sol_data::Uint<
11507                        256,
11508                    > as alloy_sol_types::SolType>::tokenize(&self.prevDepositShares),
11509                    <alloy::sol_types::sol_data::Uint<
11510                        256,
11511                    > as alloy_sol_types::SolType>::tokenize(&self.addedShares),
11512                )
11513            }
11514            #[inline]
11515            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11516                increaseDelegatedSharesReturn::_tokenize(ret)
11517            }
11518            #[inline]
11519            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11520                <Self::ReturnTuple<
11521                    '_,
11522                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11523                    .map(Into::into)
11524            }
11525            #[inline]
11526            fn abi_decode_returns_validate(
11527                data: &[u8],
11528            ) -> alloy_sol_types::Result<Self::Return> {
11529                <Self::ReturnTuple<
11530                    '_,
11531                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11532                    .map(Into::into)
11533            }
11534        }
11535    };
11536    #[derive(serde::Serialize, serde::Deserialize)]
11537    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11538    /**Function with signature `initialize(address,uint256)` and selector `0xcd6dc687`.
11539```solidity
11540function initialize(address initialOwner, uint256 initialPausedStatus) external;
11541```*/
11542    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11543    #[derive(Clone)]
11544    pub struct initializeCall {
11545        #[allow(missing_docs)]
11546        pub initialOwner: alloy::sol_types::private::Address,
11547        #[allow(missing_docs)]
11548        pub initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
11549    }
11550    ///Container type for the return parameters of the [`initialize(address,uint256)`](initializeCall) function.
11551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11552    #[derive(Clone)]
11553    pub struct initializeReturn {}
11554    #[allow(
11555        non_camel_case_types,
11556        non_snake_case,
11557        clippy::pub_underscore_fields,
11558        clippy::style
11559    )]
11560    const _: () = {
11561        use alloy::sol_types as alloy_sol_types;
11562        {
11563            #[doc(hidden)]
11564            type UnderlyingSolTuple<'a> = (
11565                alloy::sol_types::sol_data::Address,
11566                alloy::sol_types::sol_data::Uint<256>,
11567            );
11568            #[doc(hidden)]
11569            type UnderlyingRustTuple<'a> = (
11570                alloy::sol_types::private::Address,
11571                alloy::sol_types::private::primitives::aliases::U256,
11572            );
11573            #[cfg(test)]
11574            #[allow(dead_code, unreachable_patterns)]
11575            fn _type_assertion(
11576                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11577            ) {
11578                match _t {
11579                    alloy_sol_types::private::AssertTypeEq::<
11580                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11581                    >(_) => {}
11582                }
11583            }
11584            #[automatically_derived]
11585            #[doc(hidden)]
11586            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
11587                fn from(value: initializeCall) -> Self {
11588                    (value.initialOwner, value.initialPausedStatus)
11589                }
11590            }
11591            #[automatically_derived]
11592            #[doc(hidden)]
11593            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
11594                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11595                    Self {
11596                        initialOwner: tuple.0,
11597                        initialPausedStatus: tuple.1,
11598                    }
11599                }
11600            }
11601        }
11602        {
11603            #[doc(hidden)]
11604            type UnderlyingSolTuple<'a> = ();
11605            #[doc(hidden)]
11606            type UnderlyingRustTuple<'a> = ();
11607            #[cfg(test)]
11608            #[allow(dead_code, unreachable_patterns)]
11609            fn _type_assertion(
11610                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11611            ) {
11612                match _t {
11613                    alloy_sol_types::private::AssertTypeEq::<
11614                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11615                    >(_) => {}
11616                }
11617            }
11618            #[automatically_derived]
11619            #[doc(hidden)]
11620            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
11621                fn from(value: initializeReturn) -> Self {
11622                    ()
11623                }
11624            }
11625            #[automatically_derived]
11626            #[doc(hidden)]
11627            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
11628                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11629                    Self {}
11630                }
11631            }
11632        }
11633        impl initializeReturn {
11634            fn _tokenize(
11635                &self,
11636            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11637                ()
11638            }
11639        }
11640        #[automatically_derived]
11641        impl alloy_sol_types::SolCall for initializeCall {
11642            type Parameters<'a> = (
11643                alloy::sol_types::sol_data::Address,
11644                alloy::sol_types::sol_data::Uint<256>,
11645            );
11646            type Token<'a> = <Self::Parameters<
11647                'a,
11648            > as alloy_sol_types::SolType>::Token<'a>;
11649            type Return = initializeReturn;
11650            type ReturnTuple<'a> = ();
11651            type ReturnToken<'a> = <Self::ReturnTuple<
11652                'a,
11653            > as alloy_sol_types::SolType>::Token<'a>;
11654            const SIGNATURE: &'static str = "initialize(address,uint256)";
11655            const SELECTOR: [u8; 4] = [205u8, 109u8, 198u8, 135u8];
11656            #[inline]
11657            fn new<'a>(
11658                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11659            ) -> Self {
11660                tuple.into()
11661            }
11662            #[inline]
11663            fn tokenize(&self) -> Self::Token<'_> {
11664                (
11665                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11666                        &self.initialOwner,
11667                    ),
11668                    <alloy::sol_types::sol_data::Uint<
11669                        256,
11670                    > as alloy_sol_types::SolType>::tokenize(&self.initialPausedStatus),
11671                )
11672            }
11673            #[inline]
11674            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11675                initializeReturn::_tokenize(ret)
11676            }
11677            #[inline]
11678            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11679                <Self::ReturnTuple<
11680                    '_,
11681                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11682                    .map(Into::into)
11683            }
11684            #[inline]
11685            fn abi_decode_returns_validate(
11686                data: &[u8],
11687            ) -> alloy_sol_types::Result<Self::Return> {
11688                <Self::ReturnTuple<
11689                    '_,
11690                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11691                    .map(Into::into)
11692            }
11693        }
11694    };
11695    #[derive(serde::Serialize, serde::Deserialize)]
11696    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11697    /**Function with signature `isDelegated(address)` and selector `0x3e28391d`.
11698```solidity
11699function isDelegated(address staker) external view returns (bool);
11700```*/
11701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11702    #[derive(Clone)]
11703    pub struct isDelegatedCall {
11704        #[allow(missing_docs)]
11705        pub staker: alloy::sol_types::private::Address,
11706    }
11707    #[derive(serde::Serialize, serde::Deserialize)]
11708    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11709    ///Container type for the return parameters of the [`isDelegated(address)`](isDelegatedCall) function.
11710    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11711    #[derive(Clone)]
11712    pub struct isDelegatedReturn {
11713        #[allow(missing_docs)]
11714        pub _0: bool,
11715    }
11716    #[allow(
11717        non_camel_case_types,
11718        non_snake_case,
11719        clippy::pub_underscore_fields,
11720        clippy::style
11721    )]
11722    const _: () = {
11723        use alloy::sol_types as alloy_sol_types;
11724        {
11725            #[doc(hidden)]
11726            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11727            #[doc(hidden)]
11728            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11729            #[cfg(test)]
11730            #[allow(dead_code, unreachable_patterns)]
11731            fn _type_assertion(
11732                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11733            ) {
11734                match _t {
11735                    alloy_sol_types::private::AssertTypeEq::<
11736                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11737                    >(_) => {}
11738                }
11739            }
11740            #[automatically_derived]
11741            #[doc(hidden)]
11742            impl ::core::convert::From<isDelegatedCall> for UnderlyingRustTuple<'_> {
11743                fn from(value: isDelegatedCall) -> Self {
11744                    (value.staker,)
11745                }
11746            }
11747            #[automatically_derived]
11748            #[doc(hidden)]
11749            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isDelegatedCall {
11750                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11751                    Self { staker: tuple.0 }
11752                }
11753            }
11754        }
11755        {
11756            #[doc(hidden)]
11757            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11758            #[doc(hidden)]
11759            type UnderlyingRustTuple<'a> = (bool,);
11760            #[cfg(test)]
11761            #[allow(dead_code, unreachable_patterns)]
11762            fn _type_assertion(
11763                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11764            ) {
11765                match _t {
11766                    alloy_sol_types::private::AssertTypeEq::<
11767                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11768                    >(_) => {}
11769                }
11770            }
11771            #[automatically_derived]
11772            #[doc(hidden)]
11773            impl ::core::convert::From<isDelegatedReturn> for UnderlyingRustTuple<'_> {
11774                fn from(value: isDelegatedReturn) -> Self {
11775                    (value._0,)
11776                }
11777            }
11778            #[automatically_derived]
11779            #[doc(hidden)]
11780            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isDelegatedReturn {
11781                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11782                    Self { _0: tuple.0 }
11783                }
11784            }
11785        }
11786        #[automatically_derived]
11787        impl alloy_sol_types::SolCall for isDelegatedCall {
11788            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11789            type Token<'a> = <Self::Parameters<
11790                'a,
11791            > as alloy_sol_types::SolType>::Token<'a>;
11792            type Return = bool;
11793            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11794            type ReturnToken<'a> = <Self::ReturnTuple<
11795                'a,
11796            > as alloy_sol_types::SolType>::Token<'a>;
11797            const SIGNATURE: &'static str = "isDelegated(address)";
11798            const SELECTOR: [u8; 4] = [62u8, 40u8, 57u8, 29u8];
11799            #[inline]
11800            fn new<'a>(
11801                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11802            ) -> Self {
11803                tuple.into()
11804            }
11805            #[inline]
11806            fn tokenize(&self) -> Self::Token<'_> {
11807                (
11808                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11809                        &self.staker,
11810                    ),
11811                )
11812            }
11813            #[inline]
11814            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11815                (
11816                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11817                        ret,
11818                    ),
11819                )
11820            }
11821            #[inline]
11822            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11823                <Self::ReturnTuple<
11824                    '_,
11825                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11826                    .map(|r| {
11827                        let r: isDelegatedReturn = r.into();
11828                        r._0
11829                    })
11830            }
11831            #[inline]
11832            fn abi_decode_returns_validate(
11833                data: &[u8],
11834            ) -> alloy_sol_types::Result<Self::Return> {
11835                <Self::ReturnTuple<
11836                    '_,
11837                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11838                    .map(|r| {
11839                        let r: isDelegatedReturn = r.into();
11840                        r._0
11841                    })
11842            }
11843        }
11844    };
11845    #[derive(serde::Serialize, serde::Deserialize)]
11846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11847    /**Function with signature `isOperator(address)` and selector `0x6d70f7ae`.
11848```solidity
11849function isOperator(address operator) external view returns (bool);
11850```*/
11851    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11852    #[derive(Clone)]
11853    pub struct isOperatorCall {
11854        #[allow(missing_docs)]
11855        pub operator: alloy::sol_types::private::Address,
11856    }
11857    #[derive(serde::Serialize, serde::Deserialize)]
11858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11859    ///Container type for the return parameters of the [`isOperator(address)`](isOperatorCall) function.
11860    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11861    #[derive(Clone)]
11862    pub struct isOperatorReturn {
11863        #[allow(missing_docs)]
11864        pub _0: bool,
11865    }
11866    #[allow(
11867        non_camel_case_types,
11868        non_snake_case,
11869        clippy::pub_underscore_fields,
11870        clippy::style
11871    )]
11872    const _: () = {
11873        use alloy::sol_types as alloy_sol_types;
11874        {
11875            #[doc(hidden)]
11876            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11877            #[doc(hidden)]
11878            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11879            #[cfg(test)]
11880            #[allow(dead_code, unreachable_patterns)]
11881            fn _type_assertion(
11882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11883            ) {
11884                match _t {
11885                    alloy_sol_types::private::AssertTypeEq::<
11886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11887                    >(_) => {}
11888                }
11889            }
11890            #[automatically_derived]
11891            #[doc(hidden)]
11892            impl ::core::convert::From<isOperatorCall> for UnderlyingRustTuple<'_> {
11893                fn from(value: isOperatorCall) -> Self {
11894                    (value.operator,)
11895                }
11896            }
11897            #[automatically_derived]
11898            #[doc(hidden)]
11899            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperatorCall {
11900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11901                    Self { operator: tuple.0 }
11902                }
11903            }
11904        }
11905        {
11906            #[doc(hidden)]
11907            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11908            #[doc(hidden)]
11909            type UnderlyingRustTuple<'a> = (bool,);
11910            #[cfg(test)]
11911            #[allow(dead_code, unreachable_patterns)]
11912            fn _type_assertion(
11913                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11914            ) {
11915                match _t {
11916                    alloy_sol_types::private::AssertTypeEq::<
11917                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11918                    >(_) => {}
11919                }
11920            }
11921            #[automatically_derived]
11922            #[doc(hidden)]
11923            impl ::core::convert::From<isOperatorReturn> for UnderlyingRustTuple<'_> {
11924                fn from(value: isOperatorReturn) -> Self {
11925                    (value._0,)
11926                }
11927            }
11928            #[automatically_derived]
11929            #[doc(hidden)]
11930            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperatorReturn {
11931                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11932                    Self { _0: tuple.0 }
11933                }
11934            }
11935        }
11936        #[automatically_derived]
11937        impl alloy_sol_types::SolCall for isOperatorCall {
11938            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11939            type Token<'a> = <Self::Parameters<
11940                'a,
11941            > as alloy_sol_types::SolType>::Token<'a>;
11942            type Return = bool;
11943            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11944            type ReturnToken<'a> = <Self::ReturnTuple<
11945                'a,
11946            > as alloy_sol_types::SolType>::Token<'a>;
11947            const SIGNATURE: &'static str = "isOperator(address)";
11948            const SELECTOR: [u8; 4] = [109u8, 112u8, 247u8, 174u8];
11949            #[inline]
11950            fn new<'a>(
11951                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11952            ) -> Self {
11953                tuple.into()
11954            }
11955            #[inline]
11956            fn tokenize(&self) -> Self::Token<'_> {
11957                (
11958                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11959                        &self.operator,
11960                    ),
11961                )
11962            }
11963            #[inline]
11964            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11965                (
11966                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11967                        ret,
11968                    ),
11969                )
11970            }
11971            #[inline]
11972            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11973                <Self::ReturnTuple<
11974                    '_,
11975                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11976                    .map(|r| {
11977                        let r: isOperatorReturn = r.into();
11978                        r._0
11979                    })
11980            }
11981            #[inline]
11982            fn abi_decode_returns_validate(
11983                data: &[u8],
11984            ) -> alloy_sol_types::Result<Self::Return> {
11985                <Self::ReturnTuple<
11986                    '_,
11987                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11988                    .map(|r| {
11989                        let r: isOperatorReturn = r.into();
11990                        r._0
11991                    })
11992            }
11993        }
11994    };
11995    #[derive(serde::Serialize, serde::Deserialize)]
11996    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11997    /**Function with signature `minWithdrawalDelayBlocks()` and selector `0xc448feb8`.
11998```solidity
11999function minWithdrawalDelayBlocks() external view returns (uint32);
12000```*/
12001    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12002    #[derive(Clone)]
12003    pub struct minWithdrawalDelayBlocksCall;
12004    #[derive(serde::Serialize, serde::Deserialize)]
12005    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12006    ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function.
12007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12008    #[derive(Clone)]
12009    pub struct minWithdrawalDelayBlocksReturn {
12010        #[allow(missing_docs)]
12011        pub _0: u32,
12012    }
12013    #[allow(
12014        non_camel_case_types,
12015        non_snake_case,
12016        clippy::pub_underscore_fields,
12017        clippy::style
12018    )]
12019    const _: () = {
12020        use alloy::sol_types as alloy_sol_types;
12021        {
12022            #[doc(hidden)]
12023            type UnderlyingSolTuple<'a> = ();
12024            #[doc(hidden)]
12025            type UnderlyingRustTuple<'a> = ();
12026            #[cfg(test)]
12027            #[allow(dead_code, unreachable_patterns)]
12028            fn _type_assertion(
12029                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12030            ) {
12031                match _t {
12032                    alloy_sol_types::private::AssertTypeEq::<
12033                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12034                    >(_) => {}
12035                }
12036            }
12037            #[automatically_derived]
12038            #[doc(hidden)]
12039            impl ::core::convert::From<minWithdrawalDelayBlocksCall>
12040            for UnderlyingRustTuple<'_> {
12041                fn from(value: minWithdrawalDelayBlocksCall) -> Self {
12042                    ()
12043                }
12044            }
12045            #[automatically_derived]
12046            #[doc(hidden)]
12047            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12048            for minWithdrawalDelayBlocksCall {
12049                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12050                    Self
12051                }
12052            }
12053        }
12054        {
12055            #[doc(hidden)]
12056            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12057            #[doc(hidden)]
12058            type UnderlyingRustTuple<'a> = (u32,);
12059            #[cfg(test)]
12060            #[allow(dead_code, unreachable_patterns)]
12061            fn _type_assertion(
12062                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12063            ) {
12064                match _t {
12065                    alloy_sol_types::private::AssertTypeEq::<
12066                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12067                    >(_) => {}
12068                }
12069            }
12070            #[automatically_derived]
12071            #[doc(hidden)]
12072            impl ::core::convert::From<minWithdrawalDelayBlocksReturn>
12073            for UnderlyingRustTuple<'_> {
12074                fn from(value: minWithdrawalDelayBlocksReturn) -> Self {
12075                    (value._0,)
12076                }
12077            }
12078            #[automatically_derived]
12079            #[doc(hidden)]
12080            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12081            for minWithdrawalDelayBlocksReturn {
12082                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12083                    Self { _0: tuple.0 }
12084                }
12085            }
12086        }
12087        #[automatically_derived]
12088        impl alloy_sol_types::SolCall for minWithdrawalDelayBlocksCall {
12089            type Parameters<'a> = ();
12090            type Token<'a> = <Self::Parameters<
12091                'a,
12092            > as alloy_sol_types::SolType>::Token<'a>;
12093            type Return = u32;
12094            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12095            type ReturnToken<'a> = <Self::ReturnTuple<
12096                'a,
12097            > as alloy_sol_types::SolType>::Token<'a>;
12098            const SIGNATURE: &'static str = "minWithdrawalDelayBlocks()";
12099            const SELECTOR: [u8; 4] = [196u8, 72u8, 254u8, 184u8];
12100            #[inline]
12101            fn new<'a>(
12102                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12103            ) -> Self {
12104                tuple.into()
12105            }
12106            #[inline]
12107            fn tokenize(&self) -> Self::Token<'_> {
12108                ()
12109            }
12110            #[inline]
12111            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12112                (
12113                    <alloy::sol_types::sol_data::Uint<
12114                        32,
12115                    > as alloy_sol_types::SolType>::tokenize(ret),
12116                )
12117            }
12118            #[inline]
12119            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12120                <Self::ReturnTuple<
12121                    '_,
12122                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12123                    .map(|r| {
12124                        let r: minWithdrawalDelayBlocksReturn = r.into();
12125                        r._0
12126                    })
12127            }
12128            #[inline]
12129            fn abi_decode_returns_validate(
12130                data: &[u8],
12131            ) -> alloy_sol_types::Result<Self::Return> {
12132                <Self::ReturnTuple<
12133                    '_,
12134                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12135                    .map(|r| {
12136                        let r: minWithdrawalDelayBlocksReturn = r.into();
12137                        r._0
12138                    })
12139            }
12140        }
12141    };
12142    #[derive(serde::Serialize, serde::Deserialize)]
12143    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12144    /**Function with signature `modifyOperatorDetails(address,address)` and selector `0x54b7c96c`.
12145```solidity
12146function modifyOperatorDetails(address operator, address newDelegationApprover) external;
12147```*/
12148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12149    #[derive(Clone)]
12150    pub struct modifyOperatorDetailsCall {
12151        #[allow(missing_docs)]
12152        pub operator: alloy::sol_types::private::Address,
12153        #[allow(missing_docs)]
12154        pub newDelegationApprover: alloy::sol_types::private::Address,
12155    }
12156    ///Container type for the return parameters of the [`modifyOperatorDetails(address,address)`](modifyOperatorDetailsCall) function.
12157    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12158    #[derive(Clone)]
12159    pub struct modifyOperatorDetailsReturn {}
12160    #[allow(
12161        non_camel_case_types,
12162        non_snake_case,
12163        clippy::pub_underscore_fields,
12164        clippy::style
12165    )]
12166    const _: () = {
12167        use alloy::sol_types as alloy_sol_types;
12168        {
12169            #[doc(hidden)]
12170            type UnderlyingSolTuple<'a> = (
12171                alloy::sol_types::sol_data::Address,
12172                alloy::sol_types::sol_data::Address,
12173            );
12174            #[doc(hidden)]
12175            type UnderlyingRustTuple<'a> = (
12176                alloy::sol_types::private::Address,
12177                alloy::sol_types::private::Address,
12178            );
12179            #[cfg(test)]
12180            #[allow(dead_code, unreachable_patterns)]
12181            fn _type_assertion(
12182                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12183            ) {
12184                match _t {
12185                    alloy_sol_types::private::AssertTypeEq::<
12186                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12187                    >(_) => {}
12188                }
12189            }
12190            #[automatically_derived]
12191            #[doc(hidden)]
12192            impl ::core::convert::From<modifyOperatorDetailsCall>
12193            for UnderlyingRustTuple<'_> {
12194                fn from(value: modifyOperatorDetailsCall) -> Self {
12195                    (value.operator, value.newDelegationApprover)
12196                }
12197            }
12198            #[automatically_derived]
12199            #[doc(hidden)]
12200            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12201            for modifyOperatorDetailsCall {
12202                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12203                    Self {
12204                        operator: tuple.0,
12205                        newDelegationApprover: tuple.1,
12206                    }
12207                }
12208            }
12209        }
12210        {
12211            #[doc(hidden)]
12212            type UnderlyingSolTuple<'a> = ();
12213            #[doc(hidden)]
12214            type UnderlyingRustTuple<'a> = ();
12215            #[cfg(test)]
12216            #[allow(dead_code, unreachable_patterns)]
12217            fn _type_assertion(
12218                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12219            ) {
12220                match _t {
12221                    alloy_sol_types::private::AssertTypeEq::<
12222                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12223                    >(_) => {}
12224                }
12225            }
12226            #[automatically_derived]
12227            #[doc(hidden)]
12228            impl ::core::convert::From<modifyOperatorDetailsReturn>
12229            for UnderlyingRustTuple<'_> {
12230                fn from(value: modifyOperatorDetailsReturn) -> Self {
12231                    ()
12232                }
12233            }
12234            #[automatically_derived]
12235            #[doc(hidden)]
12236            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12237            for modifyOperatorDetailsReturn {
12238                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12239                    Self {}
12240                }
12241            }
12242        }
12243        impl modifyOperatorDetailsReturn {
12244            fn _tokenize(
12245                &self,
12246            ) -> <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::ReturnToken<
12247                '_,
12248            > {
12249                ()
12250            }
12251        }
12252        #[automatically_derived]
12253        impl alloy_sol_types::SolCall for modifyOperatorDetailsCall {
12254            type Parameters<'a> = (
12255                alloy::sol_types::sol_data::Address,
12256                alloy::sol_types::sol_data::Address,
12257            );
12258            type Token<'a> = <Self::Parameters<
12259                'a,
12260            > as alloy_sol_types::SolType>::Token<'a>;
12261            type Return = modifyOperatorDetailsReturn;
12262            type ReturnTuple<'a> = ();
12263            type ReturnToken<'a> = <Self::ReturnTuple<
12264                'a,
12265            > as alloy_sol_types::SolType>::Token<'a>;
12266            const SIGNATURE: &'static str = "modifyOperatorDetails(address,address)";
12267            const SELECTOR: [u8; 4] = [84u8, 183u8, 201u8, 108u8];
12268            #[inline]
12269            fn new<'a>(
12270                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12271            ) -> Self {
12272                tuple.into()
12273            }
12274            #[inline]
12275            fn tokenize(&self) -> Self::Token<'_> {
12276                (
12277                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12278                        &self.operator,
12279                    ),
12280                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12281                        &self.newDelegationApprover,
12282                    ),
12283                )
12284            }
12285            #[inline]
12286            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12287                modifyOperatorDetailsReturn::_tokenize(ret)
12288            }
12289            #[inline]
12290            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12291                <Self::ReturnTuple<
12292                    '_,
12293                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12294                    .map(Into::into)
12295            }
12296            #[inline]
12297            fn abi_decode_returns_validate(
12298                data: &[u8],
12299            ) -> alloy_sol_types::Result<Self::Return> {
12300                <Self::ReturnTuple<
12301                    '_,
12302                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12303                    .map(Into::into)
12304            }
12305        }
12306    };
12307    #[derive(serde::Serialize, serde::Deserialize)]
12308    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12309    /**Function with signature `operatorShares(address,address)` and selector `0x778e55f3`.
12310```solidity
12311function operatorShares(address operator, address strategy) external view returns (uint256 shares);
12312```*/
12313    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12314    #[derive(Clone)]
12315    pub struct operatorSharesCall {
12316        #[allow(missing_docs)]
12317        pub operator: alloy::sol_types::private::Address,
12318        #[allow(missing_docs)]
12319        pub strategy: alloy::sol_types::private::Address,
12320    }
12321    #[derive(serde::Serialize, serde::Deserialize)]
12322    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12323    ///Container type for the return parameters of the [`operatorShares(address,address)`](operatorSharesCall) function.
12324    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12325    #[derive(Clone)]
12326    pub struct operatorSharesReturn {
12327        #[allow(missing_docs)]
12328        pub shares: alloy::sol_types::private::primitives::aliases::U256,
12329    }
12330    #[allow(
12331        non_camel_case_types,
12332        non_snake_case,
12333        clippy::pub_underscore_fields,
12334        clippy::style
12335    )]
12336    const _: () = {
12337        use alloy::sol_types as alloy_sol_types;
12338        {
12339            #[doc(hidden)]
12340            type UnderlyingSolTuple<'a> = (
12341                alloy::sol_types::sol_data::Address,
12342                alloy::sol_types::sol_data::Address,
12343            );
12344            #[doc(hidden)]
12345            type UnderlyingRustTuple<'a> = (
12346                alloy::sol_types::private::Address,
12347                alloy::sol_types::private::Address,
12348            );
12349            #[cfg(test)]
12350            #[allow(dead_code, unreachable_patterns)]
12351            fn _type_assertion(
12352                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12353            ) {
12354                match _t {
12355                    alloy_sol_types::private::AssertTypeEq::<
12356                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12357                    >(_) => {}
12358                }
12359            }
12360            #[automatically_derived]
12361            #[doc(hidden)]
12362            impl ::core::convert::From<operatorSharesCall> for UnderlyingRustTuple<'_> {
12363                fn from(value: operatorSharesCall) -> Self {
12364                    (value.operator, value.strategy)
12365                }
12366            }
12367            #[automatically_derived]
12368            #[doc(hidden)]
12369            impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorSharesCall {
12370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12371                    Self {
12372                        operator: tuple.0,
12373                        strategy: tuple.1,
12374                    }
12375                }
12376            }
12377        }
12378        {
12379            #[doc(hidden)]
12380            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12381            #[doc(hidden)]
12382            type UnderlyingRustTuple<'a> = (
12383                alloy::sol_types::private::primitives::aliases::U256,
12384            );
12385            #[cfg(test)]
12386            #[allow(dead_code, unreachable_patterns)]
12387            fn _type_assertion(
12388                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12389            ) {
12390                match _t {
12391                    alloy_sol_types::private::AssertTypeEq::<
12392                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12393                    >(_) => {}
12394                }
12395            }
12396            #[automatically_derived]
12397            #[doc(hidden)]
12398            impl ::core::convert::From<operatorSharesReturn>
12399            for UnderlyingRustTuple<'_> {
12400                fn from(value: operatorSharesReturn) -> Self {
12401                    (value.shares,)
12402                }
12403            }
12404            #[automatically_derived]
12405            #[doc(hidden)]
12406            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12407            for operatorSharesReturn {
12408                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12409                    Self { shares: tuple.0 }
12410                }
12411            }
12412        }
12413        #[automatically_derived]
12414        impl alloy_sol_types::SolCall for operatorSharesCall {
12415            type Parameters<'a> = (
12416                alloy::sol_types::sol_data::Address,
12417                alloy::sol_types::sol_data::Address,
12418            );
12419            type Token<'a> = <Self::Parameters<
12420                'a,
12421            > as alloy_sol_types::SolType>::Token<'a>;
12422            type Return = alloy::sol_types::private::primitives::aliases::U256;
12423            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12424            type ReturnToken<'a> = <Self::ReturnTuple<
12425                'a,
12426            > as alloy_sol_types::SolType>::Token<'a>;
12427            const SIGNATURE: &'static str = "operatorShares(address,address)";
12428            const SELECTOR: [u8; 4] = [119u8, 142u8, 85u8, 243u8];
12429            #[inline]
12430            fn new<'a>(
12431                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12432            ) -> Self {
12433                tuple.into()
12434            }
12435            #[inline]
12436            fn tokenize(&self) -> Self::Token<'_> {
12437                (
12438                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12439                        &self.operator,
12440                    ),
12441                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12442                        &self.strategy,
12443                    ),
12444                )
12445            }
12446            #[inline]
12447            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12448                (
12449                    <alloy::sol_types::sol_data::Uint<
12450                        256,
12451                    > as alloy_sol_types::SolType>::tokenize(ret),
12452                )
12453            }
12454            #[inline]
12455            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12456                <Self::ReturnTuple<
12457                    '_,
12458                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12459                    .map(|r| {
12460                        let r: operatorSharesReturn = r.into();
12461                        r.shares
12462                    })
12463            }
12464            #[inline]
12465            fn abi_decode_returns_validate(
12466                data: &[u8],
12467            ) -> alloy_sol_types::Result<Self::Return> {
12468                <Self::ReturnTuple<
12469                    '_,
12470                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12471                    .map(|r| {
12472                        let r: operatorSharesReturn = r.into();
12473                        r.shares
12474                    })
12475            }
12476        }
12477    };
12478    #[derive(serde::Serialize, serde::Deserialize)]
12479    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12480    /**Function with signature `owner()` and selector `0x8da5cb5b`.
12481```solidity
12482function owner() external view returns (address);
12483```*/
12484    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12485    #[derive(Clone)]
12486    pub struct ownerCall;
12487    #[derive(serde::Serialize, serde::Deserialize)]
12488    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12489    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
12490    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12491    #[derive(Clone)]
12492    pub struct ownerReturn {
12493        #[allow(missing_docs)]
12494        pub _0: alloy::sol_types::private::Address,
12495    }
12496    #[allow(
12497        non_camel_case_types,
12498        non_snake_case,
12499        clippy::pub_underscore_fields,
12500        clippy::style
12501    )]
12502    const _: () = {
12503        use alloy::sol_types as alloy_sol_types;
12504        {
12505            #[doc(hidden)]
12506            type UnderlyingSolTuple<'a> = ();
12507            #[doc(hidden)]
12508            type UnderlyingRustTuple<'a> = ();
12509            #[cfg(test)]
12510            #[allow(dead_code, unreachable_patterns)]
12511            fn _type_assertion(
12512                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12513            ) {
12514                match _t {
12515                    alloy_sol_types::private::AssertTypeEq::<
12516                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12517                    >(_) => {}
12518                }
12519            }
12520            #[automatically_derived]
12521            #[doc(hidden)]
12522            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
12523                fn from(value: ownerCall) -> Self {
12524                    ()
12525                }
12526            }
12527            #[automatically_derived]
12528            #[doc(hidden)]
12529            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
12530                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12531                    Self
12532                }
12533            }
12534        }
12535        {
12536            #[doc(hidden)]
12537            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12538            #[doc(hidden)]
12539            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12540            #[cfg(test)]
12541            #[allow(dead_code, unreachable_patterns)]
12542            fn _type_assertion(
12543                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12544            ) {
12545                match _t {
12546                    alloy_sol_types::private::AssertTypeEq::<
12547                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12548                    >(_) => {}
12549                }
12550            }
12551            #[automatically_derived]
12552            #[doc(hidden)]
12553            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12554                fn from(value: ownerReturn) -> Self {
12555                    (value._0,)
12556                }
12557            }
12558            #[automatically_derived]
12559            #[doc(hidden)]
12560            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12561                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12562                    Self { _0: tuple.0 }
12563                }
12564            }
12565        }
12566        #[automatically_derived]
12567        impl alloy_sol_types::SolCall for ownerCall {
12568            type Parameters<'a> = ();
12569            type Token<'a> = <Self::Parameters<
12570                'a,
12571            > as alloy_sol_types::SolType>::Token<'a>;
12572            type Return = alloy::sol_types::private::Address;
12573            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12574            type ReturnToken<'a> = <Self::ReturnTuple<
12575                'a,
12576            > as alloy_sol_types::SolType>::Token<'a>;
12577            const SIGNATURE: &'static str = "owner()";
12578            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12579            #[inline]
12580            fn new<'a>(
12581                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12582            ) -> Self {
12583                tuple.into()
12584            }
12585            #[inline]
12586            fn tokenize(&self) -> Self::Token<'_> {
12587                ()
12588            }
12589            #[inline]
12590            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12591                (
12592                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12593                        ret,
12594                    ),
12595                )
12596            }
12597            #[inline]
12598            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12599                <Self::ReturnTuple<
12600                    '_,
12601                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12602                    .map(|r| {
12603                        let r: ownerReturn = r.into();
12604                        r._0
12605                    })
12606            }
12607            #[inline]
12608            fn abi_decode_returns_validate(
12609                data: &[u8],
12610            ) -> alloy_sol_types::Result<Self::Return> {
12611                <Self::ReturnTuple<
12612                    '_,
12613                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12614                    .map(|r| {
12615                        let r: ownerReturn = r.into();
12616                        r._0
12617                    })
12618            }
12619        }
12620    };
12621    #[derive(serde::Serialize, serde::Deserialize)]
12622    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12623    /**Function with signature `pause(uint256)` and selector `0x136439dd`.
12624```solidity
12625function pause(uint256 newPausedStatus) external;
12626```*/
12627    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12628    #[derive(Clone)]
12629    pub struct pauseCall {
12630        #[allow(missing_docs)]
12631        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
12632    }
12633    ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function.
12634    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12635    #[derive(Clone)]
12636    pub struct pauseReturn {}
12637    #[allow(
12638        non_camel_case_types,
12639        non_snake_case,
12640        clippy::pub_underscore_fields,
12641        clippy::style
12642    )]
12643    const _: () = {
12644        use alloy::sol_types as alloy_sol_types;
12645        {
12646            #[doc(hidden)]
12647            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12648            #[doc(hidden)]
12649            type UnderlyingRustTuple<'a> = (
12650                alloy::sol_types::private::primitives::aliases::U256,
12651            );
12652            #[cfg(test)]
12653            #[allow(dead_code, unreachable_patterns)]
12654            fn _type_assertion(
12655                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12656            ) {
12657                match _t {
12658                    alloy_sol_types::private::AssertTypeEq::<
12659                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12660                    >(_) => {}
12661                }
12662            }
12663            #[automatically_derived]
12664            #[doc(hidden)]
12665            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
12666                fn from(value: pauseCall) -> Self {
12667                    (value.newPausedStatus,)
12668                }
12669            }
12670            #[automatically_derived]
12671            #[doc(hidden)]
12672            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
12673                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12674                    Self { newPausedStatus: tuple.0 }
12675                }
12676            }
12677        }
12678        {
12679            #[doc(hidden)]
12680            type UnderlyingSolTuple<'a> = ();
12681            #[doc(hidden)]
12682            type UnderlyingRustTuple<'a> = ();
12683            #[cfg(test)]
12684            #[allow(dead_code, unreachable_patterns)]
12685            fn _type_assertion(
12686                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12687            ) {
12688                match _t {
12689                    alloy_sol_types::private::AssertTypeEq::<
12690                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12691                    >(_) => {}
12692                }
12693            }
12694            #[automatically_derived]
12695            #[doc(hidden)]
12696            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
12697                fn from(value: pauseReturn) -> Self {
12698                    ()
12699                }
12700            }
12701            #[automatically_derived]
12702            #[doc(hidden)]
12703            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
12704                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12705                    Self {}
12706                }
12707            }
12708        }
12709        impl pauseReturn {
12710            fn _tokenize(
12711                &self,
12712            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12713                ()
12714            }
12715        }
12716        #[automatically_derived]
12717        impl alloy_sol_types::SolCall for pauseCall {
12718            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12719            type Token<'a> = <Self::Parameters<
12720                'a,
12721            > as alloy_sol_types::SolType>::Token<'a>;
12722            type Return = pauseReturn;
12723            type ReturnTuple<'a> = ();
12724            type ReturnToken<'a> = <Self::ReturnTuple<
12725                'a,
12726            > as alloy_sol_types::SolType>::Token<'a>;
12727            const SIGNATURE: &'static str = "pause(uint256)";
12728            const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8];
12729            #[inline]
12730            fn new<'a>(
12731                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12732            ) -> Self {
12733                tuple.into()
12734            }
12735            #[inline]
12736            fn tokenize(&self) -> Self::Token<'_> {
12737                (
12738                    <alloy::sol_types::sol_data::Uint<
12739                        256,
12740                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
12741                )
12742            }
12743            #[inline]
12744            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12745                pauseReturn::_tokenize(ret)
12746            }
12747            #[inline]
12748            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12749                <Self::ReturnTuple<
12750                    '_,
12751                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12752                    .map(Into::into)
12753            }
12754            #[inline]
12755            fn abi_decode_returns_validate(
12756                data: &[u8],
12757            ) -> alloy_sol_types::Result<Self::Return> {
12758                <Self::ReturnTuple<
12759                    '_,
12760                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12761                    .map(Into::into)
12762            }
12763        }
12764    };
12765    #[derive(serde::Serialize, serde::Deserialize)]
12766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12767    /**Function with signature `pauseAll()` and selector `0x595c6a67`.
12768```solidity
12769function pauseAll() external;
12770```*/
12771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12772    #[derive(Clone)]
12773    pub struct pauseAllCall;
12774    ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function.
12775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12776    #[derive(Clone)]
12777    pub struct pauseAllReturn {}
12778    #[allow(
12779        non_camel_case_types,
12780        non_snake_case,
12781        clippy::pub_underscore_fields,
12782        clippy::style
12783    )]
12784    const _: () = {
12785        use alloy::sol_types as alloy_sol_types;
12786        {
12787            #[doc(hidden)]
12788            type UnderlyingSolTuple<'a> = ();
12789            #[doc(hidden)]
12790            type UnderlyingRustTuple<'a> = ();
12791            #[cfg(test)]
12792            #[allow(dead_code, unreachable_patterns)]
12793            fn _type_assertion(
12794                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12795            ) {
12796                match _t {
12797                    alloy_sol_types::private::AssertTypeEq::<
12798                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12799                    >(_) => {}
12800                }
12801            }
12802            #[automatically_derived]
12803            #[doc(hidden)]
12804            impl ::core::convert::From<pauseAllCall> for UnderlyingRustTuple<'_> {
12805                fn from(value: pauseAllCall) -> Self {
12806                    ()
12807                }
12808            }
12809            #[automatically_derived]
12810            #[doc(hidden)]
12811            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllCall {
12812                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12813                    Self
12814                }
12815            }
12816        }
12817        {
12818            #[doc(hidden)]
12819            type UnderlyingSolTuple<'a> = ();
12820            #[doc(hidden)]
12821            type UnderlyingRustTuple<'a> = ();
12822            #[cfg(test)]
12823            #[allow(dead_code, unreachable_patterns)]
12824            fn _type_assertion(
12825                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12826            ) {
12827                match _t {
12828                    alloy_sol_types::private::AssertTypeEq::<
12829                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12830                    >(_) => {}
12831                }
12832            }
12833            #[automatically_derived]
12834            #[doc(hidden)]
12835            impl ::core::convert::From<pauseAllReturn> for UnderlyingRustTuple<'_> {
12836                fn from(value: pauseAllReturn) -> Self {
12837                    ()
12838                }
12839            }
12840            #[automatically_derived]
12841            #[doc(hidden)]
12842            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllReturn {
12843                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12844                    Self {}
12845                }
12846            }
12847        }
12848        impl pauseAllReturn {
12849            fn _tokenize(
12850                &self,
12851            ) -> <pauseAllCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12852                ()
12853            }
12854        }
12855        #[automatically_derived]
12856        impl alloy_sol_types::SolCall for pauseAllCall {
12857            type Parameters<'a> = ();
12858            type Token<'a> = <Self::Parameters<
12859                'a,
12860            > as alloy_sol_types::SolType>::Token<'a>;
12861            type Return = pauseAllReturn;
12862            type ReturnTuple<'a> = ();
12863            type ReturnToken<'a> = <Self::ReturnTuple<
12864                'a,
12865            > as alloy_sol_types::SolType>::Token<'a>;
12866            const SIGNATURE: &'static str = "pauseAll()";
12867            const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8];
12868            #[inline]
12869            fn new<'a>(
12870                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12871            ) -> Self {
12872                tuple.into()
12873            }
12874            #[inline]
12875            fn tokenize(&self) -> Self::Token<'_> {
12876                ()
12877            }
12878            #[inline]
12879            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12880                pauseAllReturn::_tokenize(ret)
12881            }
12882            #[inline]
12883            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12884                <Self::ReturnTuple<
12885                    '_,
12886                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12887                    .map(Into::into)
12888            }
12889            #[inline]
12890            fn abi_decode_returns_validate(
12891                data: &[u8],
12892            ) -> alloy_sol_types::Result<Self::Return> {
12893                <Self::ReturnTuple<
12894                    '_,
12895                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12896                    .map(Into::into)
12897            }
12898        }
12899    };
12900    #[derive(serde::Serialize, serde::Deserialize)]
12901    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12902    /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`.
12903```solidity
12904function paused(uint8 index) external view returns (bool);
12905```*/
12906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12907    #[derive(Clone)]
12908    pub struct paused_0Call {
12909        #[allow(missing_docs)]
12910        pub index: u8,
12911    }
12912    #[derive(serde::Serialize, serde::Deserialize)]
12913    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12914    ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function.
12915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12916    #[derive(Clone)]
12917    pub struct paused_0Return {
12918        #[allow(missing_docs)]
12919        pub _0: bool,
12920    }
12921    #[allow(
12922        non_camel_case_types,
12923        non_snake_case,
12924        clippy::pub_underscore_fields,
12925        clippy::style
12926    )]
12927    const _: () = {
12928        use alloy::sol_types as alloy_sol_types;
12929        {
12930            #[doc(hidden)]
12931            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
12932            #[doc(hidden)]
12933            type UnderlyingRustTuple<'a> = (u8,);
12934            #[cfg(test)]
12935            #[allow(dead_code, unreachable_patterns)]
12936            fn _type_assertion(
12937                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12938            ) {
12939                match _t {
12940                    alloy_sol_types::private::AssertTypeEq::<
12941                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12942                    >(_) => {}
12943                }
12944            }
12945            #[automatically_derived]
12946            #[doc(hidden)]
12947            impl ::core::convert::From<paused_0Call> for UnderlyingRustTuple<'_> {
12948                fn from(value: paused_0Call) -> Self {
12949                    (value.index,)
12950                }
12951            }
12952            #[automatically_derived]
12953            #[doc(hidden)]
12954            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Call {
12955                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12956                    Self { index: tuple.0 }
12957                }
12958            }
12959        }
12960        {
12961            #[doc(hidden)]
12962            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12963            #[doc(hidden)]
12964            type UnderlyingRustTuple<'a> = (bool,);
12965            #[cfg(test)]
12966            #[allow(dead_code, unreachable_patterns)]
12967            fn _type_assertion(
12968                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12969            ) {
12970                match _t {
12971                    alloy_sol_types::private::AssertTypeEq::<
12972                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12973                    >(_) => {}
12974                }
12975            }
12976            #[automatically_derived]
12977            #[doc(hidden)]
12978            impl ::core::convert::From<paused_0Return> for UnderlyingRustTuple<'_> {
12979                fn from(value: paused_0Return) -> Self {
12980                    (value._0,)
12981                }
12982            }
12983            #[automatically_derived]
12984            #[doc(hidden)]
12985            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Return {
12986                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12987                    Self { _0: tuple.0 }
12988                }
12989            }
12990        }
12991        #[automatically_derived]
12992        impl alloy_sol_types::SolCall for paused_0Call {
12993            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
12994            type Token<'a> = <Self::Parameters<
12995                'a,
12996            > as alloy_sol_types::SolType>::Token<'a>;
12997            type Return = bool;
12998            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12999            type ReturnToken<'a> = <Self::ReturnTuple<
13000                'a,
13001            > as alloy_sol_types::SolType>::Token<'a>;
13002            const SIGNATURE: &'static str = "paused(uint8)";
13003            const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8];
13004            #[inline]
13005            fn new<'a>(
13006                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13007            ) -> Self {
13008                tuple.into()
13009            }
13010            #[inline]
13011            fn tokenize(&self) -> Self::Token<'_> {
13012                (
13013                    <alloy::sol_types::sol_data::Uint<
13014                        8,
13015                    > as alloy_sol_types::SolType>::tokenize(&self.index),
13016                )
13017            }
13018            #[inline]
13019            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13020                (
13021                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
13022                        ret,
13023                    ),
13024                )
13025            }
13026            #[inline]
13027            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13028                <Self::ReturnTuple<
13029                    '_,
13030                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13031                    .map(|r| {
13032                        let r: paused_0Return = r.into();
13033                        r._0
13034                    })
13035            }
13036            #[inline]
13037            fn abi_decode_returns_validate(
13038                data: &[u8],
13039            ) -> alloy_sol_types::Result<Self::Return> {
13040                <Self::ReturnTuple<
13041                    '_,
13042                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13043                    .map(|r| {
13044                        let r: paused_0Return = r.into();
13045                        r._0
13046                    })
13047            }
13048        }
13049    };
13050    #[derive(serde::Serialize, serde::Deserialize)]
13051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13052    /**Function with signature `paused()` and selector `0x5c975abb`.
13053```solidity
13054function paused() external view returns (uint256);
13055```*/
13056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13057    #[derive(Clone)]
13058    pub struct paused_1Call;
13059    #[derive(serde::Serialize, serde::Deserialize)]
13060    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13061    ///Container type for the return parameters of the [`paused()`](paused_1Call) function.
13062    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13063    #[derive(Clone)]
13064    pub struct paused_1Return {
13065        #[allow(missing_docs)]
13066        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13067    }
13068    #[allow(
13069        non_camel_case_types,
13070        non_snake_case,
13071        clippy::pub_underscore_fields,
13072        clippy::style
13073    )]
13074    const _: () = {
13075        use alloy::sol_types as alloy_sol_types;
13076        {
13077            #[doc(hidden)]
13078            type UnderlyingSolTuple<'a> = ();
13079            #[doc(hidden)]
13080            type UnderlyingRustTuple<'a> = ();
13081            #[cfg(test)]
13082            #[allow(dead_code, unreachable_patterns)]
13083            fn _type_assertion(
13084                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13085            ) {
13086                match _t {
13087                    alloy_sol_types::private::AssertTypeEq::<
13088                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13089                    >(_) => {}
13090                }
13091            }
13092            #[automatically_derived]
13093            #[doc(hidden)]
13094            impl ::core::convert::From<paused_1Call> for UnderlyingRustTuple<'_> {
13095                fn from(value: paused_1Call) -> Self {
13096                    ()
13097                }
13098            }
13099            #[automatically_derived]
13100            #[doc(hidden)]
13101            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Call {
13102                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13103                    Self
13104                }
13105            }
13106        }
13107        {
13108            #[doc(hidden)]
13109            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13110            #[doc(hidden)]
13111            type UnderlyingRustTuple<'a> = (
13112                alloy::sol_types::private::primitives::aliases::U256,
13113            );
13114            #[cfg(test)]
13115            #[allow(dead_code, unreachable_patterns)]
13116            fn _type_assertion(
13117                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13118            ) {
13119                match _t {
13120                    alloy_sol_types::private::AssertTypeEq::<
13121                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13122                    >(_) => {}
13123                }
13124            }
13125            #[automatically_derived]
13126            #[doc(hidden)]
13127            impl ::core::convert::From<paused_1Return> for UnderlyingRustTuple<'_> {
13128                fn from(value: paused_1Return) -> Self {
13129                    (value._0,)
13130                }
13131            }
13132            #[automatically_derived]
13133            #[doc(hidden)]
13134            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Return {
13135                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13136                    Self { _0: tuple.0 }
13137                }
13138            }
13139        }
13140        #[automatically_derived]
13141        impl alloy_sol_types::SolCall for paused_1Call {
13142            type Parameters<'a> = ();
13143            type Token<'a> = <Self::Parameters<
13144                'a,
13145            > as alloy_sol_types::SolType>::Token<'a>;
13146            type Return = alloy::sol_types::private::primitives::aliases::U256;
13147            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13148            type ReturnToken<'a> = <Self::ReturnTuple<
13149                'a,
13150            > as alloy_sol_types::SolType>::Token<'a>;
13151            const SIGNATURE: &'static str = "paused()";
13152            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
13153            #[inline]
13154            fn new<'a>(
13155                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13156            ) -> Self {
13157                tuple.into()
13158            }
13159            #[inline]
13160            fn tokenize(&self) -> Self::Token<'_> {
13161                ()
13162            }
13163            #[inline]
13164            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13165                (
13166                    <alloy::sol_types::sol_data::Uint<
13167                        256,
13168                    > as alloy_sol_types::SolType>::tokenize(ret),
13169                )
13170            }
13171            #[inline]
13172            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13173                <Self::ReturnTuple<
13174                    '_,
13175                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13176                    .map(|r| {
13177                        let r: paused_1Return = r.into();
13178                        r._0
13179                    })
13180            }
13181            #[inline]
13182            fn abi_decode_returns_validate(
13183                data: &[u8],
13184            ) -> alloy_sol_types::Result<Self::Return> {
13185                <Self::ReturnTuple<
13186                    '_,
13187                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13188                    .map(|r| {
13189                        let r: paused_1Return = r.into();
13190                        r._0
13191                    })
13192            }
13193        }
13194    };
13195    #[derive(serde::Serialize, serde::Deserialize)]
13196    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13197    /**Function with signature `pauserRegistry()` and selector `0x886f1195`.
13198```solidity
13199function pauserRegistry() external view returns (address);
13200```*/
13201    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13202    #[derive(Clone)]
13203    pub struct pauserRegistryCall;
13204    #[derive(serde::Serialize, serde::Deserialize)]
13205    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13206    ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function.
13207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13208    #[derive(Clone)]
13209    pub struct pauserRegistryReturn {
13210        #[allow(missing_docs)]
13211        pub _0: alloy::sol_types::private::Address,
13212    }
13213    #[allow(
13214        non_camel_case_types,
13215        non_snake_case,
13216        clippy::pub_underscore_fields,
13217        clippy::style
13218    )]
13219    const _: () = {
13220        use alloy::sol_types as alloy_sol_types;
13221        {
13222            #[doc(hidden)]
13223            type UnderlyingSolTuple<'a> = ();
13224            #[doc(hidden)]
13225            type UnderlyingRustTuple<'a> = ();
13226            #[cfg(test)]
13227            #[allow(dead_code, unreachable_patterns)]
13228            fn _type_assertion(
13229                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13230            ) {
13231                match _t {
13232                    alloy_sol_types::private::AssertTypeEq::<
13233                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13234                    >(_) => {}
13235                }
13236            }
13237            #[automatically_derived]
13238            #[doc(hidden)]
13239            impl ::core::convert::From<pauserRegistryCall> for UnderlyingRustTuple<'_> {
13240                fn from(value: pauserRegistryCall) -> Self {
13241                    ()
13242                }
13243            }
13244            #[automatically_derived]
13245            #[doc(hidden)]
13246            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryCall {
13247                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13248                    Self
13249                }
13250            }
13251        }
13252        {
13253            #[doc(hidden)]
13254            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13255            #[doc(hidden)]
13256            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13257            #[cfg(test)]
13258            #[allow(dead_code, unreachable_patterns)]
13259            fn _type_assertion(
13260                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13261            ) {
13262                match _t {
13263                    alloy_sol_types::private::AssertTypeEq::<
13264                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13265                    >(_) => {}
13266                }
13267            }
13268            #[automatically_derived]
13269            #[doc(hidden)]
13270            impl ::core::convert::From<pauserRegistryReturn>
13271            for UnderlyingRustTuple<'_> {
13272                fn from(value: pauserRegistryReturn) -> Self {
13273                    (value._0,)
13274                }
13275            }
13276            #[automatically_derived]
13277            #[doc(hidden)]
13278            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13279            for pauserRegistryReturn {
13280                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13281                    Self { _0: tuple.0 }
13282                }
13283            }
13284        }
13285        #[automatically_derived]
13286        impl alloy_sol_types::SolCall for pauserRegistryCall {
13287            type Parameters<'a> = ();
13288            type Token<'a> = <Self::Parameters<
13289                'a,
13290            > as alloy_sol_types::SolType>::Token<'a>;
13291            type Return = alloy::sol_types::private::Address;
13292            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
13293            type ReturnToken<'a> = <Self::ReturnTuple<
13294                'a,
13295            > as alloy_sol_types::SolType>::Token<'a>;
13296            const SIGNATURE: &'static str = "pauserRegistry()";
13297            const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8];
13298            #[inline]
13299            fn new<'a>(
13300                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13301            ) -> Self {
13302                tuple.into()
13303            }
13304            #[inline]
13305            fn tokenize(&self) -> Self::Token<'_> {
13306                ()
13307            }
13308            #[inline]
13309            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13310                (
13311                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13312                        ret,
13313                    ),
13314                )
13315            }
13316            #[inline]
13317            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13318                <Self::ReturnTuple<
13319                    '_,
13320                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13321                    .map(|r| {
13322                        let r: pauserRegistryReturn = r.into();
13323                        r._0
13324                    })
13325            }
13326            #[inline]
13327            fn abi_decode_returns_validate(
13328                data: &[u8],
13329            ) -> alloy_sol_types::Result<Self::Return> {
13330                <Self::ReturnTuple<
13331                    '_,
13332                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13333                    .map(|r| {
13334                        let r: pauserRegistryReturn = r.into();
13335                        r._0
13336                    })
13337            }
13338        }
13339    };
13340    #[derive(serde::Serialize, serde::Deserialize)]
13341    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13342    /**Function with signature `pendingWithdrawals(bytes32)` and selector `0xb7f06ebe`.
13343```solidity
13344function pendingWithdrawals(bytes32 withdrawalRoot) external view returns (bool pending);
13345```*/
13346    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13347    #[derive(Clone)]
13348    pub struct pendingWithdrawalsCall {
13349        #[allow(missing_docs)]
13350        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
13351    }
13352    #[derive(serde::Serialize, serde::Deserialize)]
13353    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13354    ///Container type for the return parameters of the [`pendingWithdrawals(bytes32)`](pendingWithdrawalsCall) function.
13355    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13356    #[derive(Clone)]
13357    pub struct pendingWithdrawalsReturn {
13358        #[allow(missing_docs)]
13359        pub pending: bool,
13360    }
13361    #[allow(
13362        non_camel_case_types,
13363        non_snake_case,
13364        clippy::pub_underscore_fields,
13365        clippy::style
13366    )]
13367    const _: () = {
13368        use alloy::sol_types as alloy_sol_types;
13369        {
13370            #[doc(hidden)]
13371            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13372            #[doc(hidden)]
13373            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13374            #[cfg(test)]
13375            #[allow(dead_code, unreachable_patterns)]
13376            fn _type_assertion(
13377                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13378            ) {
13379                match _t {
13380                    alloy_sol_types::private::AssertTypeEq::<
13381                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13382                    >(_) => {}
13383                }
13384            }
13385            #[automatically_derived]
13386            #[doc(hidden)]
13387            impl ::core::convert::From<pendingWithdrawalsCall>
13388            for UnderlyingRustTuple<'_> {
13389                fn from(value: pendingWithdrawalsCall) -> Self {
13390                    (value.withdrawalRoot,)
13391                }
13392            }
13393            #[automatically_derived]
13394            #[doc(hidden)]
13395            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13396            for pendingWithdrawalsCall {
13397                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13398                    Self { withdrawalRoot: tuple.0 }
13399                }
13400            }
13401        }
13402        {
13403            #[doc(hidden)]
13404            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
13405            #[doc(hidden)]
13406            type UnderlyingRustTuple<'a> = (bool,);
13407            #[cfg(test)]
13408            #[allow(dead_code, unreachable_patterns)]
13409            fn _type_assertion(
13410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13411            ) {
13412                match _t {
13413                    alloy_sol_types::private::AssertTypeEq::<
13414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13415                    >(_) => {}
13416                }
13417            }
13418            #[automatically_derived]
13419            #[doc(hidden)]
13420            impl ::core::convert::From<pendingWithdrawalsReturn>
13421            for UnderlyingRustTuple<'_> {
13422                fn from(value: pendingWithdrawalsReturn) -> Self {
13423                    (value.pending,)
13424                }
13425            }
13426            #[automatically_derived]
13427            #[doc(hidden)]
13428            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13429            for pendingWithdrawalsReturn {
13430                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13431                    Self { pending: tuple.0 }
13432                }
13433            }
13434        }
13435        #[automatically_derived]
13436        impl alloy_sol_types::SolCall for pendingWithdrawalsCall {
13437            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13438            type Token<'a> = <Self::Parameters<
13439                'a,
13440            > as alloy_sol_types::SolType>::Token<'a>;
13441            type Return = bool;
13442            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
13443            type ReturnToken<'a> = <Self::ReturnTuple<
13444                'a,
13445            > as alloy_sol_types::SolType>::Token<'a>;
13446            const SIGNATURE: &'static str = "pendingWithdrawals(bytes32)";
13447            const SELECTOR: [u8; 4] = [183u8, 240u8, 110u8, 190u8];
13448            #[inline]
13449            fn new<'a>(
13450                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13451            ) -> Self {
13452                tuple.into()
13453            }
13454            #[inline]
13455            fn tokenize(&self) -> Self::Token<'_> {
13456                (
13457                    <alloy::sol_types::sol_data::FixedBytes<
13458                        32,
13459                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
13460                )
13461            }
13462            #[inline]
13463            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13464                (
13465                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
13466                        ret,
13467                    ),
13468                )
13469            }
13470            #[inline]
13471            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13472                <Self::ReturnTuple<
13473                    '_,
13474                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13475                    .map(|r| {
13476                        let r: pendingWithdrawalsReturn = r.into();
13477                        r.pending
13478                    })
13479            }
13480            #[inline]
13481            fn abi_decode_returns_validate(
13482                data: &[u8],
13483            ) -> alloy_sol_types::Result<Self::Return> {
13484                <Self::ReturnTuple<
13485                    '_,
13486                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13487                    .map(|r| {
13488                        let r: pendingWithdrawalsReturn = r.into();
13489                        r.pending
13490                    })
13491            }
13492        }
13493    };
13494    #[derive(serde::Serialize, serde::Deserialize)]
13495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13496    /**Function with signature `permissionController()` and selector `0x4657e26a`.
13497```solidity
13498function permissionController() external view returns (address);
13499```*/
13500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13501    #[derive(Clone)]
13502    pub struct permissionControllerCall;
13503    #[derive(serde::Serialize, serde::Deserialize)]
13504    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13505    ///Container type for the return parameters of the [`permissionController()`](permissionControllerCall) function.
13506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13507    #[derive(Clone)]
13508    pub struct permissionControllerReturn {
13509        #[allow(missing_docs)]
13510        pub _0: alloy::sol_types::private::Address,
13511    }
13512    #[allow(
13513        non_camel_case_types,
13514        non_snake_case,
13515        clippy::pub_underscore_fields,
13516        clippy::style
13517    )]
13518    const _: () = {
13519        use alloy::sol_types as alloy_sol_types;
13520        {
13521            #[doc(hidden)]
13522            type UnderlyingSolTuple<'a> = ();
13523            #[doc(hidden)]
13524            type UnderlyingRustTuple<'a> = ();
13525            #[cfg(test)]
13526            #[allow(dead_code, unreachable_patterns)]
13527            fn _type_assertion(
13528                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13529            ) {
13530                match _t {
13531                    alloy_sol_types::private::AssertTypeEq::<
13532                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13533                    >(_) => {}
13534                }
13535            }
13536            #[automatically_derived]
13537            #[doc(hidden)]
13538            impl ::core::convert::From<permissionControllerCall>
13539            for UnderlyingRustTuple<'_> {
13540                fn from(value: permissionControllerCall) -> Self {
13541                    ()
13542                }
13543            }
13544            #[automatically_derived]
13545            #[doc(hidden)]
13546            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13547            for permissionControllerCall {
13548                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13549                    Self
13550                }
13551            }
13552        }
13553        {
13554            #[doc(hidden)]
13555            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13556            #[doc(hidden)]
13557            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13558            #[cfg(test)]
13559            #[allow(dead_code, unreachable_patterns)]
13560            fn _type_assertion(
13561                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13562            ) {
13563                match _t {
13564                    alloy_sol_types::private::AssertTypeEq::<
13565                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13566                    >(_) => {}
13567                }
13568            }
13569            #[automatically_derived]
13570            #[doc(hidden)]
13571            impl ::core::convert::From<permissionControllerReturn>
13572            for UnderlyingRustTuple<'_> {
13573                fn from(value: permissionControllerReturn) -> Self {
13574                    (value._0,)
13575                }
13576            }
13577            #[automatically_derived]
13578            #[doc(hidden)]
13579            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13580            for permissionControllerReturn {
13581                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13582                    Self { _0: tuple.0 }
13583                }
13584            }
13585        }
13586        #[automatically_derived]
13587        impl alloy_sol_types::SolCall for permissionControllerCall {
13588            type Parameters<'a> = ();
13589            type Token<'a> = <Self::Parameters<
13590                'a,
13591            > as alloy_sol_types::SolType>::Token<'a>;
13592            type Return = alloy::sol_types::private::Address;
13593            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
13594            type ReturnToken<'a> = <Self::ReturnTuple<
13595                'a,
13596            > as alloy_sol_types::SolType>::Token<'a>;
13597            const SIGNATURE: &'static str = "permissionController()";
13598            const SELECTOR: [u8; 4] = [70u8, 87u8, 226u8, 106u8];
13599            #[inline]
13600            fn new<'a>(
13601                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13602            ) -> Self {
13603                tuple.into()
13604            }
13605            #[inline]
13606            fn tokenize(&self) -> Self::Token<'_> {
13607                ()
13608            }
13609            #[inline]
13610            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13611                (
13612                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13613                        ret,
13614                    ),
13615                )
13616            }
13617            #[inline]
13618            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13619                <Self::ReturnTuple<
13620                    '_,
13621                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13622                    .map(|r| {
13623                        let r: permissionControllerReturn = r.into();
13624                        r._0
13625                    })
13626            }
13627            #[inline]
13628            fn abi_decode_returns_validate(
13629                data: &[u8],
13630            ) -> alloy_sol_types::Result<Self::Return> {
13631                <Self::ReturnTuple<
13632                    '_,
13633                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13634                    .map(|r| {
13635                        let r: permissionControllerReturn = r.into();
13636                        r._0
13637                    })
13638            }
13639        }
13640    };
13641    #[derive(serde::Serialize, serde::Deserialize)]
13642    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13643    /**Function with signature `queueWithdrawals((address[],uint256[],address)[])` and selector `0x0dd8dd02`.
13644```solidity
13645function queueWithdrawals(IDelegationManagerTypes.QueuedWithdrawalParams[] memory params) external returns (bytes32[] memory);
13646```*/
13647    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13648    #[derive(Clone)]
13649    pub struct queueWithdrawalsCall {
13650        #[allow(missing_docs)]
13651        pub params: alloy::sol_types::private::Vec<
13652            <IDelegationManagerTypes::QueuedWithdrawalParams as alloy::sol_types::SolType>::RustType,
13653        >,
13654    }
13655    #[derive(serde::Serialize, serde::Deserialize)]
13656    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13657    ///Container type for the return parameters of the [`queueWithdrawals((address[],uint256[],address)[])`](queueWithdrawalsCall) function.
13658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13659    #[derive(Clone)]
13660    pub struct queueWithdrawalsReturn {
13661        #[allow(missing_docs)]
13662        pub _0: alloy::sol_types::private::Vec<
13663            alloy::sol_types::private::FixedBytes<32>,
13664        >,
13665    }
13666    #[allow(
13667        non_camel_case_types,
13668        non_snake_case,
13669        clippy::pub_underscore_fields,
13670        clippy::style
13671    )]
13672    const _: () = {
13673        use alloy::sol_types as alloy_sol_types;
13674        {
13675            #[doc(hidden)]
13676            type UnderlyingSolTuple<'a> = (
13677                alloy::sol_types::sol_data::Array<
13678                    IDelegationManagerTypes::QueuedWithdrawalParams,
13679                >,
13680            );
13681            #[doc(hidden)]
13682            type UnderlyingRustTuple<'a> = (
13683                alloy::sol_types::private::Vec<
13684                    <IDelegationManagerTypes::QueuedWithdrawalParams as alloy::sol_types::SolType>::RustType,
13685                >,
13686            );
13687            #[cfg(test)]
13688            #[allow(dead_code, unreachable_patterns)]
13689            fn _type_assertion(
13690                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13691            ) {
13692                match _t {
13693                    alloy_sol_types::private::AssertTypeEq::<
13694                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13695                    >(_) => {}
13696                }
13697            }
13698            #[automatically_derived]
13699            #[doc(hidden)]
13700            impl ::core::convert::From<queueWithdrawalsCall>
13701            for UnderlyingRustTuple<'_> {
13702                fn from(value: queueWithdrawalsCall) -> Self {
13703                    (value.params,)
13704                }
13705            }
13706            #[automatically_derived]
13707            #[doc(hidden)]
13708            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13709            for queueWithdrawalsCall {
13710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13711                    Self { params: tuple.0 }
13712                }
13713            }
13714        }
13715        {
13716            #[doc(hidden)]
13717            type UnderlyingSolTuple<'a> = (
13718                alloy::sol_types::sol_data::Array<
13719                    alloy::sol_types::sol_data::FixedBytes<32>,
13720                >,
13721            );
13722            #[doc(hidden)]
13723            type UnderlyingRustTuple<'a> = (
13724                alloy::sol_types::private::Vec<
13725                    alloy::sol_types::private::FixedBytes<32>,
13726                >,
13727            );
13728            #[cfg(test)]
13729            #[allow(dead_code, unreachable_patterns)]
13730            fn _type_assertion(
13731                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13732            ) {
13733                match _t {
13734                    alloy_sol_types::private::AssertTypeEq::<
13735                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13736                    >(_) => {}
13737                }
13738            }
13739            #[automatically_derived]
13740            #[doc(hidden)]
13741            impl ::core::convert::From<queueWithdrawalsReturn>
13742            for UnderlyingRustTuple<'_> {
13743                fn from(value: queueWithdrawalsReturn) -> Self {
13744                    (value._0,)
13745                }
13746            }
13747            #[automatically_derived]
13748            #[doc(hidden)]
13749            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13750            for queueWithdrawalsReturn {
13751                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13752                    Self { _0: tuple.0 }
13753                }
13754            }
13755        }
13756        #[automatically_derived]
13757        impl alloy_sol_types::SolCall for queueWithdrawalsCall {
13758            type Parameters<'a> = (
13759                alloy::sol_types::sol_data::Array<
13760                    IDelegationManagerTypes::QueuedWithdrawalParams,
13761                >,
13762            );
13763            type Token<'a> = <Self::Parameters<
13764                'a,
13765            > as alloy_sol_types::SolType>::Token<'a>;
13766            type Return = alloy::sol_types::private::Vec<
13767                alloy::sol_types::private::FixedBytes<32>,
13768            >;
13769            type ReturnTuple<'a> = (
13770                alloy::sol_types::sol_data::Array<
13771                    alloy::sol_types::sol_data::FixedBytes<32>,
13772                >,
13773            );
13774            type ReturnToken<'a> = <Self::ReturnTuple<
13775                'a,
13776            > as alloy_sol_types::SolType>::Token<'a>;
13777            const SIGNATURE: &'static str = "queueWithdrawals((address[],uint256[],address)[])";
13778            const SELECTOR: [u8; 4] = [13u8, 216u8, 221u8, 2u8];
13779            #[inline]
13780            fn new<'a>(
13781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13782            ) -> Self {
13783                tuple.into()
13784            }
13785            #[inline]
13786            fn tokenize(&self) -> Self::Token<'_> {
13787                (
13788                    <alloy::sol_types::sol_data::Array<
13789                        IDelegationManagerTypes::QueuedWithdrawalParams,
13790                    > as alloy_sol_types::SolType>::tokenize(&self.params),
13791                )
13792            }
13793            #[inline]
13794            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13795                (
13796                    <alloy::sol_types::sol_data::Array<
13797                        alloy::sol_types::sol_data::FixedBytes<32>,
13798                    > as alloy_sol_types::SolType>::tokenize(ret),
13799                )
13800            }
13801            #[inline]
13802            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13803                <Self::ReturnTuple<
13804                    '_,
13805                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13806                    .map(|r| {
13807                        let r: queueWithdrawalsReturn = r.into();
13808                        r._0
13809                    })
13810            }
13811            #[inline]
13812            fn abi_decode_returns_validate(
13813                data: &[u8],
13814            ) -> alloy_sol_types::Result<Self::Return> {
13815                <Self::ReturnTuple<
13816                    '_,
13817                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13818                    .map(|r| {
13819                        let r: queueWithdrawalsReturn = r.into();
13820                        r._0
13821                    })
13822            }
13823        }
13824    };
13825    #[derive(serde::Serialize, serde::Deserialize)]
13826    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13827    /**Function with signature `queuedWithdrawals(bytes32)` and selector `0x99f5371b`.
13828```solidity
13829function queuedWithdrawals(bytes32 withdrawalRoot) external view returns (IDelegationManagerTypes.Withdrawal memory withdrawal);
13830```*/
13831    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13832    #[derive(Clone)]
13833    pub struct queuedWithdrawalsCall {
13834        #[allow(missing_docs)]
13835        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
13836    }
13837    #[derive(serde::Serialize, serde::Deserialize)]
13838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13839    ///Container type for the return parameters of the [`queuedWithdrawals(bytes32)`](queuedWithdrawalsCall) function.
13840    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13841    #[derive(Clone)]
13842    pub struct queuedWithdrawalsReturn {
13843        #[allow(missing_docs)]
13844        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
13845    }
13846    #[allow(
13847        non_camel_case_types,
13848        non_snake_case,
13849        clippy::pub_underscore_fields,
13850        clippy::style
13851    )]
13852    const _: () = {
13853        use alloy::sol_types as alloy_sol_types;
13854        {
13855            #[doc(hidden)]
13856            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13857            #[doc(hidden)]
13858            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
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<queuedWithdrawalsCall>
13873            for UnderlyingRustTuple<'_> {
13874                fn from(value: queuedWithdrawalsCall) -> Self {
13875                    (value.withdrawalRoot,)
13876                }
13877            }
13878            #[automatically_derived]
13879            #[doc(hidden)]
13880            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13881            for queuedWithdrawalsCall {
13882                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13883                    Self { withdrawalRoot: tuple.0 }
13884                }
13885            }
13886        }
13887        {
13888            #[doc(hidden)]
13889            type UnderlyingSolTuple<'a> = (IDelegationManagerTypes::Withdrawal,);
13890            #[doc(hidden)]
13891            type UnderlyingRustTuple<'a> = (
13892                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
13893            );
13894            #[cfg(test)]
13895            #[allow(dead_code, unreachable_patterns)]
13896            fn _type_assertion(
13897                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13898            ) {
13899                match _t {
13900                    alloy_sol_types::private::AssertTypeEq::<
13901                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13902                    >(_) => {}
13903                }
13904            }
13905            #[automatically_derived]
13906            #[doc(hidden)]
13907            impl ::core::convert::From<queuedWithdrawalsReturn>
13908            for UnderlyingRustTuple<'_> {
13909                fn from(value: queuedWithdrawalsReturn) -> Self {
13910                    (value.withdrawal,)
13911                }
13912            }
13913            #[automatically_derived]
13914            #[doc(hidden)]
13915            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13916            for queuedWithdrawalsReturn {
13917                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13918                    Self { withdrawal: tuple.0 }
13919                }
13920            }
13921        }
13922        #[automatically_derived]
13923        impl alloy_sol_types::SolCall for queuedWithdrawalsCall {
13924            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13925            type Token<'a> = <Self::Parameters<
13926                'a,
13927            > as alloy_sol_types::SolType>::Token<'a>;
13928            type Return = <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType;
13929            type ReturnTuple<'a> = (IDelegationManagerTypes::Withdrawal,);
13930            type ReturnToken<'a> = <Self::ReturnTuple<
13931                'a,
13932            > as alloy_sol_types::SolType>::Token<'a>;
13933            const SIGNATURE: &'static str = "queuedWithdrawals(bytes32)";
13934            const SELECTOR: [u8; 4] = [153u8, 245u8, 55u8, 27u8];
13935            #[inline]
13936            fn new<'a>(
13937                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13938            ) -> Self {
13939                tuple.into()
13940            }
13941            #[inline]
13942            fn tokenize(&self) -> Self::Token<'_> {
13943                (
13944                    <alloy::sol_types::sol_data::FixedBytes<
13945                        32,
13946                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
13947                )
13948            }
13949            #[inline]
13950            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13951                (
13952                    <IDelegationManagerTypes::Withdrawal as alloy_sol_types::SolType>::tokenize(
13953                        ret,
13954                    ),
13955                )
13956            }
13957            #[inline]
13958            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13959                <Self::ReturnTuple<
13960                    '_,
13961                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13962                    .map(|r| {
13963                        let r: queuedWithdrawalsReturn = r.into();
13964                        r.withdrawal
13965                    })
13966            }
13967            #[inline]
13968            fn abi_decode_returns_validate(
13969                data: &[u8],
13970            ) -> alloy_sol_types::Result<Self::Return> {
13971                <Self::ReturnTuple<
13972                    '_,
13973                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13974                    .map(|r| {
13975                        let r: queuedWithdrawalsReturn = r.into();
13976                        r.withdrawal
13977                    })
13978            }
13979        }
13980    };
13981    #[derive(serde::Serialize, serde::Deserialize)]
13982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13983    /**Function with signature `redelegate(address,(bytes,uint256),bytes32)` and selector `0xa33a3433`.
13984```solidity
13985function redelegate(address newOperator, ISignatureUtilsMixinTypes.SignatureWithExpiry memory newOperatorApproverSig, bytes32 approverSalt) external returns (bytes32[] memory withdrawalRoots);
13986```*/
13987    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13988    #[derive(Clone)]
13989    pub struct redelegateCall {
13990        #[allow(missing_docs)]
13991        pub newOperator: alloy::sol_types::private::Address,
13992        #[allow(missing_docs)]
13993        pub newOperatorApproverSig: <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
13994        #[allow(missing_docs)]
13995        pub approverSalt: alloy::sol_types::private::FixedBytes<32>,
13996    }
13997    #[derive(serde::Serialize, serde::Deserialize)]
13998    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13999    ///Container type for the return parameters of the [`redelegate(address,(bytes,uint256),bytes32)`](redelegateCall) function.
14000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14001    #[derive(Clone)]
14002    pub struct redelegateReturn {
14003        #[allow(missing_docs)]
14004        pub withdrawalRoots: alloy::sol_types::private::Vec<
14005            alloy::sol_types::private::FixedBytes<32>,
14006        >,
14007    }
14008    #[allow(
14009        non_camel_case_types,
14010        non_snake_case,
14011        clippy::pub_underscore_fields,
14012        clippy::style
14013    )]
14014    const _: () = {
14015        use alloy::sol_types as alloy_sol_types;
14016        {
14017            #[doc(hidden)]
14018            type UnderlyingSolTuple<'a> = (
14019                alloy::sol_types::sol_data::Address,
14020                ISignatureUtilsMixinTypes::SignatureWithExpiry,
14021                alloy::sol_types::sol_data::FixedBytes<32>,
14022            );
14023            #[doc(hidden)]
14024            type UnderlyingRustTuple<'a> = (
14025                alloy::sol_types::private::Address,
14026                <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
14027                alloy::sol_types::private::FixedBytes<32>,
14028            );
14029            #[cfg(test)]
14030            #[allow(dead_code, unreachable_patterns)]
14031            fn _type_assertion(
14032                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14033            ) {
14034                match _t {
14035                    alloy_sol_types::private::AssertTypeEq::<
14036                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14037                    >(_) => {}
14038                }
14039            }
14040            #[automatically_derived]
14041            #[doc(hidden)]
14042            impl ::core::convert::From<redelegateCall> for UnderlyingRustTuple<'_> {
14043                fn from(value: redelegateCall) -> Self {
14044                    (value.newOperator, value.newOperatorApproverSig, value.approverSalt)
14045                }
14046            }
14047            #[automatically_derived]
14048            #[doc(hidden)]
14049            impl ::core::convert::From<UnderlyingRustTuple<'_>> for redelegateCall {
14050                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14051                    Self {
14052                        newOperator: tuple.0,
14053                        newOperatorApproverSig: tuple.1,
14054                        approverSalt: tuple.2,
14055                    }
14056                }
14057            }
14058        }
14059        {
14060            #[doc(hidden)]
14061            type UnderlyingSolTuple<'a> = (
14062                alloy::sol_types::sol_data::Array<
14063                    alloy::sol_types::sol_data::FixedBytes<32>,
14064                >,
14065            );
14066            #[doc(hidden)]
14067            type UnderlyingRustTuple<'a> = (
14068                alloy::sol_types::private::Vec<
14069                    alloy::sol_types::private::FixedBytes<32>,
14070                >,
14071            );
14072            #[cfg(test)]
14073            #[allow(dead_code, unreachable_patterns)]
14074            fn _type_assertion(
14075                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14076            ) {
14077                match _t {
14078                    alloy_sol_types::private::AssertTypeEq::<
14079                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14080                    >(_) => {}
14081                }
14082            }
14083            #[automatically_derived]
14084            #[doc(hidden)]
14085            impl ::core::convert::From<redelegateReturn> for UnderlyingRustTuple<'_> {
14086                fn from(value: redelegateReturn) -> Self {
14087                    (value.withdrawalRoots,)
14088                }
14089            }
14090            #[automatically_derived]
14091            #[doc(hidden)]
14092            impl ::core::convert::From<UnderlyingRustTuple<'_>> for redelegateReturn {
14093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14094                    Self { withdrawalRoots: tuple.0 }
14095                }
14096            }
14097        }
14098        #[automatically_derived]
14099        impl alloy_sol_types::SolCall for redelegateCall {
14100            type Parameters<'a> = (
14101                alloy::sol_types::sol_data::Address,
14102                ISignatureUtilsMixinTypes::SignatureWithExpiry,
14103                alloy::sol_types::sol_data::FixedBytes<32>,
14104            );
14105            type Token<'a> = <Self::Parameters<
14106                'a,
14107            > as alloy_sol_types::SolType>::Token<'a>;
14108            type Return = alloy::sol_types::private::Vec<
14109                alloy::sol_types::private::FixedBytes<32>,
14110            >;
14111            type ReturnTuple<'a> = (
14112                alloy::sol_types::sol_data::Array<
14113                    alloy::sol_types::sol_data::FixedBytes<32>,
14114                >,
14115            );
14116            type ReturnToken<'a> = <Self::ReturnTuple<
14117                'a,
14118            > as alloy_sol_types::SolType>::Token<'a>;
14119            const SIGNATURE: &'static str = "redelegate(address,(bytes,uint256),bytes32)";
14120            const SELECTOR: [u8; 4] = [163u8, 58u8, 52u8, 51u8];
14121            #[inline]
14122            fn new<'a>(
14123                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14124            ) -> Self {
14125                tuple.into()
14126            }
14127            #[inline]
14128            fn tokenize(&self) -> Self::Token<'_> {
14129                (
14130                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14131                        &self.newOperator,
14132                    ),
14133                    <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy_sol_types::SolType>::tokenize(
14134                        &self.newOperatorApproverSig,
14135                    ),
14136                    <alloy::sol_types::sol_data::FixedBytes<
14137                        32,
14138                    > as alloy_sol_types::SolType>::tokenize(&self.approverSalt),
14139                )
14140            }
14141            #[inline]
14142            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14143                (
14144                    <alloy::sol_types::sol_data::Array<
14145                        alloy::sol_types::sol_data::FixedBytes<32>,
14146                    > as alloy_sol_types::SolType>::tokenize(ret),
14147                )
14148            }
14149            #[inline]
14150            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14151                <Self::ReturnTuple<
14152                    '_,
14153                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14154                    .map(|r| {
14155                        let r: redelegateReturn = r.into();
14156                        r.withdrawalRoots
14157                    })
14158            }
14159            #[inline]
14160            fn abi_decode_returns_validate(
14161                data: &[u8],
14162            ) -> alloy_sol_types::Result<Self::Return> {
14163                <Self::ReturnTuple<
14164                    '_,
14165                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14166                    .map(|r| {
14167                        let r: redelegateReturn = r.into();
14168                        r.withdrawalRoots
14169                    })
14170            }
14171        }
14172    };
14173    #[derive(serde::Serialize, serde::Deserialize)]
14174    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14175    /**Function with signature `registerAsOperator(address,uint32,string)` and selector `0x2aa6d888`.
14176```solidity
14177function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string memory metadataURI) external;
14178```*/
14179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14180    #[derive(Clone)]
14181    pub struct registerAsOperatorCall {
14182        #[allow(missing_docs)]
14183        pub initDelegationApprover: alloy::sol_types::private::Address,
14184        #[allow(missing_docs)]
14185        pub allocationDelay: u32,
14186        #[allow(missing_docs)]
14187        pub metadataURI: alloy::sol_types::private::String,
14188    }
14189    ///Container type for the return parameters of the [`registerAsOperator(address,uint32,string)`](registerAsOperatorCall) function.
14190    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14191    #[derive(Clone)]
14192    pub struct registerAsOperatorReturn {}
14193    #[allow(
14194        non_camel_case_types,
14195        non_snake_case,
14196        clippy::pub_underscore_fields,
14197        clippy::style
14198    )]
14199    const _: () = {
14200        use alloy::sol_types as alloy_sol_types;
14201        {
14202            #[doc(hidden)]
14203            type UnderlyingSolTuple<'a> = (
14204                alloy::sol_types::sol_data::Address,
14205                alloy::sol_types::sol_data::Uint<32>,
14206                alloy::sol_types::sol_data::String,
14207            );
14208            #[doc(hidden)]
14209            type UnderlyingRustTuple<'a> = (
14210                alloy::sol_types::private::Address,
14211                u32,
14212                alloy::sol_types::private::String,
14213            );
14214            #[cfg(test)]
14215            #[allow(dead_code, unreachable_patterns)]
14216            fn _type_assertion(
14217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14218            ) {
14219                match _t {
14220                    alloy_sol_types::private::AssertTypeEq::<
14221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14222                    >(_) => {}
14223                }
14224            }
14225            #[automatically_derived]
14226            #[doc(hidden)]
14227            impl ::core::convert::From<registerAsOperatorCall>
14228            for UnderlyingRustTuple<'_> {
14229                fn from(value: registerAsOperatorCall) -> Self {
14230                    (
14231                        value.initDelegationApprover,
14232                        value.allocationDelay,
14233                        value.metadataURI,
14234                    )
14235                }
14236            }
14237            #[automatically_derived]
14238            #[doc(hidden)]
14239            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14240            for registerAsOperatorCall {
14241                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14242                    Self {
14243                        initDelegationApprover: tuple.0,
14244                        allocationDelay: tuple.1,
14245                        metadataURI: tuple.2,
14246                    }
14247                }
14248            }
14249        }
14250        {
14251            #[doc(hidden)]
14252            type UnderlyingSolTuple<'a> = ();
14253            #[doc(hidden)]
14254            type UnderlyingRustTuple<'a> = ();
14255            #[cfg(test)]
14256            #[allow(dead_code, unreachable_patterns)]
14257            fn _type_assertion(
14258                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14259            ) {
14260                match _t {
14261                    alloy_sol_types::private::AssertTypeEq::<
14262                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14263                    >(_) => {}
14264                }
14265            }
14266            #[automatically_derived]
14267            #[doc(hidden)]
14268            impl ::core::convert::From<registerAsOperatorReturn>
14269            for UnderlyingRustTuple<'_> {
14270                fn from(value: registerAsOperatorReturn) -> Self {
14271                    ()
14272                }
14273            }
14274            #[automatically_derived]
14275            #[doc(hidden)]
14276            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14277            for registerAsOperatorReturn {
14278                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14279                    Self {}
14280                }
14281            }
14282        }
14283        impl registerAsOperatorReturn {
14284            fn _tokenize(
14285                &self,
14286            ) -> <registerAsOperatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14287                ()
14288            }
14289        }
14290        #[automatically_derived]
14291        impl alloy_sol_types::SolCall for registerAsOperatorCall {
14292            type Parameters<'a> = (
14293                alloy::sol_types::sol_data::Address,
14294                alloy::sol_types::sol_data::Uint<32>,
14295                alloy::sol_types::sol_data::String,
14296            );
14297            type Token<'a> = <Self::Parameters<
14298                'a,
14299            > as alloy_sol_types::SolType>::Token<'a>;
14300            type Return = registerAsOperatorReturn;
14301            type ReturnTuple<'a> = ();
14302            type ReturnToken<'a> = <Self::ReturnTuple<
14303                'a,
14304            > as alloy_sol_types::SolType>::Token<'a>;
14305            const SIGNATURE: &'static str = "registerAsOperator(address,uint32,string)";
14306            const SELECTOR: [u8; 4] = [42u8, 166u8, 216u8, 136u8];
14307            #[inline]
14308            fn new<'a>(
14309                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14310            ) -> Self {
14311                tuple.into()
14312            }
14313            #[inline]
14314            fn tokenize(&self) -> Self::Token<'_> {
14315                (
14316                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14317                        &self.initDelegationApprover,
14318                    ),
14319                    <alloy::sol_types::sol_data::Uint<
14320                        32,
14321                    > as alloy_sol_types::SolType>::tokenize(&self.allocationDelay),
14322                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
14323                        &self.metadataURI,
14324                    ),
14325                )
14326            }
14327            #[inline]
14328            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14329                registerAsOperatorReturn::_tokenize(ret)
14330            }
14331            #[inline]
14332            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14333                <Self::ReturnTuple<
14334                    '_,
14335                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14336                    .map(Into::into)
14337            }
14338            #[inline]
14339            fn abi_decode_returns_validate(
14340                data: &[u8],
14341            ) -> alloy_sol_types::Result<Self::Return> {
14342                <Self::ReturnTuple<
14343                    '_,
14344                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14345                    .map(Into::into)
14346            }
14347        }
14348    };
14349    #[derive(serde::Serialize, serde::Deserialize)]
14350    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14351    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
14352```solidity
14353function renounceOwnership() external;
14354```*/
14355    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14356    #[derive(Clone)]
14357    pub struct renounceOwnershipCall;
14358    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
14359    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14360    #[derive(Clone)]
14361    pub struct renounceOwnershipReturn {}
14362    #[allow(
14363        non_camel_case_types,
14364        non_snake_case,
14365        clippy::pub_underscore_fields,
14366        clippy::style
14367    )]
14368    const _: () = {
14369        use alloy::sol_types as alloy_sol_types;
14370        {
14371            #[doc(hidden)]
14372            type UnderlyingSolTuple<'a> = ();
14373            #[doc(hidden)]
14374            type UnderlyingRustTuple<'a> = ();
14375            #[cfg(test)]
14376            #[allow(dead_code, unreachable_patterns)]
14377            fn _type_assertion(
14378                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14379            ) {
14380                match _t {
14381                    alloy_sol_types::private::AssertTypeEq::<
14382                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14383                    >(_) => {}
14384                }
14385            }
14386            #[automatically_derived]
14387            #[doc(hidden)]
14388            impl ::core::convert::From<renounceOwnershipCall>
14389            for UnderlyingRustTuple<'_> {
14390                fn from(value: renounceOwnershipCall) -> Self {
14391                    ()
14392                }
14393            }
14394            #[automatically_derived]
14395            #[doc(hidden)]
14396            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14397            for renounceOwnershipCall {
14398                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14399                    Self
14400                }
14401            }
14402        }
14403        {
14404            #[doc(hidden)]
14405            type UnderlyingSolTuple<'a> = ();
14406            #[doc(hidden)]
14407            type UnderlyingRustTuple<'a> = ();
14408            #[cfg(test)]
14409            #[allow(dead_code, unreachable_patterns)]
14410            fn _type_assertion(
14411                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14412            ) {
14413                match _t {
14414                    alloy_sol_types::private::AssertTypeEq::<
14415                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14416                    >(_) => {}
14417                }
14418            }
14419            #[automatically_derived]
14420            #[doc(hidden)]
14421            impl ::core::convert::From<renounceOwnershipReturn>
14422            for UnderlyingRustTuple<'_> {
14423                fn from(value: renounceOwnershipReturn) -> Self {
14424                    ()
14425                }
14426            }
14427            #[automatically_derived]
14428            #[doc(hidden)]
14429            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14430            for renounceOwnershipReturn {
14431                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14432                    Self {}
14433                }
14434            }
14435        }
14436        impl renounceOwnershipReturn {
14437            fn _tokenize(
14438                &self,
14439            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14440                ()
14441            }
14442        }
14443        #[automatically_derived]
14444        impl alloy_sol_types::SolCall for renounceOwnershipCall {
14445            type Parameters<'a> = ();
14446            type Token<'a> = <Self::Parameters<
14447                'a,
14448            > as alloy_sol_types::SolType>::Token<'a>;
14449            type Return = renounceOwnershipReturn;
14450            type ReturnTuple<'a> = ();
14451            type ReturnToken<'a> = <Self::ReturnTuple<
14452                'a,
14453            > as alloy_sol_types::SolType>::Token<'a>;
14454            const SIGNATURE: &'static str = "renounceOwnership()";
14455            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
14456            #[inline]
14457            fn new<'a>(
14458                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14459            ) -> Self {
14460                tuple.into()
14461            }
14462            #[inline]
14463            fn tokenize(&self) -> Self::Token<'_> {
14464                ()
14465            }
14466            #[inline]
14467            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14468                renounceOwnershipReturn::_tokenize(ret)
14469            }
14470            #[inline]
14471            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14472                <Self::ReturnTuple<
14473                    '_,
14474                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14475                    .map(Into::into)
14476            }
14477            #[inline]
14478            fn abi_decode_returns_validate(
14479                data: &[u8],
14480            ) -> alloy_sol_types::Result<Self::Return> {
14481                <Self::ReturnTuple<
14482                    '_,
14483                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14484                    .map(Into::into)
14485            }
14486        }
14487    };
14488    #[derive(serde::Serialize, serde::Deserialize)]
14489    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14490    /**Function with signature `slashOperatorShares(address,address,uint64,uint64)` and selector `0x601bb36f`.
14491```solidity
14492function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) external;
14493```*/
14494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14495    #[derive(Clone)]
14496    pub struct slashOperatorSharesCall {
14497        #[allow(missing_docs)]
14498        pub operator: alloy::sol_types::private::Address,
14499        #[allow(missing_docs)]
14500        pub strategy: alloy::sol_types::private::Address,
14501        #[allow(missing_docs)]
14502        pub prevMaxMagnitude: u64,
14503        #[allow(missing_docs)]
14504        pub newMaxMagnitude: u64,
14505    }
14506    ///Container type for the return parameters of the [`slashOperatorShares(address,address,uint64,uint64)`](slashOperatorSharesCall) function.
14507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14508    #[derive(Clone)]
14509    pub struct slashOperatorSharesReturn {}
14510    #[allow(
14511        non_camel_case_types,
14512        non_snake_case,
14513        clippy::pub_underscore_fields,
14514        clippy::style
14515    )]
14516    const _: () = {
14517        use alloy::sol_types as alloy_sol_types;
14518        {
14519            #[doc(hidden)]
14520            type UnderlyingSolTuple<'a> = (
14521                alloy::sol_types::sol_data::Address,
14522                alloy::sol_types::sol_data::Address,
14523                alloy::sol_types::sol_data::Uint<64>,
14524                alloy::sol_types::sol_data::Uint<64>,
14525            );
14526            #[doc(hidden)]
14527            type UnderlyingRustTuple<'a> = (
14528                alloy::sol_types::private::Address,
14529                alloy::sol_types::private::Address,
14530                u64,
14531                u64,
14532            );
14533            #[cfg(test)]
14534            #[allow(dead_code, unreachable_patterns)]
14535            fn _type_assertion(
14536                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14537            ) {
14538                match _t {
14539                    alloy_sol_types::private::AssertTypeEq::<
14540                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14541                    >(_) => {}
14542                }
14543            }
14544            #[automatically_derived]
14545            #[doc(hidden)]
14546            impl ::core::convert::From<slashOperatorSharesCall>
14547            for UnderlyingRustTuple<'_> {
14548                fn from(value: slashOperatorSharesCall) -> Self {
14549                    (
14550                        value.operator,
14551                        value.strategy,
14552                        value.prevMaxMagnitude,
14553                        value.newMaxMagnitude,
14554                    )
14555                }
14556            }
14557            #[automatically_derived]
14558            #[doc(hidden)]
14559            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14560            for slashOperatorSharesCall {
14561                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14562                    Self {
14563                        operator: tuple.0,
14564                        strategy: tuple.1,
14565                        prevMaxMagnitude: tuple.2,
14566                        newMaxMagnitude: tuple.3,
14567                    }
14568                }
14569            }
14570        }
14571        {
14572            #[doc(hidden)]
14573            type UnderlyingSolTuple<'a> = ();
14574            #[doc(hidden)]
14575            type UnderlyingRustTuple<'a> = ();
14576            #[cfg(test)]
14577            #[allow(dead_code, unreachable_patterns)]
14578            fn _type_assertion(
14579                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14580            ) {
14581                match _t {
14582                    alloy_sol_types::private::AssertTypeEq::<
14583                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14584                    >(_) => {}
14585                }
14586            }
14587            #[automatically_derived]
14588            #[doc(hidden)]
14589            impl ::core::convert::From<slashOperatorSharesReturn>
14590            for UnderlyingRustTuple<'_> {
14591                fn from(value: slashOperatorSharesReturn) -> Self {
14592                    ()
14593                }
14594            }
14595            #[automatically_derived]
14596            #[doc(hidden)]
14597            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14598            for slashOperatorSharesReturn {
14599                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14600                    Self {}
14601                }
14602            }
14603        }
14604        impl slashOperatorSharesReturn {
14605            fn _tokenize(
14606                &self,
14607            ) -> <slashOperatorSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14608                ()
14609            }
14610        }
14611        #[automatically_derived]
14612        impl alloy_sol_types::SolCall for slashOperatorSharesCall {
14613            type Parameters<'a> = (
14614                alloy::sol_types::sol_data::Address,
14615                alloy::sol_types::sol_data::Address,
14616                alloy::sol_types::sol_data::Uint<64>,
14617                alloy::sol_types::sol_data::Uint<64>,
14618            );
14619            type Token<'a> = <Self::Parameters<
14620                'a,
14621            > as alloy_sol_types::SolType>::Token<'a>;
14622            type Return = slashOperatorSharesReturn;
14623            type ReturnTuple<'a> = ();
14624            type ReturnToken<'a> = <Self::ReturnTuple<
14625                'a,
14626            > as alloy_sol_types::SolType>::Token<'a>;
14627            const SIGNATURE: &'static str = "slashOperatorShares(address,address,uint64,uint64)";
14628            const SELECTOR: [u8; 4] = [96u8, 27u8, 179u8, 111u8];
14629            #[inline]
14630            fn new<'a>(
14631                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14632            ) -> Self {
14633                tuple.into()
14634            }
14635            #[inline]
14636            fn tokenize(&self) -> Self::Token<'_> {
14637                (
14638                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14639                        &self.operator,
14640                    ),
14641                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14642                        &self.strategy,
14643                    ),
14644                    <alloy::sol_types::sol_data::Uint<
14645                        64,
14646                    > as alloy_sol_types::SolType>::tokenize(&self.prevMaxMagnitude),
14647                    <alloy::sol_types::sol_data::Uint<
14648                        64,
14649                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxMagnitude),
14650                )
14651            }
14652            #[inline]
14653            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14654                slashOperatorSharesReturn::_tokenize(ret)
14655            }
14656            #[inline]
14657            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14658                <Self::ReturnTuple<
14659                    '_,
14660                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14661                    .map(Into::into)
14662            }
14663            #[inline]
14664            fn abi_decode_returns_validate(
14665                data: &[u8],
14666            ) -> alloy_sol_types::Result<Self::Return> {
14667                <Self::ReturnTuple<
14668                    '_,
14669                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14670                    .map(Into::into)
14671            }
14672        }
14673    };
14674    #[derive(serde::Serialize, serde::Deserialize)]
14675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14676    /**Function with signature `strategyManager()` and selector `0x39b70e38`.
14677```solidity
14678function strategyManager() external view returns (address);
14679```*/
14680    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14681    #[derive(Clone)]
14682    pub struct strategyManagerCall;
14683    #[derive(serde::Serialize, serde::Deserialize)]
14684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14685    ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function.
14686    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14687    #[derive(Clone)]
14688    pub struct strategyManagerReturn {
14689        #[allow(missing_docs)]
14690        pub _0: alloy::sol_types::private::Address,
14691    }
14692    #[allow(
14693        non_camel_case_types,
14694        non_snake_case,
14695        clippy::pub_underscore_fields,
14696        clippy::style
14697    )]
14698    const _: () = {
14699        use alloy::sol_types as alloy_sol_types;
14700        {
14701            #[doc(hidden)]
14702            type UnderlyingSolTuple<'a> = ();
14703            #[doc(hidden)]
14704            type UnderlyingRustTuple<'a> = ();
14705            #[cfg(test)]
14706            #[allow(dead_code, unreachable_patterns)]
14707            fn _type_assertion(
14708                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14709            ) {
14710                match _t {
14711                    alloy_sol_types::private::AssertTypeEq::<
14712                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14713                    >(_) => {}
14714                }
14715            }
14716            #[automatically_derived]
14717            #[doc(hidden)]
14718            impl ::core::convert::From<strategyManagerCall> for UnderlyingRustTuple<'_> {
14719                fn from(value: strategyManagerCall) -> Self {
14720                    ()
14721                }
14722            }
14723            #[automatically_derived]
14724            #[doc(hidden)]
14725            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyManagerCall {
14726                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14727                    Self
14728                }
14729            }
14730        }
14731        {
14732            #[doc(hidden)]
14733            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14734            #[doc(hidden)]
14735            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14736            #[cfg(test)]
14737            #[allow(dead_code, unreachable_patterns)]
14738            fn _type_assertion(
14739                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14740            ) {
14741                match _t {
14742                    alloy_sol_types::private::AssertTypeEq::<
14743                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14744                    >(_) => {}
14745                }
14746            }
14747            #[automatically_derived]
14748            #[doc(hidden)]
14749            impl ::core::convert::From<strategyManagerReturn>
14750            for UnderlyingRustTuple<'_> {
14751                fn from(value: strategyManagerReturn) -> Self {
14752                    (value._0,)
14753                }
14754            }
14755            #[automatically_derived]
14756            #[doc(hidden)]
14757            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14758            for strategyManagerReturn {
14759                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14760                    Self { _0: tuple.0 }
14761                }
14762            }
14763        }
14764        #[automatically_derived]
14765        impl alloy_sol_types::SolCall for strategyManagerCall {
14766            type Parameters<'a> = ();
14767            type Token<'a> = <Self::Parameters<
14768                'a,
14769            > as alloy_sol_types::SolType>::Token<'a>;
14770            type Return = alloy::sol_types::private::Address;
14771            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
14772            type ReturnToken<'a> = <Self::ReturnTuple<
14773                'a,
14774            > as alloy_sol_types::SolType>::Token<'a>;
14775            const SIGNATURE: &'static str = "strategyManager()";
14776            const SELECTOR: [u8; 4] = [57u8, 183u8, 14u8, 56u8];
14777            #[inline]
14778            fn new<'a>(
14779                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14780            ) -> Self {
14781                tuple.into()
14782            }
14783            #[inline]
14784            fn tokenize(&self) -> Self::Token<'_> {
14785                ()
14786            }
14787            #[inline]
14788            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14789                (
14790                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14791                        ret,
14792                    ),
14793                )
14794            }
14795            #[inline]
14796            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14797                <Self::ReturnTuple<
14798                    '_,
14799                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14800                    .map(|r| {
14801                        let r: strategyManagerReturn = r.into();
14802                        r._0
14803                    })
14804            }
14805            #[inline]
14806            fn abi_decode_returns_validate(
14807                data: &[u8],
14808            ) -> alloy_sol_types::Result<Self::Return> {
14809                <Self::ReturnTuple<
14810                    '_,
14811                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14812                    .map(|r| {
14813                        let r: strategyManagerReturn = r.into();
14814                        r._0
14815                    })
14816            }
14817        }
14818    };
14819    #[derive(serde::Serialize, serde::Deserialize)]
14820    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14821    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
14822```solidity
14823function transferOwnership(address newOwner) external;
14824```*/
14825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14826    #[derive(Clone)]
14827    pub struct transferOwnershipCall {
14828        #[allow(missing_docs)]
14829        pub newOwner: alloy::sol_types::private::Address,
14830    }
14831    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
14832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14833    #[derive(Clone)]
14834    pub struct transferOwnershipReturn {}
14835    #[allow(
14836        non_camel_case_types,
14837        non_snake_case,
14838        clippy::pub_underscore_fields,
14839        clippy::style
14840    )]
14841    const _: () = {
14842        use alloy::sol_types as alloy_sol_types;
14843        {
14844            #[doc(hidden)]
14845            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14846            #[doc(hidden)]
14847            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14848            #[cfg(test)]
14849            #[allow(dead_code, unreachable_patterns)]
14850            fn _type_assertion(
14851                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14852            ) {
14853                match _t {
14854                    alloy_sol_types::private::AssertTypeEq::<
14855                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14856                    >(_) => {}
14857                }
14858            }
14859            #[automatically_derived]
14860            #[doc(hidden)]
14861            impl ::core::convert::From<transferOwnershipCall>
14862            for UnderlyingRustTuple<'_> {
14863                fn from(value: transferOwnershipCall) -> Self {
14864                    (value.newOwner,)
14865                }
14866            }
14867            #[automatically_derived]
14868            #[doc(hidden)]
14869            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14870            for transferOwnershipCall {
14871                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14872                    Self { newOwner: tuple.0 }
14873                }
14874            }
14875        }
14876        {
14877            #[doc(hidden)]
14878            type UnderlyingSolTuple<'a> = ();
14879            #[doc(hidden)]
14880            type UnderlyingRustTuple<'a> = ();
14881            #[cfg(test)]
14882            #[allow(dead_code, unreachable_patterns)]
14883            fn _type_assertion(
14884                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14885            ) {
14886                match _t {
14887                    alloy_sol_types::private::AssertTypeEq::<
14888                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14889                    >(_) => {}
14890                }
14891            }
14892            #[automatically_derived]
14893            #[doc(hidden)]
14894            impl ::core::convert::From<transferOwnershipReturn>
14895            for UnderlyingRustTuple<'_> {
14896                fn from(value: transferOwnershipReturn) -> Self {
14897                    ()
14898                }
14899            }
14900            #[automatically_derived]
14901            #[doc(hidden)]
14902            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14903            for transferOwnershipReturn {
14904                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14905                    Self {}
14906                }
14907            }
14908        }
14909        impl transferOwnershipReturn {
14910            fn _tokenize(
14911                &self,
14912            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14913                ()
14914            }
14915        }
14916        #[automatically_derived]
14917        impl alloy_sol_types::SolCall for transferOwnershipCall {
14918            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14919            type Token<'a> = <Self::Parameters<
14920                'a,
14921            > as alloy_sol_types::SolType>::Token<'a>;
14922            type Return = transferOwnershipReturn;
14923            type ReturnTuple<'a> = ();
14924            type ReturnToken<'a> = <Self::ReturnTuple<
14925                'a,
14926            > as alloy_sol_types::SolType>::Token<'a>;
14927            const SIGNATURE: &'static str = "transferOwnership(address)";
14928            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
14929            #[inline]
14930            fn new<'a>(
14931                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14932            ) -> Self {
14933                tuple.into()
14934            }
14935            #[inline]
14936            fn tokenize(&self) -> Self::Token<'_> {
14937                (
14938                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14939                        &self.newOwner,
14940                    ),
14941                )
14942            }
14943            #[inline]
14944            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14945                transferOwnershipReturn::_tokenize(ret)
14946            }
14947            #[inline]
14948            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14949                <Self::ReturnTuple<
14950                    '_,
14951                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14952                    .map(Into::into)
14953            }
14954            #[inline]
14955            fn abi_decode_returns_validate(
14956                data: &[u8],
14957            ) -> alloy_sol_types::Result<Self::Return> {
14958                <Self::ReturnTuple<
14959                    '_,
14960                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14961                    .map(Into::into)
14962            }
14963        }
14964    };
14965    #[derive(serde::Serialize, serde::Deserialize)]
14966    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14967    /**Function with signature `undelegate(address)` and selector `0xda8be864`.
14968```solidity
14969function undelegate(address staker) external returns (bytes32[] memory withdrawalRoots);
14970```*/
14971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14972    #[derive(Clone)]
14973    pub struct undelegateCall {
14974        #[allow(missing_docs)]
14975        pub staker: alloy::sol_types::private::Address,
14976    }
14977    #[derive(serde::Serialize, serde::Deserialize)]
14978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14979    ///Container type for the return parameters of the [`undelegate(address)`](undelegateCall) function.
14980    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14981    #[derive(Clone)]
14982    pub struct undelegateReturn {
14983        #[allow(missing_docs)]
14984        pub withdrawalRoots: alloy::sol_types::private::Vec<
14985            alloy::sol_types::private::FixedBytes<32>,
14986        >,
14987    }
14988    #[allow(
14989        non_camel_case_types,
14990        non_snake_case,
14991        clippy::pub_underscore_fields,
14992        clippy::style
14993    )]
14994    const _: () = {
14995        use alloy::sol_types as alloy_sol_types;
14996        {
14997            #[doc(hidden)]
14998            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14999            #[doc(hidden)]
15000            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
15001            #[cfg(test)]
15002            #[allow(dead_code, unreachable_patterns)]
15003            fn _type_assertion(
15004                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15005            ) {
15006                match _t {
15007                    alloy_sol_types::private::AssertTypeEq::<
15008                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15009                    >(_) => {}
15010                }
15011            }
15012            #[automatically_derived]
15013            #[doc(hidden)]
15014            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
15015                fn from(value: undelegateCall) -> Self {
15016                    (value.staker,)
15017                }
15018            }
15019            #[automatically_derived]
15020            #[doc(hidden)]
15021            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
15022                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15023                    Self { staker: tuple.0 }
15024                }
15025            }
15026        }
15027        {
15028            #[doc(hidden)]
15029            type UnderlyingSolTuple<'a> = (
15030                alloy::sol_types::sol_data::Array<
15031                    alloy::sol_types::sol_data::FixedBytes<32>,
15032                >,
15033            );
15034            #[doc(hidden)]
15035            type UnderlyingRustTuple<'a> = (
15036                alloy::sol_types::private::Vec<
15037                    alloy::sol_types::private::FixedBytes<32>,
15038                >,
15039            );
15040            #[cfg(test)]
15041            #[allow(dead_code, unreachable_patterns)]
15042            fn _type_assertion(
15043                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15044            ) {
15045                match _t {
15046                    alloy_sol_types::private::AssertTypeEq::<
15047                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15048                    >(_) => {}
15049                }
15050            }
15051            #[automatically_derived]
15052            #[doc(hidden)]
15053            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
15054                fn from(value: undelegateReturn) -> Self {
15055                    (value.withdrawalRoots,)
15056                }
15057            }
15058            #[automatically_derived]
15059            #[doc(hidden)]
15060            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
15061                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15062                    Self { withdrawalRoots: tuple.0 }
15063                }
15064            }
15065        }
15066        #[automatically_derived]
15067        impl alloy_sol_types::SolCall for undelegateCall {
15068            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
15069            type Token<'a> = <Self::Parameters<
15070                'a,
15071            > as alloy_sol_types::SolType>::Token<'a>;
15072            type Return = alloy::sol_types::private::Vec<
15073                alloy::sol_types::private::FixedBytes<32>,
15074            >;
15075            type ReturnTuple<'a> = (
15076                alloy::sol_types::sol_data::Array<
15077                    alloy::sol_types::sol_data::FixedBytes<32>,
15078                >,
15079            );
15080            type ReturnToken<'a> = <Self::ReturnTuple<
15081                'a,
15082            > as alloy_sol_types::SolType>::Token<'a>;
15083            const SIGNATURE: &'static str = "undelegate(address)";
15084            const SELECTOR: [u8; 4] = [218u8, 139u8, 232u8, 100u8];
15085            #[inline]
15086            fn new<'a>(
15087                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15088            ) -> Self {
15089                tuple.into()
15090            }
15091            #[inline]
15092            fn tokenize(&self) -> Self::Token<'_> {
15093                (
15094                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15095                        &self.staker,
15096                    ),
15097                )
15098            }
15099            #[inline]
15100            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15101                (
15102                    <alloy::sol_types::sol_data::Array<
15103                        alloy::sol_types::sol_data::FixedBytes<32>,
15104                    > as alloy_sol_types::SolType>::tokenize(ret),
15105                )
15106            }
15107            #[inline]
15108            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15109                <Self::ReturnTuple<
15110                    '_,
15111                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15112                    .map(|r| {
15113                        let r: undelegateReturn = r.into();
15114                        r.withdrawalRoots
15115                    })
15116            }
15117            #[inline]
15118            fn abi_decode_returns_validate(
15119                data: &[u8],
15120            ) -> alloy_sol_types::Result<Self::Return> {
15121                <Self::ReturnTuple<
15122                    '_,
15123                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15124                    .map(|r| {
15125                        let r: undelegateReturn = r.into();
15126                        r.withdrawalRoots
15127                    })
15128            }
15129        }
15130    };
15131    #[derive(serde::Serialize, serde::Deserialize)]
15132    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15133    /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`.
15134```solidity
15135function unpause(uint256 newPausedStatus) external;
15136```*/
15137    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15138    #[derive(Clone)]
15139    pub struct unpauseCall {
15140        #[allow(missing_docs)]
15141        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
15142    }
15143    ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function.
15144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15145    #[derive(Clone)]
15146    pub struct unpauseReturn {}
15147    #[allow(
15148        non_camel_case_types,
15149        non_snake_case,
15150        clippy::pub_underscore_fields,
15151        clippy::style
15152    )]
15153    const _: () = {
15154        use alloy::sol_types as alloy_sol_types;
15155        {
15156            #[doc(hidden)]
15157            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15158            #[doc(hidden)]
15159            type UnderlyingRustTuple<'a> = (
15160                alloy::sol_types::private::primitives::aliases::U256,
15161            );
15162            #[cfg(test)]
15163            #[allow(dead_code, unreachable_patterns)]
15164            fn _type_assertion(
15165                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15166            ) {
15167                match _t {
15168                    alloy_sol_types::private::AssertTypeEq::<
15169                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15170                    >(_) => {}
15171                }
15172            }
15173            #[automatically_derived]
15174            #[doc(hidden)]
15175            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
15176                fn from(value: unpauseCall) -> Self {
15177                    (value.newPausedStatus,)
15178                }
15179            }
15180            #[automatically_derived]
15181            #[doc(hidden)]
15182            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
15183                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15184                    Self { newPausedStatus: tuple.0 }
15185                }
15186            }
15187        }
15188        {
15189            #[doc(hidden)]
15190            type UnderlyingSolTuple<'a> = ();
15191            #[doc(hidden)]
15192            type UnderlyingRustTuple<'a> = ();
15193            #[cfg(test)]
15194            #[allow(dead_code, unreachable_patterns)]
15195            fn _type_assertion(
15196                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15197            ) {
15198                match _t {
15199                    alloy_sol_types::private::AssertTypeEq::<
15200                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15201                    >(_) => {}
15202                }
15203            }
15204            #[automatically_derived]
15205            #[doc(hidden)]
15206            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
15207                fn from(value: unpauseReturn) -> Self {
15208                    ()
15209                }
15210            }
15211            #[automatically_derived]
15212            #[doc(hidden)]
15213            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
15214                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15215                    Self {}
15216                }
15217            }
15218        }
15219        impl unpauseReturn {
15220            fn _tokenize(
15221                &self,
15222            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15223                ()
15224            }
15225        }
15226        #[automatically_derived]
15227        impl alloy_sol_types::SolCall for unpauseCall {
15228            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15229            type Token<'a> = <Self::Parameters<
15230                'a,
15231            > as alloy_sol_types::SolType>::Token<'a>;
15232            type Return = unpauseReturn;
15233            type ReturnTuple<'a> = ();
15234            type ReturnToken<'a> = <Self::ReturnTuple<
15235                'a,
15236            > as alloy_sol_types::SolType>::Token<'a>;
15237            const SIGNATURE: &'static str = "unpause(uint256)";
15238            const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8];
15239            #[inline]
15240            fn new<'a>(
15241                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15242            ) -> Self {
15243                tuple.into()
15244            }
15245            #[inline]
15246            fn tokenize(&self) -> Self::Token<'_> {
15247                (
15248                    <alloy::sol_types::sol_data::Uint<
15249                        256,
15250                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
15251                )
15252            }
15253            #[inline]
15254            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15255                unpauseReturn::_tokenize(ret)
15256            }
15257            #[inline]
15258            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15259                <Self::ReturnTuple<
15260                    '_,
15261                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15262                    .map(Into::into)
15263            }
15264            #[inline]
15265            fn abi_decode_returns_validate(
15266                data: &[u8],
15267            ) -> alloy_sol_types::Result<Self::Return> {
15268                <Self::ReturnTuple<
15269                    '_,
15270                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15271                    .map(Into::into)
15272            }
15273        }
15274    };
15275    #[derive(serde::Serialize, serde::Deserialize)]
15276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15277    /**Function with signature `updateOperatorMetadataURI(address,string)` and selector `0x78296ec5`.
15278```solidity
15279function updateOperatorMetadataURI(address operator, string memory metadataURI) external;
15280```*/
15281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15282    #[derive(Clone)]
15283    pub struct updateOperatorMetadataURICall {
15284        #[allow(missing_docs)]
15285        pub operator: alloy::sol_types::private::Address,
15286        #[allow(missing_docs)]
15287        pub metadataURI: alloy::sol_types::private::String,
15288    }
15289    ///Container type for the return parameters of the [`updateOperatorMetadataURI(address,string)`](updateOperatorMetadataURICall) function.
15290    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15291    #[derive(Clone)]
15292    pub struct updateOperatorMetadataURIReturn {}
15293    #[allow(
15294        non_camel_case_types,
15295        non_snake_case,
15296        clippy::pub_underscore_fields,
15297        clippy::style
15298    )]
15299    const _: () = {
15300        use alloy::sol_types as alloy_sol_types;
15301        {
15302            #[doc(hidden)]
15303            type UnderlyingSolTuple<'a> = (
15304                alloy::sol_types::sol_data::Address,
15305                alloy::sol_types::sol_data::String,
15306            );
15307            #[doc(hidden)]
15308            type UnderlyingRustTuple<'a> = (
15309                alloy::sol_types::private::Address,
15310                alloy::sol_types::private::String,
15311            );
15312            #[cfg(test)]
15313            #[allow(dead_code, unreachable_patterns)]
15314            fn _type_assertion(
15315                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15316            ) {
15317                match _t {
15318                    alloy_sol_types::private::AssertTypeEq::<
15319                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15320                    >(_) => {}
15321                }
15322            }
15323            #[automatically_derived]
15324            #[doc(hidden)]
15325            impl ::core::convert::From<updateOperatorMetadataURICall>
15326            for UnderlyingRustTuple<'_> {
15327                fn from(value: updateOperatorMetadataURICall) -> Self {
15328                    (value.operator, value.metadataURI)
15329                }
15330            }
15331            #[automatically_derived]
15332            #[doc(hidden)]
15333            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15334            for updateOperatorMetadataURICall {
15335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15336                    Self {
15337                        operator: tuple.0,
15338                        metadataURI: tuple.1,
15339                    }
15340                }
15341            }
15342        }
15343        {
15344            #[doc(hidden)]
15345            type UnderlyingSolTuple<'a> = ();
15346            #[doc(hidden)]
15347            type UnderlyingRustTuple<'a> = ();
15348            #[cfg(test)]
15349            #[allow(dead_code, unreachable_patterns)]
15350            fn _type_assertion(
15351                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15352            ) {
15353                match _t {
15354                    alloy_sol_types::private::AssertTypeEq::<
15355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15356                    >(_) => {}
15357                }
15358            }
15359            #[automatically_derived]
15360            #[doc(hidden)]
15361            impl ::core::convert::From<updateOperatorMetadataURIReturn>
15362            for UnderlyingRustTuple<'_> {
15363                fn from(value: updateOperatorMetadataURIReturn) -> Self {
15364                    ()
15365                }
15366            }
15367            #[automatically_derived]
15368            #[doc(hidden)]
15369            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15370            for updateOperatorMetadataURIReturn {
15371                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15372                    Self {}
15373                }
15374            }
15375        }
15376        impl updateOperatorMetadataURIReturn {
15377            fn _tokenize(
15378                &self,
15379            ) -> <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::ReturnToken<
15380                '_,
15381            > {
15382                ()
15383            }
15384        }
15385        #[automatically_derived]
15386        impl alloy_sol_types::SolCall for updateOperatorMetadataURICall {
15387            type Parameters<'a> = (
15388                alloy::sol_types::sol_data::Address,
15389                alloy::sol_types::sol_data::String,
15390            );
15391            type Token<'a> = <Self::Parameters<
15392                'a,
15393            > as alloy_sol_types::SolType>::Token<'a>;
15394            type Return = updateOperatorMetadataURIReturn;
15395            type ReturnTuple<'a> = ();
15396            type ReturnToken<'a> = <Self::ReturnTuple<
15397                'a,
15398            > as alloy_sol_types::SolType>::Token<'a>;
15399            const SIGNATURE: &'static str = "updateOperatorMetadataURI(address,string)";
15400            const SELECTOR: [u8; 4] = [120u8, 41u8, 110u8, 197u8];
15401            #[inline]
15402            fn new<'a>(
15403                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15404            ) -> Self {
15405                tuple.into()
15406            }
15407            #[inline]
15408            fn tokenize(&self) -> Self::Token<'_> {
15409                (
15410                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15411                        &self.operator,
15412                    ),
15413                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
15414                        &self.metadataURI,
15415                    ),
15416                )
15417            }
15418            #[inline]
15419            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15420                updateOperatorMetadataURIReturn::_tokenize(ret)
15421            }
15422            #[inline]
15423            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15424                <Self::ReturnTuple<
15425                    '_,
15426                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15427                    .map(Into::into)
15428            }
15429            #[inline]
15430            fn abi_decode_returns_validate(
15431                data: &[u8],
15432            ) -> alloy_sol_types::Result<Self::Return> {
15433                <Self::ReturnTuple<
15434                    '_,
15435                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15436                    .map(Into::into)
15437            }
15438        }
15439    };
15440    #[derive(serde::Serialize, serde::Deserialize)]
15441    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15442    /**Function with signature `version()` and selector `0x54fd4d50`.
15443```solidity
15444function version() external view returns (string memory);
15445```*/
15446    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15447    #[derive(Clone)]
15448    pub struct versionCall;
15449    #[derive(serde::Serialize, serde::Deserialize)]
15450    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15451    ///Container type for the return parameters of the [`version()`](versionCall) function.
15452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15453    #[derive(Clone)]
15454    pub struct versionReturn {
15455        #[allow(missing_docs)]
15456        pub _0: alloy::sol_types::private::String,
15457    }
15458    #[allow(
15459        non_camel_case_types,
15460        non_snake_case,
15461        clippy::pub_underscore_fields,
15462        clippy::style
15463    )]
15464    const _: () = {
15465        use alloy::sol_types as alloy_sol_types;
15466        {
15467            #[doc(hidden)]
15468            type UnderlyingSolTuple<'a> = ();
15469            #[doc(hidden)]
15470            type UnderlyingRustTuple<'a> = ();
15471            #[cfg(test)]
15472            #[allow(dead_code, unreachable_patterns)]
15473            fn _type_assertion(
15474                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15475            ) {
15476                match _t {
15477                    alloy_sol_types::private::AssertTypeEq::<
15478                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15479                    >(_) => {}
15480                }
15481            }
15482            #[automatically_derived]
15483            #[doc(hidden)]
15484            impl ::core::convert::From<versionCall> for UnderlyingRustTuple<'_> {
15485                fn from(value: versionCall) -> Self {
15486                    ()
15487                }
15488            }
15489            #[automatically_derived]
15490            #[doc(hidden)]
15491            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionCall {
15492                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15493                    Self
15494                }
15495            }
15496        }
15497        {
15498            #[doc(hidden)]
15499            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
15500            #[doc(hidden)]
15501            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
15502            #[cfg(test)]
15503            #[allow(dead_code, unreachable_patterns)]
15504            fn _type_assertion(
15505                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15506            ) {
15507                match _t {
15508                    alloy_sol_types::private::AssertTypeEq::<
15509                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15510                    >(_) => {}
15511                }
15512            }
15513            #[automatically_derived]
15514            #[doc(hidden)]
15515            impl ::core::convert::From<versionReturn> for UnderlyingRustTuple<'_> {
15516                fn from(value: versionReturn) -> Self {
15517                    (value._0,)
15518                }
15519            }
15520            #[automatically_derived]
15521            #[doc(hidden)]
15522            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionReturn {
15523                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15524                    Self { _0: tuple.0 }
15525                }
15526            }
15527        }
15528        #[automatically_derived]
15529        impl alloy_sol_types::SolCall for versionCall {
15530            type Parameters<'a> = ();
15531            type Token<'a> = <Self::Parameters<
15532                'a,
15533            > as alloy_sol_types::SolType>::Token<'a>;
15534            type Return = alloy::sol_types::private::String;
15535            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
15536            type ReturnToken<'a> = <Self::ReturnTuple<
15537                'a,
15538            > as alloy_sol_types::SolType>::Token<'a>;
15539            const SIGNATURE: &'static str = "version()";
15540            const SELECTOR: [u8; 4] = [84u8, 253u8, 77u8, 80u8];
15541            #[inline]
15542            fn new<'a>(
15543                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15544            ) -> Self {
15545                tuple.into()
15546            }
15547            #[inline]
15548            fn tokenize(&self) -> Self::Token<'_> {
15549                ()
15550            }
15551            #[inline]
15552            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15553                (
15554                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
15555                        ret,
15556                    ),
15557                )
15558            }
15559            #[inline]
15560            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15561                <Self::ReturnTuple<
15562                    '_,
15563                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15564                    .map(|r| {
15565                        let r: versionReturn = r.into();
15566                        r._0
15567                    })
15568            }
15569            #[inline]
15570            fn abi_decode_returns_validate(
15571                data: &[u8],
15572            ) -> alloy_sol_types::Result<Self::Return> {
15573                <Self::ReturnTuple<
15574                    '_,
15575                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15576                    .map(|r| {
15577                        let r: versionReturn = r.into();
15578                        r._0
15579                    })
15580            }
15581        }
15582    };
15583    ///Container for all the [`DelegationManager`](self) function calls.
15584    #[derive(serde::Serialize, serde::Deserialize)]
15585    #[derive()]
15586    pub enum DelegationManagerCalls {
15587        #[allow(missing_docs)]
15588        DELEGATION_APPROVAL_TYPEHASH(DELEGATION_APPROVAL_TYPEHASHCall),
15589        #[allow(missing_docs)]
15590        allocationManager(allocationManagerCall),
15591        #[allow(missing_docs)]
15592        beaconChainETHStrategy(beaconChainETHStrategyCall),
15593        #[allow(missing_docs)]
15594        calculateDelegationApprovalDigestHash(calculateDelegationApprovalDigestHashCall),
15595        #[allow(missing_docs)]
15596        calculateWithdrawalRoot(calculateWithdrawalRootCall),
15597        #[allow(missing_docs)]
15598        completeQueuedWithdrawal(completeQueuedWithdrawalCall),
15599        #[allow(missing_docs)]
15600        completeQueuedWithdrawals(completeQueuedWithdrawalsCall),
15601        #[allow(missing_docs)]
15602        convertToDepositShares(convertToDepositSharesCall),
15603        #[allow(missing_docs)]
15604        cumulativeWithdrawalsQueued(cumulativeWithdrawalsQueuedCall),
15605        #[allow(missing_docs)]
15606        decreaseDelegatedShares(decreaseDelegatedSharesCall),
15607        #[allow(missing_docs)]
15608        delegateTo(delegateToCall),
15609        #[allow(missing_docs)]
15610        delegatedTo(delegatedToCall),
15611        #[allow(missing_docs)]
15612        delegationApprover(delegationApproverCall),
15613        #[allow(missing_docs)]
15614        delegationApproverSaltIsSpent(delegationApproverSaltIsSpentCall),
15615        #[allow(missing_docs)]
15616        depositScalingFactor(depositScalingFactorCall),
15617        #[allow(missing_docs)]
15618        domainSeparator(domainSeparatorCall),
15619        #[allow(missing_docs)]
15620        eigenPodManager(eigenPodManagerCall),
15621        #[allow(missing_docs)]
15622        getDepositedShares(getDepositedSharesCall),
15623        #[allow(missing_docs)]
15624        getOperatorShares(getOperatorSharesCall),
15625        #[allow(missing_docs)]
15626        getOperatorsShares(getOperatorsSharesCall),
15627        #[allow(missing_docs)]
15628        getQueuedWithdrawal(getQueuedWithdrawalCall),
15629        #[allow(missing_docs)]
15630        getQueuedWithdrawalRoots(getQueuedWithdrawalRootsCall),
15631        #[allow(missing_docs)]
15632        getQueuedWithdrawals(getQueuedWithdrawalsCall),
15633        #[allow(missing_docs)]
15634        getSlashableSharesInQueue(getSlashableSharesInQueueCall),
15635        #[allow(missing_docs)]
15636        getWithdrawableShares(getWithdrawableSharesCall),
15637        #[allow(missing_docs)]
15638        increaseDelegatedShares(increaseDelegatedSharesCall),
15639        #[allow(missing_docs)]
15640        initialize(initializeCall),
15641        #[allow(missing_docs)]
15642        isDelegated(isDelegatedCall),
15643        #[allow(missing_docs)]
15644        isOperator(isOperatorCall),
15645        #[allow(missing_docs)]
15646        minWithdrawalDelayBlocks(minWithdrawalDelayBlocksCall),
15647        #[allow(missing_docs)]
15648        modifyOperatorDetails(modifyOperatorDetailsCall),
15649        #[allow(missing_docs)]
15650        operatorShares(operatorSharesCall),
15651        #[allow(missing_docs)]
15652        owner(ownerCall),
15653        #[allow(missing_docs)]
15654        pause(pauseCall),
15655        #[allow(missing_docs)]
15656        pauseAll(pauseAllCall),
15657        #[allow(missing_docs)]
15658        paused_0(paused_0Call),
15659        #[allow(missing_docs)]
15660        paused_1(paused_1Call),
15661        #[allow(missing_docs)]
15662        pauserRegistry(pauserRegistryCall),
15663        #[allow(missing_docs)]
15664        pendingWithdrawals(pendingWithdrawalsCall),
15665        #[allow(missing_docs)]
15666        permissionController(permissionControllerCall),
15667        #[allow(missing_docs)]
15668        queueWithdrawals(queueWithdrawalsCall),
15669        #[allow(missing_docs)]
15670        queuedWithdrawals(queuedWithdrawalsCall),
15671        #[allow(missing_docs)]
15672        redelegate(redelegateCall),
15673        #[allow(missing_docs)]
15674        registerAsOperator(registerAsOperatorCall),
15675        #[allow(missing_docs)]
15676        renounceOwnership(renounceOwnershipCall),
15677        #[allow(missing_docs)]
15678        slashOperatorShares(slashOperatorSharesCall),
15679        #[allow(missing_docs)]
15680        strategyManager(strategyManagerCall),
15681        #[allow(missing_docs)]
15682        transferOwnership(transferOwnershipCall),
15683        #[allow(missing_docs)]
15684        undelegate(undelegateCall),
15685        #[allow(missing_docs)]
15686        unpause(unpauseCall),
15687        #[allow(missing_docs)]
15688        updateOperatorMetadataURI(updateOperatorMetadataURICall),
15689        #[allow(missing_docs)]
15690        version(versionCall),
15691    }
15692    #[automatically_derived]
15693    impl DelegationManagerCalls {
15694        /// All the selectors of this enum.
15695        ///
15696        /// Note that the selectors might not be in the same order as the variants.
15697        /// No guarantees are made about the order of the selectors.
15698        ///
15699        /// Prefer using `SolInterface` methods instead.
15700        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15701            [4u8, 164u8, 249u8, 121u8],
15702            [11u8, 159u8, 72u8, 122u8],
15703            [13u8, 216u8, 221u8, 2u8],
15704            [19u8, 100u8, 57u8, 221u8],
15705            [37u8, 223u8, 146u8, 46u8],
15706            [42u8, 166u8, 216u8, 136u8],
15707            [57u8, 183u8, 14u8, 56u8],
15708            [60u8, 101u8, 28u8, 242u8],
15709            [60u8, 222u8, 181u8, 224u8],
15710            [62u8, 40u8, 57u8, 29u8],
15711            [70u8, 87u8, 226u8, 106u8],
15712            [70u8, 101u8, 188u8, 218u8],
15713            [84u8, 183u8, 201u8, 108u8],
15714            [84u8, 253u8, 77u8, 80u8],
15715            [89u8, 92u8, 106u8, 103u8],
15716            [89u8, 123u8, 54u8, 218u8],
15717            [90u8, 200u8, 106u8, 183u8],
15718            [92u8, 151u8, 90u8, 187u8],
15719            [93u8, 151u8, 94u8, 136u8],
15720            [93u8, 214u8, 133u8, 121u8],
15721            [96u8, 27u8, 179u8, 111u8],
15722            [96u8, 160u8, 209u8, 206u8],
15723            [101u8, 218u8, 18u8, 100u8],
15724            [102u8, 213u8, 186u8, 147u8],
15725            [109u8, 112u8, 247u8, 174u8],
15726            [110u8, 23u8, 68u8, 72u8],
15727            [113u8, 80u8, 24u8, 166u8],
15728            [119u8, 142u8, 85u8, 243u8],
15729            [120u8, 41u8, 110u8, 197u8],
15730            [136u8, 111u8, 17u8, 149u8],
15731            [141u8, 165u8, 203u8, 91u8],
15732            [144u8, 4u8, 19u8, 71u8],
15733            [145u8, 4u8, 195u8, 25u8],
15734            [148u8, 53u8, 187u8, 67u8],
15735            [153u8, 245u8, 55u8, 27u8],
15736            [161u8, 120u8, 132u8, 132u8],
15737            [163u8, 58u8, 52u8, 51u8],
15738            [183u8, 240u8, 110u8, 190u8],
15739            [187u8, 69u8, 254u8, 242u8],
15740            [191u8, 174u8, 63u8, 210u8],
15741            [196u8, 72u8, 254u8, 184u8],
15742            [201u8, 120u8, 247u8, 172u8],
15743            [202u8, 138u8, 167u8, 199u8],
15744            [205u8, 109u8, 198u8, 135u8],
15745            [218u8, 139u8, 232u8, 100u8],
15746            [228u8, 204u8, 63u8, 144u8],
15747            [238u8, 169u8, 6u8, 75u8],
15748            [240u8, 224u8, 230u8, 118u8],
15749            [242u8, 253u8, 227u8, 139u8],
15750            [246u8, 152u8, 218u8, 37u8],
15751            [250u8, 188u8, 28u8, 188u8],
15752            [253u8, 138u8, 168u8, 141u8],
15753        ];
15754    }
15755    #[automatically_derived]
15756    impl alloy_sol_types::SolInterface for DelegationManagerCalls {
15757        const NAME: &'static str = "DelegationManagerCalls";
15758        const MIN_DATA_LENGTH: usize = 0usize;
15759        const COUNT: usize = 52usize;
15760        #[inline]
15761        fn selector(&self) -> [u8; 4] {
15762            match self {
15763                Self::DELEGATION_APPROVAL_TYPEHASH(_) => {
15764                    <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::SELECTOR
15765                }
15766                Self::allocationManager(_) => {
15767                    <allocationManagerCall as alloy_sol_types::SolCall>::SELECTOR
15768                }
15769                Self::beaconChainETHStrategy(_) => {
15770                    <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::SELECTOR
15771                }
15772                Self::calculateDelegationApprovalDigestHash(_) => {
15773                    <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::SELECTOR
15774                }
15775                Self::calculateWithdrawalRoot(_) => {
15776                    <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::SELECTOR
15777                }
15778                Self::completeQueuedWithdrawal(_) => {
15779                    <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
15780                }
15781                Self::completeQueuedWithdrawals(_) => {
15782                    <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
15783                }
15784                Self::convertToDepositShares(_) => {
15785                    <convertToDepositSharesCall as alloy_sol_types::SolCall>::SELECTOR
15786                }
15787                Self::cumulativeWithdrawalsQueued(_) => {
15788                    <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::SELECTOR
15789                }
15790                Self::decreaseDelegatedShares(_) => {
15791                    <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::SELECTOR
15792                }
15793                Self::delegateTo(_) => {
15794                    <delegateToCall as alloy_sol_types::SolCall>::SELECTOR
15795                }
15796                Self::delegatedTo(_) => {
15797                    <delegatedToCall as alloy_sol_types::SolCall>::SELECTOR
15798                }
15799                Self::delegationApprover(_) => {
15800                    <delegationApproverCall as alloy_sol_types::SolCall>::SELECTOR
15801                }
15802                Self::delegationApproverSaltIsSpent(_) => {
15803                    <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::SELECTOR
15804                }
15805                Self::depositScalingFactor(_) => {
15806                    <depositScalingFactorCall as alloy_sol_types::SolCall>::SELECTOR
15807                }
15808                Self::domainSeparator(_) => {
15809                    <domainSeparatorCall as alloy_sol_types::SolCall>::SELECTOR
15810                }
15811                Self::eigenPodManager(_) => {
15812                    <eigenPodManagerCall as alloy_sol_types::SolCall>::SELECTOR
15813                }
15814                Self::getDepositedShares(_) => {
15815                    <getDepositedSharesCall as alloy_sol_types::SolCall>::SELECTOR
15816                }
15817                Self::getOperatorShares(_) => {
15818                    <getOperatorSharesCall as alloy_sol_types::SolCall>::SELECTOR
15819                }
15820                Self::getOperatorsShares(_) => {
15821                    <getOperatorsSharesCall as alloy_sol_types::SolCall>::SELECTOR
15822                }
15823                Self::getQueuedWithdrawal(_) => {
15824                    <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
15825                }
15826                Self::getQueuedWithdrawalRoots(_) => {
15827                    <getQueuedWithdrawalRootsCall as alloy_sol_types::SolCall>::SELECTOR
15828                }
15829                Self::getQueuedWithdrawals(_) => {
15830                    <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
15831                }
15832                Self::getSlashableSharesInQueue(_) => {
15833                    <getSlashableSharesInQueueCall as alloy_sol_types::SolCall>::SELECTOR
15834                }
15835                Self::getWithdrawableShares(_) => {
15836                    <getWithdrawableSharesCall as alloy_sol_types::SolCall>::SELECTOR
15837                }
15838                Self::increaseDelegatedShares(_) => {
15839                    <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::SELECTOR
15840                }
15841                Self::initialize(_) => {
15842                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
15843                }
15844                Self::isDelegated(_) => {
15845                    <isDelegatedCall as alloy_sol_types::SolCall>::SELECTOR
15846                }
15847                Self::isOperator(_) => {
15848                    <isOperatorCall as alloy_sol_types::SolCall>::SELECTOR
15849                }
15850                Self::minWithdrawalDelayBlocks(_) => {
15851                    <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::SELECTOR
15852                }
15853                Self::modifyOperatorDetails(_) => {
15854                    <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::SELECTOR
15855                }
15856                Self::operatorShares(_) => {
15857                    <operatorSharesCall as alloy_sol_types::SolCall>::SELECTOR
15858                }
15859                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
15860                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
15861                Self::pauseAll(_) => <pauseAllCall as alloy_sol_types::SolCall>::SELECTOR,
15862                Self::paused_0(_) => <paused_0Call as alloy_sol_types::SolCall>::SELECTOR,
15863                Self::paused_1(_) => <paused_1Call as alloy_sol_types::SolCall>::SELECTOR,
15864                Self::pauserRegistry(_) => {
15865                    <pauserRegistryCall as alloy_sol_types::SolCall>::SELECTOR
15866                }
15867                Self::pendingWithdrawals(_) => {
15868                    <pendingWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
15869                }
15870                Self::permissionController(_) => {
15871                    <permissionControllerCall as alloy_sol_types::SolCall>::SELECTOR
15872                }
15873                Self::queueWithdrawals(_) => {
15874                    <queueWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
15875                }
15876                Self::queuedWithdrawals(_) => {
15877                    <queuedWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
15878                }
15879                Self::redelegate(_) => {
15880                    <redelegateCall as alloy_sol_types::SolCall>::SELECTOR
15881                }
15882                Self::registerAsOperator(_) => {
15883                    <registerAsOperatorCall as alloy_sol_types::SolCall>::SELECTOR
15884                }
15885                Self::renounceOwnership(_) => {
15886                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15887                }
15888                Self::slashOperatorShares(_) => {
15889                    <slashOperatorSharesCall as alloy_sol_types::SolCall>::SELECTOR
15890                }
15891                Self::strategyManager(_) => {
15892                    <strategyManagerCall as alloy_sol_types::SolCall>::SELECTOR
15893                }
15894                Self::transferOwnership(_) => {
15895                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15896                }
15897                Self::undelegate(_) => {
15898                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
15899                }
15900                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
15901                Self::updateOperatorMetadataURI(_) => {
15902                    <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::SELECTOR
15903                }
15904                Self::version(_) => <versionCall as alloy_sol_types::SolCall>::SELECTOR,
15905            }
15906        }
15907        #[inline]
15908        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15909            Self::SELECTORS.get(i).copied()
15910        }
15911        #[inline]
15912        fn valid_selector(selector: [u8; 4]) -> bool {
15913            Self::SELECTORS.binary_search(&selector).is_ok()
15914        }
15915        #[inline]
15916        #[allow(non_snake_case)]
15917        fn abi_decode_raw(
15918            selector: [u8; 4],
15919            data: &[u8],
15920        ) -> alloy_sol_types::Result<Self> {
15921            static DECODE_SHIMS: &[fn(
15922                &[u8],
15923            ) -> alloy_sol_types::Result<DelegationManagerCalls>] = &[
15924                {
15925                    fn DELEGATION_APPROVAL_TYPEHASH(
15926                        data: &[u8],
15927                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15928                        <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw(
15929                                data,
15930                            )
15931                            .map(DelegationManagerCalls::DELEGATION_APPROVAL_TYPEHASH)
15932                    }
15933                    DELEGATION_APPROVAL_TYPEHASH
15934                },
15935                {
15936                    fn calculateDelegationApprovalDigestHash(
15937                        data: &[u8],
15938                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15939                        <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw(
15940                                data,
15941                            )
15942                            .map(
15943                                DelegationManagerCalls::calculateDelegationApprovalDigestHash,
15944                            )
15945                    }
15946                    calculateDelegationApprovalDigestHash
15947                },
15948                {
15949                    fn queueWithdrawals(
15950                        data: &[u8],
15951                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15952                        <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
15953                                data,
15954                            )
15955                            .map(DelegationManagerCalls::queueWithdrawals)
15956                    }
15957                    queueWithdrawals
15958                },
15959                {
15960                    fn pause(
15961                        data: &[u8],
15962                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15963                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
15964                            .map(DelegationManagerCalls::pause)
15965                    }
15966                    pause
15967                },
15968                {
15969                    fn convertToDepositShares(
15970                        data: &[u8],
15971                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15972                        <convertToDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
15973                                data,
15974                            )
15975                            .map(DelegationManagerCalls::convertToDepositShares)
15976                    }
15977                    convertToDepositShares
15978                },
15979                {
15980                    fn registerAsOperator(
15981                        data: &[u8],
15982                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15983                        <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
15984                                data,
15985                            )
15986                            .map(DelegationManagerCalls::registerAsOperator)
15987                    }
15988                    registerAsOperator
15989                },
15990                {
15991                    fn strategyManager(
15992                        data: &[u8],
15993                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15994                        <strategyManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
15995                                data,
15996                            )
15997                            .map(DelegationManagerCalls::strategyManager)
15998                    }
15999                    strategyManager
16000                },
16001                {
16002                    fn increaseDelegatedShares(
16003                        data: &[u8],
16004                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16005                        <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
16006                                data,
16007                            )
16008                            .map(DelegationManagerCalls::increaseDelegatedShares)
16009                    }
16010                    increaseDelegatedShares
16011                },
16012                {
16013                    fn delegationApprover(
16014                        data: &[u8],
16015                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16016                        <delegationApproverCall as alloy_sol_types::SolCall>::abi_decode_raw(
16017                                data,
16018                            )
16019                            .map(DelegationManagerCalls::delegationApprover)
16020                    }
16021                    delegationApprover
16022                },
16023                {
16024                    fn isDelegated(
16025                        data: &[u8],
16026                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16027                        <isDelegatedCall as alloy_sol_types::SolCall>::abi_decode_raw(
16028                                data,
16029                            )
16030                            .map(DelegationManagerCalls::isDelegated)
16031                    }
16032                    isDelegated
16033                },
16034                {
16035                    fn permissionController(
16036                        data: &[u8],
16037                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16038                        <permissionControllerCall as alloy_sol_types::SolCall>::abi_decode_raw(
16039                                data,
16040                            )
16041                            .map(DelegationManagerCalls::permissionController)
16042                    }
16043                    permissionController
16044                },
16045                {
16046                    fn eigenPodManager(
16047                        data: &[u8],
16048                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16049                        <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
16050                                data,
16051                            )
16052                            .map(DelegationManagerCalls::eigenPodManager)
16053                    }
16054                    eigenPodManager
16055                },
16056                {
16057                    fn modifyOperatorDetails(
16058                        data: &[u8],
16059                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16060                        <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_decode_raw(
16061                                data,
16062                            )
16063                            .map(DelegationManagerCalls::modifyOperatorDetails)
16064                    }
16065                    modifyOperatorDetails
16066                },
16067                {
16068                    fn version(
16069                        data: &[u8],
16070                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16071                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16072                            .map(DelegationManagerCalls::version)
16073                    }
16074                    version
16075                },
16076                {
16077                    fn pauseAll(
16078                        data: &[u8],
16079                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16080                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16081                            .map(DelegationManagerCalls::pauseAll)
16082                    }
16083                    pauseAll
16084                },
16085                {
16086                    fn calculateWithdrawalRoot(
16087                        data: &[u8],
16088                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16089                        <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
16090                                data,
16091                            )
16092                            .map(DelegationManagerCalls::calculateWithdrawalRoot)
16093                    }
16094                    calculateWithdrawalRoot
16095                },
16096                {
16097                    fn paused_0(
16098                        data: &[u8],
16099                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16100                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
16101                            .map(DelegationManagerCalls::paused_0)
16102                    }
16103                    paused_0
16104                },
16105                {
16106                    fn paused_1(
16107                        data: &[u8],
16108                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16109                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
16110                            .map(DelegationManagerCalls::paused_1)
16111                    }
16112                    paused_1
16113                },
16114                {
16115                    fn getQueuedWithdrawal(
16116                        data: &[u8],
16117                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16118                        <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
16119                                data,
16120                            )
16121                            .map(DelegationManagerCalls::getQueuedWithdrawal)
16122                    }
16123                    getQueuedWithdrawal
16124                },
16125                {
16126                    fn getQueuedWithdrawals(
16127                        data: &[u8],
16128                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16129                        <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
16130                                data,
16131                            )
16132                            .map(DelegationManagerCalls::getQueuedWithdrawals)
16133                    }
16134                    getQueuedWithdrawals
16135                },
16136                {
16137                    fn slashOperatorShares(
16138                        data: &[u8],
16139                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16140                        <slashOperatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
16141                                data,
16142                            )
16143                            .map(DelegationManagerCalls::slashOperatorShares)
16144                    }
16145                    slashOperatorShares
16146                },
16147                {
16148                    fn decreaseDelegatedShares(
16149                        data: &[u8],
16150                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16151                        <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
16152                                data,
16153                            )
16154                            .map(DelegationManagerCalls::decreaseDelegatedShares)
16155                    }
16156                    decreaseDelegatedShares
16157                },
16158                {
16159                    fn delegatedTo(
16160                        data: &[u8],
16161                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16162                        <delegatedToCall as alloy_sol_types::SolCall>::abi_decode_raw(
16163                                data,
16164                            )
16165                            .map(DelegationManagerCalls::delegatedTo)
16166                    }
16167                    delegatedTo
16168                },
16169                {
16170                    fn getDepositedShares(
16171                        data: &[u8],
16172                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16173                        <getDepositedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
16174                                data,
16175                            )
16176                            .map(DelegationManagerCalls::getDepositedShares)
16177                    }
16178                    getDepositedShares
16179                },
16180                {
16181                    fn isOperator(
16182                        data: &[u8],
16183                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16184                        <isOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
16185                                data,
16186                            )
16187                            .map(DelegationManagerCalls::isOperator)
16188                    }
16189                    isOperator
16190                },
16191                {
16192                    fn getSlashableSharesInQueue(
16193                        data: &[u8],
16194                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16195                        <getSlashableSharesInQueueCall as alloy_sol_types::SolCall>::abi_decode_raw(
16196                                data,
16197                            )
16198                            .map(DelegationManagerCalls::getSlashableSharesInQueue)
16199                    }
16200                    getSlashableSharesInQueue
16201                },
16202                {
16203                    fn renounceOwnership(
16204                        data: &[u8],
16205                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16206                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
16207                                data,
16208                            )
16209                            .map(DelegationManagerCalls::renounceOwnership)
16210                    }
16211                    renounceOwnership
16212                },
16213                {
16214                    fn operatorShares(
16215                        data: &[u8],
16216                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16217                        <operatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
16218                                data,
16219                            )
16220                            .map(DelegationManagerCalls::operatorShares)
16221                    }
16222                    operatorShares
16223                },
16224                {
16225                    fn updateOperatorMetadataURI(
16226                        data: &[u8],
16227                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16228                        <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_decode_raw(
16229                                data,
16230                            )
16231                            .map(DelegationManagerCalls::updateOperatorMetadataURI)
16232                    }
16233                    updateOperatorMetadataURI
16234                },
16235                {
16236                    fn pauserRegistry(
16237                        data: &[u8],
16238                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16239                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
16240                                data,
16241                            )
16242                            .map(DelegationManagerCalls::pauserRegistry)
16243                    }
16244                    pauserRegistry
16245                },
16246                {
16247                    fn owner(
16248                        data: &[u8],
16249                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16250                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16251                            .map(DelegationManagerCalls::owner)
16252                    }
16253                    owner
16254                },
16255                {
16256                    fn getOperatorShares(
16257                        data: &[u8],
16258                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16259                        <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
16260                                data,
16261                            )
16262                            .map(DelegationManagerCalls::getOperatorShares)
16263                    }
16264                    getOperatorShares
16265                },
16266                {
16267                    fn beaconChainETHStrategy(
16268                        data: &[u8],
16269                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16270                        <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw(
16271                                data,
16272                            )
16273                            .map(DelegationManagerCalls::beaconChainETHStrategy)
16274                    }
16275                    beaconChainETHStrategy
16276                },
16277                {
16278                    fn completeQueuedWithdrawals(
16279                        data: &[u8],
16280                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16281                        <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
16282                                data,
16283                            )
16284                            .map(DelegationManagerCalls::completeQueuedWithdrawals)
16285                    }
16286                    completeQueuedWithdrawals
16287                },
16288                {
16289                    fn queuedWithdrawals(
16290                        data: &[u8],
16291                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16292                        <queuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
16293                                data,
16294                            )
16295                            .map(DelegationManagerCalls::queuedWithdrawals)
16296                    }
16297                    queuedWithdrawals
16298                },
16299                {
16300                    fn cumulativeWithdrawalsQueued(
16301                        data: &[u8],
16302                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16303                        <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_decode_raw(
16304                                data,
16305                            )
16306                            .map(DelegationManagerCalls::cumulativeWithdrawalsQueued)
16307                    }
16308                    cumulativeWithdrawalsQueued
16309                },
16310                {
16311                    fn redelegate(
16312                        data: &[u8],
16313                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16314                        <redelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16315                                data,
16316                            )
16317                            .map(DelegationManagerCalls::redelegate)
16318                    }
16319                    redelegate
16320                },
16321                {
16322                    fn pendingWithdrawals(
16323                        data: &[u8],
16324                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16325                        <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
16326                                data,
16327                            )
16328                            .map(DelegationManagerCalls::pendingWithdrawals)
16329                    }
16330                    pendingWithdrawals
16331                },
16332                {
16333                    fn delegationApproverSaltIsSpent(
16334                        data: &[u8],
16335                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16336                        <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_decode_raw(
16337                                data,
16338                            )
16339                            .map(DelegationManagerCalls::delegationApproverSaltIsSpent)
16340                    }
16341                    delegationApproverSaltIsSpent
16342                },
16343                {
16344                    fn depositScalingFactor(
16345                        data: &[u8],
16346                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16347                        <depositScalingFactorCall as alloy_sol_types::SolCall>::abi_decode_raw(
16348                                data,
16349                            )
16350                            .map(DelegationManagerCalls::depositScalingFactor)
16351                    }
16352                    depositScalingFactor
16353                },
16354                {
16355                    fn minWithdrawalDelayBlocks(
16356                        data: &[u8],
16357                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16358                        <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw(
16359                                data,
16360                            )
16361                            .map(DelegationManagerCalls::minWithdrawalDelayBlocks)
16362                    }
16363                    minWithdrawalDelayBlocks
16364                },
16365                {
16366                    fn getWithdrawableShares(
16367                        data: &[u8],
16368                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16369                        <getWithdrawableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
16370                                data,
16371                            )
16372                            .map(DelegationManagerCalls::getWithdrawableShares)
16373                    }
16374                    getWithdrawableShares
16375                },
16376                {
16377                    fn allocationManager(
16378                        data: &[u8],
16379                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16380                        <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
16381                                data,
16382                            )
16383                            .map(DelegationManagerCalls::allocationManager)
16384                    }
16385                    allocationManager
16386                },
16387                {
16388                    fn initialize(
16389                        data: &[u8],
16390                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16391                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
16392                                data,
16393                            )
16394                            .map(DelegationManagerCalls::initialize)
16395                    }
16396                    initialize
16397                },
16398                {
16399                    fn undelegate(
16400                        data: &[u8],
16401                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16402                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16403                                data,
16404                            )
16405                            .map(DelegationManagerCalls::undelegate)
16406                    }
16407                    undelegate
16408                },
16409                {
16410                    fn completeQueuedWithdrawal(
16411                        data: &[u8],
16412                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16413                        <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
16414                                data,
16415                            )
16416                            .map(DelegationManagerCalls::completeQueuedWithdrawal)
16417                    }
16418                    completeQueuedWithdrawal
16419                },
16420                {
16421                    fn delegateTo(
16422                        data: &[u8],
16423                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16424                        <delegateToCall as alloy_sol_types::SolCall>::abi_decode_raw(
16425                                data,
16426                            )
16427                            .map(DelegationManagerCalls::delegateTo)
16428                    }
16429                    delegateTo
16430                },
16431                {
16432                    fn getOperatorsShares(
16433                        data: &[u8],
16434                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16435                        <getOperatorsSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
16436                                data,
16437                            )
16438                            .map(DelegationManagerCalls::getOperatorsShares)
16439                    }
16440                    getOperatorsShares
16441                },
16442                {
16443                    fn transferOwnership(
16444                        data: &[u8],
16445                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16446                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
16447                                data,
16448                            )
16449                            .map(DelegationManagerCalls::transferOwnership)
16450                    }
16451                    transferOwnership
16452                },
16453                {
16454                    fn domainSeparator(
16455                        data: &[u8],
16456                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16457                        <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
16458                                data,
16459                            )
16460                            .map(DelegationManagerCalls::domainSeparator)
16461                    }
16462                    domainSeparator
16463                },
16464                {
16465                    fn unpause(
16466                        data: &[u8],
16467                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16468                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16469                            .map(DelegationManagerCalls::unpause)
16470                    }
16471                    unpause
16472                },
16473                {
16474                    fn getQueuedWithdrawalRoots(
16475                        data: &[u8],
16476                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16477                        <getQueuedWithdrawalRootsCall as alloy_sol_types::SolCall>::abi_decode_raw(
16478                                data,
16479                            )
16480                            .map(DelegationManagerCalls::getQueuedWithdrawalRoots)
16481                    }
16482                    getQueuedWithdrawalRoots
16483                },
16484            ];
16485            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16486                return Err(
16487                    alloy_sol_types::Error::unknown_selector(
16488                        <Self as alloy_sol_types::SolInterface>::NAME,
16489                        selector,
16490                    ),
16491                );
16492            };
16493            DECODE_SHIMS[idx](data)
16494        }
16495        #[inline]
16496        #[allow(non_snake_case)]
16497        fn abi_decode_raw_validate(
16498            selector: [u8; 4],
16499            data: &[u8],
16500        ) -> alloy_sol_types::Result<Self> {
16501            static DECODE_VALIDATE_SHIMS: &[fn(
16502                &[u8],
16503            ) -> alloy_sol_types::Result<DelegationManagerCalls>] = &[
16504                {
16505                    fn DELEGATION_APPROVAL_TYPEHASH(
16506                        data: &[u8],
16507                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16508                        <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16509                                data,
16510                            )
16511                            .map(DelegationManagerCalls::DELEGATION_APPROVAL_TYPEHASH)
16512                    }
16513                    DELEGATION_APPROVAL_TYPEHASH
16514                },
16515                {
16516                    fn calculateDelegationApprovalDigestHash(
16517                        data: &[u8],
16518                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16519                        <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16520                                data,
16521                            )
16522                            .map(
16523                                DelegationManagerCalls::calculateDelegationApprovalDigestHash,
16524                            )
16525                    }
16526                    calculateDelegationApprovalDigestHash
16527                },
16528                {
16529                    fn queueWithdrawals(
16530                        data: &[u8],
16531                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16532                        <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16533                                data,
16534                            )
16535                            .map(DelegationManagerCalls::queueWithdrawals)
16536                    }
16537                    queueWithdrawals
16538                },
16539                {
16540                    fn pause(
16541                        data: &[u8],
16542                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16543                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16544                                data,
16545                            )
16546                            .map(DelegationManagerCalls::pause)
16547                    }
16548                    pause
16549                },
16550                {
16551                    fn convertToDepositShares(
16552                        data: &[u8],
16553                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16554                        <convertToDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16555                                data,
16556                            )
16557                            .map(DelegationManagerCalls::convertToDepositShares)
16558                    }
16559                    convertToDepositShares
16560                },
16561                {
16562                    fn registerAsOperator(
16563                        data: &[u8],
16564                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16565                        <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16566                                data,
16567                            )
16568                            .map(DelegationManagerCalls::registerAsOperator)
16569                    }
16570                    registerAsOperator
16571                },
16572                {
16573                    fn strategyManager(
16574                        data: &[u8],
16575                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16576                        <strategyManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16577                                data,
16578                            )
16579                            .map(DelegationManagerCalls::strategyManager)
16580                    }
16581                    strategyManager
16582                },
16583                {
16584                    fn increaseDelegatedShares(
16585                        data: &[u8],
16586                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16587                        <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16588                                data,
16589                            )
16590                            .map(DelegationManagerCalls::increaseDelegatedShares)
16591                    }
16592                    increaseDelegatedShares
16593                },
16594                {
16595                    fn delegationApprover(
16596                        data: &[u8],
16597                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16598                        <delegationApproverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16599                                data,
16600                            )
16601                            .map(DelegationManagerCalls::delegationApprover)
16602                    }
16603                    delegationApprover
16604                },
16605                {
16606                    fn isDelegated(
16607                        data: &[u8],
16608                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16609                        <isDelegatedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16610                                data,
16611                            )
16612                            .map(DelegationManagerCalls::isDelegated)
16613                    }
16614                    isDelegated
16615                },
16616                {
16617                    fn permissionController(
16618                        data: &[u8],
16619                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16620                        <permissionControllerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16621                                data,
16622                            )
16623                            .map(DelegationManagerCalls::permissionController)
16624                    }
16625                    permissionController
16626                },
16627                {
16628                    fn eigenPodManager(
16629                        data: &[u8],
16630                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16631                        <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16632                                data,
16633                            )
16634                            .map(DelegationManagerCalls::eigenPodManager)
16635                    }
16636                    eigenPodManager
16637                },
16638                {
16639                    fn modifyOperatorDetails(
16640                        data: &[u8],
16641                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16642                        <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16643                                data,
16644                            )
16645                            .map(DelegationManagerCalls::modifyOperatorDetails)
16646                    }
16647                    modifyOperatorDetails
16648                },
16649                {
16650                    fn version(
16651                        data: &[u8],
16652                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16653                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16654                                data,
16655                            )
16656                            .map(DelegationManagerCalls::version)
16657                    }
16658                    version
16659                },
16660                {
16661                    fn pauseAll(
16662                        data: &[u8],
16663                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16664                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16665                                data,
16666                            )
16667                            .map(DelegationManagerCalls::pauseAll)
16668                    }
16669                    pauseAll
16670                },
16671                {
16672                    fn calculateWithdrawalRoot(
16673                        data: &[u8],
16674                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16675                        <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16676                                data,
16677                            )
16678                            .map(DelegationManagerCalls::calculateWithdrawalRoot)
16679                    }
16680                    calculateWithdrawalRoot
16681                },
16682                {
16683                    fn paused_0(
16684                        data: &[u8],
16685                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16686                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16687                                data,
16688                            )
16689                            .map(DelegationManagerCalls::paused_0)
16690                    }
16691                    paused_0
16692                },
16693                {
16694                    fn paused_1(
16695                        data: &[u8],
16696                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16697                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16698                                data,
16699                            )
16700                            .map(DelegationManagerCalls::paused_1)
16701                    }
16702                    paused_1
16703                },
16704                {
16705                    fn getQueuedWithdrawal(
16706                        data: &[u8],
16707                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16708                        <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16709                                data,
16710                            )
16711                            .map(DelegationManagerCalls::getQueuedWithdrawal)
16712                    }
16713                    getQueuedWithdrawal
16714                },
16715                {
16716                    fn getQueuedWithdrawals(
16717                        data: &[u8],
16718                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16719                        <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16720                                data,
16721                            )
16722                            .map(DelegationManagerCalls::getQueuedWithdrawals)
16723                    }
16724                    getQueuedWithdrawals
16725                },
16726                {
16727                    fn slashOperatorShares(
16728                        data: &[u8],
16729                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16730                        <slashOperatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16731                                data,
16732                            )
16733                            .map(DelegationManagerCalls::slashOperatorShares)
16734                    }
16735                    slashOperatorShares
16736                },
16737                {
16738                    fn decreaseDelegatedShares(
16739                        data: &[u8],
16740                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16741                        <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16742                                data,
16743                            )
16744                            .map(DelegationManagerCalls::decreaseDelegatedShares)
16745                    }
16746                    decreaseDelegatedShares
16747                },
16748                {
16749                    fn delegatedTo(
16750                        data: &[u8],
16751                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16752                        <delegatedToCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16753                                data,
16754                            )
16755                            .map(DelegationManagerCalls::delegatedTo)
16756                    }
16757                    delegatedTo
16758                },
16759                {
16760                    fn getDepositedShares(
16761                        data: &[u8],
16762                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16763                        <getDepositedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16764                                data,
16765                            )
16766                            .map(DelegationManagerCalls::getDepositedShares)
16767                    }
16768                    getDepositedShares
16769                },
16770                {
16771                    fn isOperator(
16772                        data: &[u8],
16773                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16774                        <isOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16775                                data,
16776                            )
16777                            .map(DelegationManagerCalls::isOperator)
16778                    }
16779                    isOperator
16780                },
16781                {
16782                    fn getSlashableSharesInQueue(
16783                        data: &[u8],
16784                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16785                        <getSlashableSharesInQueueCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16786                                data,
16787                            )
16788                            .map(DelegationManagerCalls::getSlashableSharesInQueue)
16789                    }
16790                    getSlashableSharesInQueue
16791                },
16792                {
16793                    fn renounceOwnership(
16794                        data: &[u8],
16795                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16796                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16797                                data,
16798                            )
16799                            .map(DelegationManagerCalls::renounceOwnership)
16800                    }
16801                    renounceOwnership
16802                },
16803                {
16804                    fn operatorShares(
16805                        data: &[u8],
16806                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16807                        <operatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16808                                data,
16809                            )
16810                            .map(DelegationManagerCalls::operatorShares)
16811                    }
16812                    operatorShares
16813                },
16814                {
16815                    fn updateOperatorMetadataURI(
16816                        data: &[u8],
16817                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16818                        <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16819                                data,
16820                            )
16821                            .map(DelegationManagerCalls::updateOperatorMetadataURI)
16822                    }
16823                    updateOperatorMetadataURI
16824                },
16825                {
16826                    fn pauserRegistry(
16827                        data: &[u8],
16828                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16829                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16830                                data,
16831                            )
16832                            .map(DelegationManagerCalls::pauserRegistry)
16833                    }
16834                    pauserRegistry
16835                },
16836                {
16837                    fn owner(
16838                        data: &[u8],
16839                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16840                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16841                                data,
16842                            )
16843                            .map(DelegationManagerCalls::owner)
16844                    }
16845                    owner
16846                },
16847                {
16848                    fn getOperatorShares(
16849                        data: &[u8],
16850                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16851                        <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16852                                data,
16853                            )
16854                            .map(DelegationManagerCalls::getOperatorShares)
16855                    }
16856                    getOperatorShares
16857                },
16858                {
16859                    fn beaconChainETHStrategy(
16860                        data: &[u8],
16861                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16862                        <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16863                                data,
16864                            )
16865                            .map(DelegationManagerCalls::beaconChainETHStrategy)
16866                    }
16867                    beaconChainETHStrategy
16868                },
16869                {
16870                    fn completeQueuedWithdrawals(
16871                        data: &[u8],
16872                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16873                        <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16874                                data,
16875                            )
16876                            .map(DelegationManagerCalls::completeQueuedWithdrawals)
16877                    }
16878                    completeQueuedWithdrawals
16879                },
16880                {
16881                    fn queuedWithdrawals(
16882                        data: &[u8],
16883                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16884                        <queuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16885                                data,
16886                            )
16887                            .map(DelegationManagerCalls::queuedWithdrawals)
16888                    }
16889                    queuedWithdrawals
16890                },
16891                {
16892                    fn cumulativeWithdrawalsQueued(
16893                        data: &[u8],
16894                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16895                        <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16896                                data,
16897                            )
16898                            .map(DelegationManagerCalls::cumulativeWithdrawalsQueued)
16899                    }
16900                    cumulativeWithdrawalsQueued
16901                },
16902                {
16903                    fn redelegate(
16904                        data: &[u8],
16905                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16906                        <redelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16907                                data,
16908                            )
16909                            .map(DelegationManagerCalls::redelegate)
16910                    }
16911                    redelegate
16912                },
16913                {
16914                    fn pendingWithdrawals(
16915                        data: &[u8],
16916                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16917                        <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16918                                data,
16919                            )
16920                            .map(DelegationManagerCalls::pendingWithdrawals)
16921                    }
16922                    pendingWithdrawals
16923                },
16924                {
16925                    fn delegationApproverSaltIsSpent(
16926                        data: &[u8],
16927                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16928                        <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16929                                data,
16930                            )
16931                            .map(DelegationManagerCalls::delegationApproverSaltIsSpent)
16932                    }
16933                    delegationApproverSaltIsSpent
16934                },
16935                {
16936                    fn depositScalingFactor(
16937                        data: &[u8],
16938                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16939                        <depositScalingFactorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16940                                data,
16941                            )
16942                            .map(DelegationManagerCalls::depositScalingFactor)
16943                    }
16944                    depositScalingFactor
16945                },
16946                {
16947                    fn minWithdrawalDelayBlocks(
16948                        data: &[u8],
16949                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16950                        <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16951                                data,
16952                            )
16953                            .map(DelegationManagerCalls::minWithdrawalDelayBlocks)
16954                    }
16955                    minWithdrawalDelayBlocks
16956                },
16957                {
16958                    fn getWithdrawableShares(
16959                        data: &[u8],
16960                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16961                        <getWithdrawableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16962                                data,
16963                            )
16964                            .map(DelegationManagerCalls::getWithdrawableShares)
16965                    }
16966                    getWithdrawableShares
16967                },
16968                {
16969                    fn allocationManager(
16970                        data: &[u8],
16971                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16972                        <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16973                                data,
16974                            )
16975                            .map(DelegationManagerCalls::allocationManager)
16976                    }
16977                    allocationManager
16978                },
16979                {
16980                    fn initialize(
16981                        data: &[u8],
16982                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16983                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16984                                data,
16985                            )
16986                            .map(DelegationManagerCalls::initialize)
16987                    }
16988                    initialize
16989                },
16990                {
16991                    fn undelegate(
16992                        data: &[u8],
16993                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
16994                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16995                                data,
16996                            )
16997                            .map(DelegationManagerCalls::undelegate)
16998                    }
16999                    undelegate
17000                },
17001                {
17002                    fn completeQueuedWithdrawal(
17003                        data: &[u8],
17004                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
17005                        <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17006                                data,
17007                            )
17008                            .map(DelegationManagerCalls::completeQueuedWithdrawal)
17009                    }
17010                    completeQueuedWithdrawal
17011                },
17012                {
17013                    fn delegateTo(
17014                        data: &[u8],
17015                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
17016                        <delegateToCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17017                                data,
17018                            )
17019                            .map(DelegationManagerCalls::delegateTo)
17020                    }
17021                    delegateTo
17022                },
17023                {
17024                    fn getOperatorsShares(
17025                        data: &[u8],
17026                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
17027                        <getOperatorsSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17028                                data,
17029                            )
17030                            .map(DelegationManagerCalls::getOperatorsShares)
17031                    }
17032                    getOperatorsShares
17033                },
17034                {
17035                    fn transferOwnership(
17036                        data: &[u8],
17037                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
17038                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17039                                data,
17040                            )
17041                            .map(DelegationManagerCalls::transferOwnership)
17042                    }
17043                    transferOwnership
17044                },
17045                {
17046                    fn domainSeparator(
17047                        data: &[u8],
17048                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
17049                        <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17050                                data,
17051                            )
17052                            .map(DelegationManagerCalls::domainSeparator)
17053                    }
17054                    domainSeparator
17055                },
17056                {
17057                    fn unpause(
17058                        data: &[u8],
17059                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
17060                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17061                                data,
17062                            )
17063                            .map(DelegationManagerCalls::unpause)
17064                    }
17065                    unpause
17066                },
17067                {
17068                    fn getQueuedWithdrawalRoots(
17069                        data: &[u8],
17070                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
17071                        <getQueuedWithdrawalRootsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17072                                data,
17073                            )
17074                            .map(DelegationManagerCalls::getQueuedWithdrawalRoots)
17075                    }
17076                    getQueuedWithdrawalRoots
17077                },
17078            ];
17079            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17080                return Err(
17081                    alloy_sol_types::Error::unknown_selector(
17082                        <Self as alloy_sol_types::SolInterface>::NAME,
17083                        selector,
17084                    ),
17085                );
17086            };
17087            DECODE_VALIDATE_SHIMS[idx](data)
17088        }
17089        #[inline]
17090        fn abi_encoded_size(&self) -> usize {
17091            match self {
17092                Self::DELEGATION_APPROVAL_TYPEHASH(inner) => {
17093                    <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encoded_size(
17094                        inner,
17095                    )
17096                }
17097                Self::allocationManager(inner) => {
17098                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
17099                        inner,
17100                    )
17101                }
17102                Self::beaconChainETHStrategy(inner) => {
17103                    <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_encoded_size(
17104                        inner,
17105                    )
17106                }
17107                Self::calculateDelegationApprovalDigestHash(inner) => {
17108                    <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
17109                        inner,
17110                    )
17111                }
17112                Self::calculateWithdrawalRoot(inner) => {
17113                    <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17114                        inner,
17115                    )
17116                }
17117                Self::completeQueuedWithdrawal(inner) => {
17118                    <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
17119                        inner,
17120                    )
17121                }
17122                Self::completeQueuedWithdrawals(inner) => {
17123                    <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17124                        inner,
17125                    )
17126                }
17127                Self::convertToDepositShares(inner) => {
17128                    <convertToDepositSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
17129                        inner,
17130                    )
17131                }
17132                Self::cumulativeWithdrawalsQueued(inner) => {
17133                    <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_encoded_size(
17134                        inner,
17135                    )
17136                }
17137                Self::decreaseDelegatedShares(inner) => {
17138                    <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
17139                        inner,
17140                    )
17141                }
17142                Self::delegateTo(inner) => {
17143                    <delegateToCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17144                }
17145                Self::delegatedTo(inner) => {
17146                    <delegatedToCall as alloy_sol_types::SolCall>::abi_encoded_size(
17147                        inner,
17148                    )
17149                }
17150                Self::delegationApprover(inner) => {
17151                    <delegationApproverCall as alloy_sol_types::SolCall>::abi_encoded_size(
17152                        inner,
17153                    )
17154                }
17155                Self::delegationApproverSaltIsSpent(inner) => {
17156                    <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_encoded_size(
17157                        inner,
17158                    )
17159                }
17160                Self::depositScalingFactor(inner) => {
17161                    <depositScalingFactorCall as alloy_sol_types::SolCall>::abi_encoded_size(
17162                        inner,
17163                    )
17164                }
17165                Self::domainSeparator(inner) => {
17166                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
17167                        inner,
17168                    )
17169                }
17170                Self::eigenPodManager(inner) => {
17171                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
17172                        inner,
17173                    )
17174                }
17175                Self::getDepositedShares(inner) => {
17176                    <getDepositedSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
17177                        inner,
17178                    )
17179                }
17180                Self::getOperatorShares(inner) => {
17181                    <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
17182                        inner,
17183                    )
17184                }
17185                Self::getOperatorsShares(inner) => {
17186                    <getOperatorsSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
17187                        inner,
17188                    )
17189                }
17190                Self::getQueuedWithdrawal(inner) => {
17191                    <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
17192                        inner,
17193                    )
17194                }
17195                Self::getQueuedWithdrawalRoots(inner) => {
17196                    <getQueuedWithdrawalRootsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17197                        inner,
17198                    )
17199                }
17200                Self::getQueuedWithdrawals(inner) => {
17201                    <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17202                        inner,
17203                    )
17204                }
17205                Self::getSlashableSharesInQueue(inner) => {
17206                    <getSlashableSharesInQueueCall as alloy_sol_types::SolCall>::abi_encoded_size(
17207                        inner,
17208                    )
17209                }
17210                Self::getWithdrawableShares(inner) => {
17211                    <getWithdrawableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
17212                        inner,
17213                    )
17214                }
17215                Self::increaseDelegatedShares(inner) => {
17216                    <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
17217                        inner,
17218                    )
17219                }
17220                Self::initialize(inner) => {
17221                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17222                }
17223                Self::isDelegated(inner) => {
17224                    <isDelegatedCall as alloy_sol_types::SolCall>::abi_encoded_size(
17225                        inner,
17226                    )
17227                }
17228                Self::isOperator(inner) => {
17229                    <isOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17230                }
17231                Self::minWithdrawalDelayBlocks(inner) => {
17232                    <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encoded_size(
17233                        inner,
17234                    )
17235                }
17236                Self::modifyOperatorDetails(inner) => {
17237                    <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17238                        inner,
17239                    )
17240                }
17241                Self::operatorShares(inner) => {
17242                    <operatorSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
17243                        inner,
17244                    )
17245                }
17246                Self::owner(inner) => {
17247                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17248                }
17249                Self::pause(inner) => {
17250                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17251                }
17252                Self::pauseAll(inner) => {
17253                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17254                }
17255                Self::paused_0(inner) => {
17256                    <paused_0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17257                }
17258                Self::paused_1(inner) => {
17259                    <paused_1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17260                }
17261                Self::pauserRegistry(inner) => {
17262                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
17263                        inner,
17264                    )
17265                }
17266                Self::pendingWithdrawals(inner) => {
17267                    <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17268                        inner,
17269                    )
17270                }
17271                Self::permissionController(inner) => {
17272                    <permissionControllerCall as alloy_sol_types::SolCall>::abi_encoded_size(
17273                        inner,
17274                    )
17275                }
17276                Self::queueWithdrawals(inner) => {
17277                    <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17278                        inner,
17279                    )
17280                }
17281                Self::queuedWithdrawals(inner) => {
17282                    <queuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17283                        inner,
17284                    )
17285                }
17286                Self::redelegate(inner) => {
17287                    <redelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17288                }
17289                Self::registerAsOperator(inner) => {
17290                    <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
17291                        inner,
17292                    )
17293                }
17294                Self::renounceOwnership(inner) => {
17295                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17296                        inner,
17297                    )
17298                }
17299                Self::slashOperatorShares(inner) => {
17300                    <slashOperatorSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
17301                        inner,
17302                    )
17303                }
17304                Self::strategyManager(inner) => {
17305                    <strategyManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
17306                        inner,
17307                    )
17308                }
17309                Self::transferOwnership(inner) => {
17310                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17311                        inner,
17312                    )
17313                }
17314                Self::undelegate(inner) => {
17315                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17316                }
17317                Self::unpause(inner) => {
17318                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17319                }
17320                Self::updateOperatorMetadataURI(inner) => {
17321                    <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_encoded_size(
17322                        inner,
17323                    )
17324                }
17325                Self::version(inner) => {
17326                    <versionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17327                }
17328            }
17329        }
17330        #[inline]
17331        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
17332            match self {
17333                Self::DELEGATION_APPROVAL_TYPEHASH(inner) => {
17334                    <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encode_raw(
17335                        inner,
17336                        out,
17337                    )
17338                }
17339                Self::allocationManager(inner) => {
17340                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
17341                        inner,
17342                        out,
17343                    )
17344                }
17345                Self::beaconChainETHStrategy(inner) => {
17346                    <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_encode_raw(
17347                        inner,
17348                        out,
17349                    )
17350                }
17351                Self::calculateDelegationApprovalDigestHash(inner) => {
17352                    <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
17353                        inner,
17354                        out,
17355                    )
17356                }
17357                Self::calculateWithdrawalRoot(inner) => {
17358                    <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17359                        inner,
17360                        out,
17361                    )
17362                }
17363                Self::completeQueuedWithdrawal(inner) => {
17364                    <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
17365                        inner,
17366                        out,
17367                    )
17368                }
17369                Self::completeQueuedWithdrawals(inner) => {
17370                    <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17371                        inner,
17372                        out,
17373                    )
17374                }
17375                Self::convertToDepositShares(inner) => {
17376                    <convertToDepositSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
17377                        inner,
17378                        out,
17379                    )
17380                }
17381                Self::cumulativeWithdrawalsQueued(inner) => {
17382                    <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_encode_raw(
17383                        inner,
17384                        out,
17385                    )
17386                }
17387                Self::decreaseDelegatedShares(inner) => {
17388                    <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
17389                        inner,
17390                        out,
17391                    )
17392                }
17393                Self::delegateTo(inner) => {
17394                    <delegateToCall as alloy_sol_types::SolCall>::abi_encode_raw(
17395                        inner,
17396                        out,
17397                    )
17398                }
17399                Self::delegatedTo(inner) => {
17400                    <delegatedToCall as alloy_sol_types::SolCall>::abi_encode_raw(
17401                        inner,
17402                        out,
17403                    )
17404                }
17405                Self::delegationApprover(inner) => {
17406                    <delegationApproverCall as alloy_sol_types::SolCall>::abi_encode_raw(
17407                        inner,
17408                        out,
17409                    )
17410                }
17411                Self::delegationApproverSaltIsSpent(inner) => {
17412                    <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_encode_raw(
17413                        inner,
17414                        out,
17415                    )
17416                }
17417                Self::depositScalingFactor(inner) => {
17418                    <depositScalingFactorCall as alloy_sol_types::SolCall>::abi_encode_raw(
17419                        inner,
17420                        out,
17421                    )
17422                }
17423                Self::domainSeparator(inner) => {
17424                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
17425                        inner,
17426                        out,
17427                    )
17428                }
17429                Self::eigenPodManager(inner) => {
17430                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
17431                        inner,
17432                        out,
17433                    )
17434                }
17435                Self::getDepositedShares(inner) => {
17436                    <getDepositedSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
17437                        inner,
17438                        out,
17439                    )
17440                }
17441                Self::getOperatorShares(inner) => {
17442                    <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
17443                        inner,
17444                        out,
17445                    )
17446                }
17447                Self::getOperatorsShares(inner) => {
17448                    <getOperatorsSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
17449                        inner,
17450                        out,
17451                    )
17452                }
17453                Self::getQueuedWithdrawal(inner) => {
17454                    <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
17455                        inner,
17456                        out,
17457                    )
17458                }
17459                Self::getQueuedWithdrawalRoots(inner) => {
17460                    <getQueuedWithdrawalRootsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17461                        inner,
17462                        out,
17463                    )
17464                }
17465                Self::getQueuedWithdrawals(inner) => {
17466                    <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17467                        inner,
17468                        out,
17469                    )
17470                }
17471                Self::getSlashableSharesInQueue(inner) => {
17472                    <getSlashableSharesInQueueCall as alloy_sol_types::SolCall>::abi_encode_raw(
17473                        inner,
17474                        out,
17475                    )
17476                }
17477                Self::getWithdrawableShares(inner) => {
17478                    <getWithdrawableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
17479                        inner,
17480                        out,
17481                    )
17482                }
17483                Self::increaseDelegatedShares(inner) => {
17484                    <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
17485                        inner,
17486                        out,
17487                    )
17488                }
17489                Self::initialize(inner) => {
17490                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
17491                        inner,
17492                        out,
17493                    )
17494                }
17495                Self::isDelegated(inner) => {
17496                    <isDelegatedCall as alloy_sol_types::SolCall>::abi_encode_raw(
17497                        inner,
17498                        out,
17499                    )
17500                }
17501                Self::isOperator(inner) => {
17502                    <isOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
17503                        inner,
17504                        out,
17505                    )
17506                }
17507                Self::minWithdrawalDelayBlocks(inner) => {
17508                    <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encode_raw(
17509                        inner,
17510                        out,
17511                    )
17512                }
17513                Self::modifyOperatorDetails(inner) => {
17514                    <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17515                        inner,
17516                        out,
17517                    )
17518                }
17519                Self::operatorShares(inner) => {
17520                    <operatorSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
17521                        inner,
17522                        out,
17523                    )
17524                }
17525                Self::owner(inner) => {
17526                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17527                }
17528                Self::pause(inner) => {
17529                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17530                }
17531                Self::pauseAll(inner) => {
17532                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encode_raw(
17533                        inner,
17534                        out,
17535                    )
17536                }
17537                Self::paused_0(inner) => {
17538                    <paused_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
17539                        inner,
17540                        out,
17541                    )
17542                }
17543                Self::paused_1(inner) => {
17544                    <paused_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
17545                        inner,
17546                        out,
17547                    )
17548                }
17549                Self::pauserRegistry(inner) => {
17550                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
17551                        inner,
17552                        out,
17553                    )
17554                }
17555                Self::pendingWithdrawals(inner) => {
17556                    <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17557                        inner,
17558                        out,
17559                    )
17560                }
17561                Self::permissionController(inner) => {
17562                    <permissionControllerCall as alloy_sol_types::SolCall>::abi_encode_raw(
17563                        inner,
17564                        out,
17565                    )
17566                }
17567                Self::queueWithdrawals(inner) => {
17568                    <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17569                        inner,
17570                        out,
17571                    )
17572                }
17573                Self::queuedWithdrawals(inner) => {
17574                    <queuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17575                        inner,
17576                        out,
17577                    )
17578                }
17579                Self::redelegate(inner) => {
17580                    <redelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17581                        inner,
17582                        out,
17583                    )
17584                }
17585                Self::registerAsOperator(inner) => {
17586                    <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
17587                        inner,
17588                        out,
17589                    )
17590                }
17591                Self::renounceOwnership(inner) => {
17592                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
17593                        inner,
17594                        out,
17595                    )
17596                }
17597                Self::slashOperatorShares(inner) => {
17598                    <slashOperatorSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
17599                        inner,
17600                        out,
17601                    )
17602                }
17603                Self::strategyManager(inner) => {
17604                    <strategyManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
17605                        inner,
17606                        out,
17607                    )
17608                }
17609                Self::transferOwnership(inner) => {
17610                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
17611                        inner,
17612                        out,
17613                    )
17614                }
17615                Self::undelegate(inner) => {
17616                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17617                        inner,
17618                        out,
17619                    )
17620                }
17621                Self::unpause(inner) => {
17622                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17623                }
17624                Self::updateOperatorMetadataURI(inner) => {
17625                    <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_encode_raw(
17626                        inner,
17627                        out,
17628                    )
17629                }
17630                Self::version(inner) => {
17631                    <versionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17632                }
17633            }
17634        }
17635    }
17636    ///Container for all the [`DelegationManager`](self) custom errors.
17637    #[derive(serde::Serialize, serde::Deserialize)]
17638    #[derive(Debug, PartialEq, Eq, Hash)]
17639    pub enum DelegationManagerErrors {
17640        #[allow(missing_docs)]
17641        ActivelyDelegated(ActivelyDelegated),
17642        #[allow(missing_docs)]
17643        CallerCannotUndelegate(CallerCannotUndelegate),
17644        #[allow(missing_docs)]
17645        CurrentlyPaused(CurrentlyPaused),
17646        #[allow(missing_docs)]
17647        FullySlashed(FullySlashed),
17648        #[allow(missing_docs)]
17649        InputAddressZero(InputAddressZero),
17650        #[allow(missing_docs)]
17651        InputArrayLengthMismatch(InputArrayLengthMismatch),
17652        #[allow(missing_docs)]
17653        InputArrayLengthZero(InputArrayLengthZero),
17654        #[allow(missing_docs)]
17655        InvalidNewPausedStatus(InvalidNewPausedStatus),
17656        #[allow(missing_docs)]
17657        InvalidPermissions(InvalidPermissions),
17658        #[allow(missing_docs)]
17659        InvalidShortString(InvalidShortString),
17660        #[allow(missing_docs)]
17661        InvalidSignature(InvalidSignature),
17662        #[allow(missing_docs)]
17663        InvalidSnapshotOrdering(InvalidSnapshotOrdering),
17664        #[allow(missing_docs)]
17665        NotActivelyDelegated(NotActivelyDelegated),
17666        #[allow(missing_docs)]
17667        OnlyAllocationManager(OnlyAllocationManager),
17668        #[allow(missing_docs)]
17669        OnlyEigenPodManager(OnlyEigenPodManager),
17670        #[allow(missing_docs)]
17671        OnlyPauser(OnlyPauser),
17672        #[allow(missing_docs)]
17673        OnlyStrategyManagerOrEigenPodManager(OnlyStrategyManagerOrEigenPodManager),
17674        #[allow(missing_docs)]
17675        OnlyUnpauser(OnlyUnpauser),
17676        #[allow(missing_docs)]
17677        OperatorNotRegistered(OperatorNotRegistered),
17678        #[allow(missing_docs)]
17679        OperatorsCannotUndelegate(OperatorsCannotUndelegate),
17680        #[allow(missing_docs)]
17681        SaltSpent(SaltSpent),
17682        #[allow(missing_docs)]
17683        SignatureExpired(SignatureExpired),
17684        #[allow(missing_docs)]
17685        StringTooLong(StringTooLong),
17686        #[allow(missing_docs)]
17687        WithdrawalDelayNotElapsed(WithdrawalDelayNotElapsed),
17688        #[allow(missing_docs)]
17689        WithdrawalNotQueued(WithdrawalNotQueued),
17690        #[allow(missing_docs)]
17691        WithdrawerNotCaller(WithdrawerNotCaller),
17692    }
17693    #[automatically_derived]
17694    impl DelegationManagerErrors {
17695        /// All the selectors of this enum.
17696        ///
17697        /// Note that the selectors might not be in the same order as the variants.
17698        /// No guarantees are made about the order of the selectors.
17699        ///
17700        /// Prefer using `SolInterface` methods instead.
17701        pub const SELECTORS: &'static [[u8; 4usize]] = &[
17702            [8u8, 25u8, 189u8, 205u8],
17703            [17u8, 72u8, 26u8, 148u8],
17704            [35u8, 216u8, 113u8, 165u8],
17705            [37u8, 236u8, 108u8, 31u8],
17706            [40u8, 206u8, 241u8, 164u8],
17707            [42u8, 55u8, 28u8, 126u8],
17708            [48u8, 90u8, 39u8, 169u8],
17709            [53u8, 49u8, 50u8, 68u8],
17710            [60u8, 147u8, 52u8, 70u8],
17711            [67u8, 113u8, 74u8, 253u8],
17712            [88u8, 68u8, 52u8, 212u8],
17713            [115u8, 99u8, 33u8, 118u8],
17714            [117u8, 223u8, 81u8, 220u8],
17715            [119u8, 229u8, 106u8, 6u8],
17716            [121u8, 72u8, 33u8, 255u8],
17717            [121u8, 108u8, 197u8, 37u8],
17718            [132u8, 10u8, 72u8, 213u8],
17719            [135u8, 201u8, 210u8, 25u8],
17720            [139u8, 170u8, 87u8, 159u8],
17721            [142u8, 81u8, 153u8, 168u8],
17722            [147u8, 45u8, 148u8, 247u8],
17723            [165u8, 199u8, 196u8, 69u8],
17724            [179u8, 81u8, 43u8, 12u8],
17725            [198u8, 29u8, 202u8, 93u8],
17726            [200u8, 78u8, 153u8, 132u8],
17727            [241u8, 236u8, 245u8, 194u8],
17728        ];
17729    }
17730    #[automatically_derived]
17731    impl alloy_sol_types::SolInterface for DelegationManagerErrors {
17732        const NAME: &'static str = "DelegationManagerErrors";
17733        const MIN_DATA_LENGTH: usize = 0usize;
17734        const COUNT: usize = 26usize;
17735        #[inline]
17736        fn selector(&self) -> [u8; 4] {
17737            match self {
17738                Self::ActivelyDelegated(_) => {
17739                    <ActivelyDelegated as alloy_sol_types::SolError>::SELECTOR
17740                }
17741                Self::CallerCannotUndelegate(_) => {
17742                    <CallerCannotUndelegate as alloy_sol_types::SolError>::SELECTOR
17743                }
17744                Self::CurrentlyPaused(_) => {
17745                    <CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR
17746                }
17747                Self::FullySlashed(_) => {
17748                    <FullySlashed as alloy_sol_types::SolError>::SELECTOR
17749                }
17750                Self::InputAddressZero(_) => {
17751                    <InputAddressZero as alloy_sol_types::SolError>::SELECTOR
17752                }
17753                Self::InputArrayLengthMismatch(_) => {
17754                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
17755                }
17756                Self::InputArrayLengthZero(_) => {
17757                    <InputArrayLengthZero as alloy_sol_types::SolError>::SELECTOR
17758                }
17759                Self::InvalidNewPausedStatus(_) => {
17760                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::SELECTOR
17761                }
17762                Self::InvalidPermissions(_) => {
17763                    <InvalidPermissions as alloy_sol_types::SolError>::SELECTOR
17764                }
17765                Self::InvalidShortString(_) => {
17766                    <InvalidShortString as alloy_sol_types::SolError>::SELECTOR
17767                }
17768                Self::InvalidSignature(_) => {
17769                    <InvalidSignature as alloy_sol_types::SolError>::SELECTOR
17770                }
17771                Self::InvalidSnapshotOrdering(_) => {
17772                    <InvalidSnapshotOrdering as alloy_sol_types::SolError>::SELECTOR
17773                }
17774                Self::NotActivelyDelegated(_) => {
17775                    <NotActivelyDelegated as alloy_sol_types::SolError>::SELECTOR
17776                }
17777                Self::OnlyAllocationManager(_) => {
17778                    <OnlyAllocationManager as alloy_sol_types::SolError>::SELECTOR
17779                }
17780                Self::OnlyEigenPodManager(_) => {
17781                    <OnlyEigenPodManager as alloy_sol_types::SolError>::SELECTOR
17782                }
17783                Self::OnlyPauser(_) => {
17784                    <OnlyPauser as alloy_sol_types::SolError>::SELECTOR
17785                }
17786                Self::OnlyStrategyManagerOrEigenPodManager(_) => {
17787                    <OnlyStrategyManagerOrEigenPodManager as alloy_sol_types::SolError>::SELECTOR
17788                }
17789                Self::OnlyUnpauser(_) => {
17790                    <OnlyUnpauser as alloy_sol_types::SolError>::SELECTOR
17791                }
17792                Self::OperatorNotRegistered(_) => {
17793                    <OperatorNotRegistered as alloy_sol_types::SolError>::SELECTOR
17794                }
17795                Self::OperatorsCannotUndelegate(_) => {
17796                    <OperatorsCannotUndelegate as alloy_sol_types::SolError>::SELECTOR
17797                }
17798                Self::SaltSpent(_) => <SaltSpent as alloy_sol_types::SolError>::SELECTOR,
17799                Self::SignatureExpired(_) => {
17800                    <SignatureExpired as alloy_sol_types::SolError>::SELECTOR
17801                }
17802                Self::StringTooLong(_) => {
17803                    <StringTooLong as alloy_sol_types::SolError>::SELECTOR
17804                }
17805                Self::WithdrawalDelayNotElapsed(_) => {
17806                    <WithdrawalDelayNotElapsed as alloy_sol_types::SolError>::SELECTOR
17807                }
17808                Self::WithdrawalNotQueued(_) => {
17809                    <WithdrawalNotQueued as alloy_sol_types::SolError>::SELECTOR
17810                }
17811                Self::WithdrawerNotCaller(_) => {
17812                    <WithdrawerNotCaller as alloy_sol_types::SolError>::SELECTOR
17813                }
17814            }
17815        }
17816        #[inline]
17817        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
17818            Self::SELECTORS.get(i).copied()
17819        }
17820        #[inline]
17821        fn valid_selector(selector: [u8; 4]) -> bool {
17822            Self::SELECTORS.binary_search(&selector).is_ok()
17823        }
17824        #[inline]
17825        #[allow(non_snake_case)]
17826        fn abi_decode_raw(
17827            selector: [u8; 4],
17828            data: &[u8],
17829        ) -> alloy_sol_types::Result<Self> {
17830            static DECODE_SHIMS: &[fn(
17831                &[u8],
17832            ) -> alloy_sol_types::Result<DelegationManagerErrors>] = &[
17833                {
17834                    fn SignatureExpired(
17835                        data: &[u8],
17836                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17837                        <SignatureExpired as alloy_sol_types::SolError>::abi_decode_raw(
17838                                data,
17839                            )
17840                            .map(DelegationManagerErrors::SignatureExpired)
17841                    }
17842                    SignatureExpired
17843                },
17844                {
17845                    fn OnlyStrategyManagerOrEigenPodManager(
17846                        data: &[u8],
17847                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17848                        <OnlyStrategyManagerOrEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw(
17849                                data,
17850                            )
17851                            .map(
17852                                DelegationManagerErrors::OnlyStrategyManagerOrEigenPodManager,
17853                            )
17854                    }
17855                    OnlyStrategyManagerOrEigenPodManager
17856                },
17857                {
17858                    fn OnlyAllocationManager(
17859                        data: &[u8],
17860                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17861                        <OnlyAllocationManager as alloy_sol_types::SolError>::abi_decode_raw(
17862                                data,
17863                            )
17864                            .map(DelegationManagerErrors::OnlyAllocationManager)
17865                    }
17866                    OnlyAllocationManager
17867                },
17868                {
17869                    fn OperatorNotRegistered(
17870                        data: &[u8],
17871                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17872                        <OperatorNotRegistered as alloy_sol_types::SolError>::abi_decode_raw(
17873                                data,
17874                            )
17875                            .map(DelegationManagerErrors::OperatorNotRegistered)
17876                    }
17877                    OperatorNotRegistered
17878                },
17879                {
17880                    fn FullySlashed(
17881                        data: &[u8],
17882                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17883                        <FullySlashed as alloy_sol_types::SolError>::abi_decode_raw(data)
17884                            .map(DelegationManagerErrors::FullySlashed)
17885                    }
17886                    FullySlashed
17887                },
17888                {
17889                    fn InvalidSnapshotOrdering(
17890                        data: &[u8],
17891                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17892                        <InvalidSnapshotOrdering as alloy_sol_types::SolError>::abi_decode_raw(
17893                                data,
17894                            )
17895                            .map(DelegationManagerErrors::InvalidSnapshotOrdering)
17896                    }
17897                    InvalidSnapshotOrdering
17898                },
17899                {
17900                    fn StringTooLong(
17901                        data: &[u8],
17902                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17903                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw(
17904                                data,
17905                            )
17906                            .map(DelegationManagerErrors::StringTooLong)
17907                    }
17908                    StringTooLong
17909                },
17910                {
17911                    fn SaltSpent(
17912                        data: &[u8],
17913                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17914                        <SaltSpent as alloy_sol_types::SolError>::abi_decode_raw(data)
17915                            .map(DelegationManagerErrors::SaltSpent)
17916                    }
17917                    SaltSpent
17918                },
17919                {
17920                    fn CallerCannotUndelegate(
17921                        data: &[u8],
17922                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17923                        <CallerCannotUndelegate as alloy_sol_types::SolError>::abi_decode_raw(
17924                                data,
17925                            )
17926                            .map(DelegationManagerErrors::CallerCannotUndelegate)
17927                    }
17928                    CallerCannotUndelegate
17929                },
17930                {
17931                    fn InputArrayLengthMismatch(
17932                        data: &[u8],
17933                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17934                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
17935                                data,
17936                            )
17937                            .map(DelegationManagerErrors::InputArrayLengthMismatch)
17938                    }
17939                    InputArrayLengthMismatch
17940                },
17941                {
17942                    fn WithdrawerNotCaller(
17943                        data: &[u8],
17944                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17945                        <WithdrawerNotCaller as alloy_sol_types::SolError>::abi_decode_raw(
17946                                data,
17947                            )
17948                            .map(DelegationManagerErrors::WithdrawerNotCaller)
17949                    }
17950                    WithdrawerNotCaller
17951                },
17952                {
17953                    fn InputAddressZero(
17954                        data: &[u8],
17955                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17956                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw(
17957                                data,
17958                            )
17959                            .map(DelegationManagerErrors::InputAddressZero)
17960                    }
17961                    InputAddressZero
17962                },
17963                {
17964                    fn OnlyPauser(
17965                        data: &[u8],
17966                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17967                        <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw(data)
17968                            .map(DelegationManagerErrors::OnlyPauser)
17969                    }
17970                    OnlyPauser
17971                },
17972                {
17973                    fn ActivelyDelegated(
17974                        data: &[u8],
17975                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17976                        <ActivelyDelegated as alloy_sol_types::SolError>::abi_decode_raw(
17977                                data,
17978                            )
17979                            .map(DelegationManagerErrors::ActivelyDelegated)
17980                    }
17981                    ActivelyDelegated
17982                },
17983                {
17984                    fn OnlyUnpauser(
17985                        data: &[u8],
17986                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17987                        <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw(data)
17988                            .map(DelegationManagerErrors::OnlyUnpauser)
17989                    }
17990                    OnlyUnpauser
17991                },
17992                {
17993                    fn InputArrayLengthZero(
17994                        data: &[u8],
17995                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
17996                        <InputArrayLengthZero as alloy_sol_types::SolError>::abi_decode_raw(
17997                                data,
17998                            )
17999                            .map(DelegationManagerErrors::InputArrayLengthZero)
18000                    }
18001                    InputArrayLengthZero
18002                },
18003                {
18004                    fn CurrentlyPaused(
18005                        data: &[u8],
18006                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18007                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw(
18008                                data,
18009                            )
18010                            .map(DelegationManagerErrors::CurrentlyPaused)
18011                    }
18012                    CurrentlyPaused
18013                },
18014                {
18015                    fn WithdrawalNotQueued(
18016                        data: &[u8],
18017                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18018                        <WithdrawalNotQueued as alloy_sol_types::SolError>::abi_decode_raw(
18019                                data,
18020                            )
18021                            .map(DelegationManagerErrors::WithdrawalNotQueued)
18022                    }
18023                    WithdrawalNotQueued
18024                },
18025                {
18026                    fn InvalidSignature(
18027                        data: &[u8],
18028                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18029                        <InvalidSignature as alloy_sol_types::SolError>::abi_decode_raw(
18030                                data,
18031                            )
18032                            .map(DelegationManagerErrors::InvalidSignature)
18033                    }
18034                    InvalidSignature
18035                },
18036                {
18037                    fn OperatorsCannotUndelegate(
18038                        data: &[u8],
18039                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18040                        <OperatorsCannotUndelegate as alloy_sol_types::SolError>::abi_decode_raw(
18041                                data,
18042                            )
18043                            .map(DelegationManagerErrors::OperatorsCannotUndelegate)
18044                    }
18045                    OperatorsCannotUndelegate
18046                },
18047                {
18048                    fn InvalidPermissions(
18049                        data: &[u8],
18050                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18051                        <InvalidPermissions as alloy_sol_types::SolError>::abi_decode_raw(
18052                                data,
18053                            )
18054                            .map(DelegationManagerErrors::InvalidPermissions)
18055                    }
18056                    InvalidPermissions
18057                },
18058                {
18059                    fn NotActivelyDelegated(
18060                        data: &[u8],
18061                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18062                        <NotActivelyDelegated as alloy_sol_types::SolError>::abi_decode_raw(
18063                                data,
18064                            )
18065                            .map(DelegationManagerErrors::NotActivelyDelegated)
18066                    }
18067                    NotActivelyDelegated
18068                },
18069                {
18070                    fn InvalidShortString(
18071                        data: &[u8],
18072                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18073                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw(
18074                                data,
18075                            )
18076                            .map(DelegationManagerErrors::InvalidShortString)
18077                    }
18078                    InvalidShortString
18079                },
18080                {
18081                    fn InvalidNewPausedStatus(
18082                        data: &[u8],
18083                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18084                        <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw(
18085                                data,
18086                            )
18087                            .map(DelegationManagerErrors::InvalidNewPausedStatus)
18088                    }
18089                    InvalidNewPausedStatus
18090                },
18091                {
18092                    fn OnlyEigenPodManager(
18093                        data: &[u8],
18094                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18095                        <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw(
18096                                data,
18097                            )
18098                            .map(DelegationManagerErrors::OnlyEigenPodManager)
18099                    }
18100                    OnlyEigenPodManager
18101                },
18102                {
18103                    fn WithdrawalDelayNotElapsed(
18104                        data: &[u8],
18105                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18106                        <WithdrawalDelayNotElapsed as alloy_sol_types::SolError>::abi_decode_raw(
18107                                data,
18108                            )
18109                            .map(DelegationManagerErrors::WithdrawalDelayNotElapsed)
18110                    }
18111                    WithdrawalDelayNotElapsed
18112                },
18113            ];
18114            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
18115                return Err(
18116                    alloy_sol_types::Error::unknown_selector(
18117                        <Self as alloy_sol_types::SolInterface>::NAME,
18118                        selector,
18119                    ),
18120                );
18121            };
18122            DECODE_SHIMS[idx](data)
18123        }
18124        #[inline]
18125        #[allow(non_snake_case)]
18126        fn abi_decode_raw_validate(
18127            selector: [u8; 4],
18128            data: &[u8],
18129        ) -> alloy_sol_types::Result<Self> {
18130            static DECODE_VALIDATE_SHIMS: &[fn(
18131                &[u8],
18132            ) -> alloy_sol_types::Result<DelegationManagerErrors>] = &[
18133                {
18134                    fn SignatureExpired(
18135                        data: &[u8],
18136                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18137                        <SignatureExpired as alloy_sol_types::SolError>::abi_decode_raw_validate(
18138                                data,
18139                            )
18140                            .map(DelegationManagerErrors::SignatureExpired)
18141                    }
18142                    SignatureExpired
18143                },
18144                {
18145                    fn OnlyStrategyManagerOrEigenPodManager(
18146                        data: &[u8],
18147                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18148                        <OnlyStrategyManagerOrEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw_validate(
18149                                data,
18150                            )
18151                            .map(
18152                                DelegationManagerErrors::OnlyStrategyManagerOrEigenPodManager,
18153                            )
18154                    }
18155                    OnlyStrategyManagerOrEigenPodManager
18156                },
18157                {
18158                    fn OnlyAllocationManager(
18159                        data: &[u8],
18160                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18161                        <OnlyAllocationManager as alloy_sol_types::SolError>::abi_decode_raw_validate(
18162                                data,
18163                            )
18164                            .map(DelegationManagerErrors::OnlyAllocationManager)
18165                    }
18166                    OnlyAllocationManager
18167                },
18168                {
18169                    fn OperatorNotRegistered(
18170                        data: &[u8],
18171                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18172                        <OperatorNotRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
18173                                data,
18174                            )
18175                            .map(DelegationManagerErrors::OperatorNotRegistered)
18176                    }
18177                    OperatorNotRegistered
18178                },
18179                {
18180                    fn FullySlashed(
18181                        data: &[u8],
18182                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18183                        <FullySlashed as alloy_sol_types::SolError>::abi_decode_raw_validate(
18184                                data,
18185                            )
18186                            .map(DelegationManagerErrors::FullySlashed)
18187                    }
18188                    FullySlashed
18189                },
18190                {
18191                    fn InvalidSnapshotOrdering(
18192                        data: &[u8],
18193                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18194                        <InvalidSnapshotOrdering as alloy_sol_types::SolError>::abi_decode_raw_validate(
18195                                data,
18196                            )
18197                            .map(DelegationManagerErrors::InvalidSnapshotOrdering)
18198                    }
18199                    InvalidSnapshotOrdering
18200                },
18201                {
18202                    fn StringTooLong(
18203                        data: &[u8],
18204                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18205                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw_validate(
18206                                data,
18207                            )
18208                            .map(DelegationManagerErrors::StringTooLong)
18209                    }
18210                    StringTooLong
18211                },
18212                {
18213                    fn SaltSpent(
18214                        data: &[u8],
18215                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18216                        <SaltSpent as alloy_sol_types::SolError>::abi_decode_raw_validate(
18217                                data,
18218                            )
18219                            .map(DelegationManagerErrors::SaltSpent)
18220                    }
18221                    SaltSpent
18222                },
18223                {
18224                    fn CallerCannotUndelegate(
18225                        data: &[u8],
18226                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18227                        <CallerCannotUndelegate as alloy_sol_types::SolError>::abi_decode_raw_validate(
18228                                data,
18229                            )
18230                            .map(DelegationManagerErrors::CallerCannotUndelegate)
18231                    }
18232                    CallerCannotUndelegate
18233                },
18234                {
18235                    fn InputArrayLengthMismatch(
18236                        data: &[u8],
18237                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18238                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw_validate(
18239                                data,
18240                            )
18241                            .map(DelegationManagerErrors::InputArrayLengthMismatch)
18242                    }
18243                    InputArrayLengthMismatch
18244                },
18245                {
18246                    fn WithdrawerNotCaller(
18247                        data: &[u8],
18248                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18249                        <WithdrawerNotCaller as alloy_sol_types::SolError>::abi_decode_raw_validate(
18250                                data,
18251                            )
18252                            .map(DelegationManagerErrors::WithdrawerNotCaller)
18253                    }
18254                    WithdrawerNotCaller
18255                },
18256                {
18257                    fn InputAddressZero(
18258                        data: &[u8],
18259                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18260                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
18261                                data,
18262                            )
18263                            .map(DelegationManagerErrors::InputAddressZero)
18264                    }
18265                    InputAddressZero
18266                },
18267                {
18268                    fn OnlyPauser(
18269                        data: &[u8],
18270                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18271                        <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw_validate(
18272                                data,
18273                            )
18274                            .map(DelegationManagerErrors::OnlyPauser)
18275                    }
18276                    OnlyPauser
18277                },
18278                {
18279                    fn ActivelyDelegated(
18280                        data: &[u8],
18281                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18282                        <ActivelyDelegated as alloy_sol_types::SolError>::abi_decode_raw_validate(
18283                                data,
18284                            )
18285                            .map(DelegationManagerErrors::ActivelyDelegated)
18286                    }
18287                    ActivelyDelegated
18288                },
18289                {
18290                    fn OnlyUnpauser(
18291                        data: &[u8],
18292                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18293                        <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw_validate(
18294                                data,
18295                            )
18296                            .map(DelegationManagerErrors::OnlyUnpauser)
18297                    }
18298                    OnlyUnpauser
18299                },
18300                {
18301                    fn InputArrayLengthZero(
18302                        data: &[u8],
18303                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18304                        <InputArrayLengthZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
18305                                data,
18306                            )
18307                            .map(DelegationManagerErrors::InputArrayLengthZero)
18308                    }
18309                    InputArrayLengthZero
18310                },
18311                {
18312                    fn CurrentlyPaused(
18313                        data: &[u8],
18314                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18315                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw_validate(
18316                                data,
18317                            )
18318                            .map(DelegationManagerErrors::CurrentlyPaused)
18319                    }
18320                    CurrentlyPaused
18321                },
18322                {
18323                    fn WithdrawalNotQueued(
18324                        data: &[u8],
18325                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18326                        <WithdrawalNotQueued as alloy_sol_types::SolError>::abi_decode_raw_validate(
18327                                data,
18328                            )
18329                            .map(DelegationManagerErrors::WithdrawalNotQueued)
18330                    }
18331                    WithdrawalNotQueued
18332                },
18333                {
18334                    fn InvalidSignature(
18335                        data: &[u8],
18336                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18337                        <InvalidSignature as alloy_sol_types::SolError>::abi_decode_raw_validate(
18338                                data,
18339                            )
18340                            .map(DelegationManagerErrors::InvalidSignature)
18341                    }
18342                    InvalidSignature
18343                },
18344                {
18345                    fn OperatorsCannotUndelegate(
18346                        data: &[u8],
18347                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18348                        <OperatorsCannotUndelegate as alloy_sol_types::SolError>::abi_decode_raw_validate(
18349                                data,
18350                            )
18351                            .map(DelegationManagerErrors::OperatorsCannotUndelegate)
18352                    }
18353                    OperatorsCannotUndelegate
18354                },
18355                {
18356                    fn InvalidPermissions(
18357                        data: &[u8],
18358                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18359                        <InvalidPermissions as alloy_sol_types::SolError>::abi_decode_raw_validate(
18360                                data,
18361                            )
18362                            .map(DelegationManagerErrors::InvalidPermissions)
18363                    }
18364                    InvalidPermissions
18365                },
18366                {
18367                    fn NotActivelyDelegated(
18368                        data: &[u8],
18369                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18370                        <NotActivelyDelegated as alloy_sol_types::SolError>::abi_decode_raw_validate(
18371                                data,
18372                            )
18373                            .map(DelegationManagerErrors::NotActivelyDelegated)
18374                    }
18375                    NotActivelyDelegated
18376                },
18377                {
18378                    fn InvalidShortString(
18379                        data: &[u8],
18380                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18381                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw_validate(
18382                                data,
18383                            )
18384                            .map(DelegationManagerErrors::InvalidShortString)
18385                    }
18386                    InvalidShortString
18387                },
18388                {
18389                    fn InvalidNewPausedStatus(
18390                        data: &[u8],
18391                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18392                        <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw_validate(
18393                                data,
18394                            )
18395                            .map(DelegationManagerErrors::InvalidNewPausedStatus)
18396                    }
18397                    InvalidNewPausedStatus
18398                },
18399                {
18400                    fn OnlyEigenPodManager(
18401                        data: &[u8],
18402                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18403                        <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw_validate(
18404                                data,
18405                            )
18406                            .map(DelegationManagerErrors::OnlyEigenPodManager)
18407                    }
18408                    OnlyEigenPodManager
18409                },
18410                {
18411                    fn WithdrawalDelayNotElapsed(
18412                        data: &[u8],
18413                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
18414                        <WithdrawalDelayNotElapsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
18415                                data,
18416                            )
18417                            .map(DelegationManagerErrors::WithdrawalDelayNotElapsed)
18418                    }
18419                    WithdrawalDelayNotElapsed
18420                },
18421            ];
18422            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
18423                return Err(
18424                    alloy_sol_types::Error::unknown_selector(
18425                        <Self as alloy_sol_types::SolInterface>::NAME,
18426                        selector,
18427                    ),
18428                );
18429            };
18430            DECODE_VALIDATE_SHIMS[idx](data)
18431        }
18432        #[inline]
18433        fn abi_encoded_size(&self) -> usize {
18434            match self {
18435                Self::ActivelyDelegated(inner) => {
18436                    <ActivelyDelegated as alloy_sol_types::SolError>::abi_encoded_size(
18437                        inner,
18438                    )
18439                }
18440                Self::CallerCannotUndelegate(inner) => {
18441                    <CallerCannotUndelegate as alloy_sol_types::SolError>::abi_encoded_size(
18442                        inner,
18443                    )
18444                }
18445                Self::CurrentlyPaused(inner) => {
18446                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(
18447                        inner,
18448                    )
18449                }
18450                Self::FullySlashed(inner) => {
18451                    <FullySlashed as alloy_sol_types::SolError>::abi_encoded_size(inner)
18452                }
18453                Self::InputAddressZero(inner) => {
18454                    <InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(
18455                        inner,
18456                    )
18457                }
18458                Self::InputArrayLengthMismatch(inner) => {
18459                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
18460                        inner,
18461                    )
18462                }
18463                Self::InputArrayLengthZero(inner) => {
18464                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encoded_size(
18465                        inner,
18466                    )
18467                }
18468                Self::InvalidNewPausedStatus(inner) => {
18469                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encoded_size(
18470                        inner,
18471                    )
18472                }
18473                Self::InvalidPermissions(inner) => {
18474                    <InvalidPermissions as alloy_sol_types::SolError>::abi_encoded_size(
18475                        inner,
18476                    )
18477                }
18478                Self::InvalidShortString(inner) => {
18479                    <InvalidShortString as alloy_sol_types::SolError>::abi_encoded_size(
18480                        inner,
18481                    )
18482                }
18483                Self::InvalidSignature(inner) => {
18484                    <InvalidSignature as alloy_sol_types::SolError>::abi_encoded_size(
18485                        inner,
18486                    )
18487                }
18488                Self::InvalidSnapshotOrdering(inner) => {
18489                    <InvalidSnapshotOrdering as alloy_sol_types::SolError>::abi_encoded_size(
18490                        inner,
18491                    )
18492                }
18493                Self::NotActivelyDelegated(inner) => {
18494                    <NotActivelyDelegated as alloy_sol_types::SolError>::abi_encoded_size(
18495                        inner,
18496                    )
18497                }
18498                Self::OnlyAllocationManager(inner) => {
18499                    <OnlyAllocationManager as alloy_sol_types::SolError>::abi_encoded_size(
18500                        inner,
18501                    )
18502                }
18503                Self::OnlyEigenPodManager(inner) => {
18504                    <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encoded_size(
18505                        inner,
18506                    )
18507                }
18508                Self::OnlyPauser(inner) => {
18509                    <OnlyPauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
18510                }
18511                Self::OnlyStrategyManagerOrEigenPodManager(inner) => {
18512                    <OnlyStrategyManagerOrEigenPodManager as alloy_sol_types::SolError>::abi_encoded_size(
18513                        inner,
18514                    )
18515                }
18516                Self::OnlyUnpauser(inner) => {
18517                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
18518                }
18519                Self::OperatorNotRegistered(inner) => {
18520                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encoded_size(
18521                        inner,
18522                    )
18523                }
18524                Self::OperatorsCannotUndelegate(inner) => {
18525                    <OperatorsCannotUndelegate as alloy_sol_types::SolError>::abi_encoded_size(
18526                        inner,
18527                    )
18528                }
18529                Self::SaltSpent(inner) => {
18530                    <SaltSpent as alloy_sol_types::SolError>::abi_encoded_size(inner)
18531                }
18532                Self::SignatureExpired(inner) => {
18533                    <SignatureExpired as alloy_sol_types::SolError>::abi_encoded_size(
18534                        inner,
18535                    )
18536                }
18537                Self::StringTooLong(inner) => {
18538                    <StringTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner)
18539                }
18540                Self::WithdrawalDelayNotElapsed(inner) => {
18541                    <WithdrawalDelayNotElapsed as alloy_sol_types::SolError>::abi_encoded_size(
18542                        inner,
18543                    )
18544                }
18545                Self::WithdrawalNotQueued(inner) => {
18546                    <WithdrawalNotQueued as alloy_sol_types::SolError>::abi_encoded_size(
18547                        inner,
18548                    )
18549                }
18550                Self::WithdrawerNotCaller(inner) => {
18551                    <WithdrawerNotCaller as alloy_sol_types::SolError>::abi_encoded_size(
18552                        inner,
18553                    )
18554                }
18555            }
18556        }
18557        #[inline]
18558        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
18559            match self {
18560                Self::ActivelyDelegated(inner) => {
18561                    <ActivelyDelegated as alloy_sol_types::SolError>::abi_encode_raw(
18562                        inner,
18563                        out,
18564                    )
18565                }
18566                Self::CallerCannotUndelegate(inner) => {
18567                    <CallerCannotUndelegate as alloy_sol_types::SolError>::abi_encode_raw(
18568                        inner,
18569                        out,
18570                    )
18571                }
18572                Self::CurrentlyPaused(inner) => {
18573                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(
18574                        inner,
18575                        out,
18576                    )
18577                }
18578                Self::FullySlashed(inner) => {
18579                    <FullySlashed as alloy_sol_types::SolError>::abi_encode_raw(
18580                        inner,
18581                        out,
18582                    )
18583                }
18584                Self::InputAddressZero(inner) => {
18585                    <InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(
18586                        inner,
18587                        out,
18588                    )
18589                }
18590                Self::InputArrayLengthMismatch(inner) => {
18591                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
18592                        inner,
18593                        out,
18594                    )
18595                }
18596                Self::InputArrayLengthZero(inner) => {
18597                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encode_raw(
18598                        inner,
18599                        out,
18600                    )
18601                }
18602                Self::InvalidNewPausedStatus(inner) => {
18603                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encode_raw(
18604                        inner,
18605                        out,
18606                    )
18607                }
18608                Self::InvalidPermissions(inner) => {
18609                    <InvalidPermissions as alloy_sol_types::SolError>::abi_encode_raw(
18610                        inner,
18611                        out,
18612                    )
18613                }
18614                Self::InvalidShortString(inner) => {
18615                    <InvalidShortString as alloy_sol_types::SolError>::abi_encode_raw(
18616                        inner,
18617                        out,
18618                    )
18619                }
18620                Self::InvalidSignature(inner) => {
18621                    <InvalidSignature as alloy_sol_types::SolError>::abi_encode_raw(
18622                        inner,
18623                        out,
18624                    )
18625                }
18626                Self::InvalidSnapshotOrdering(inner) => {
18627                    <InvalidSnapshotOrdering as alloy_sol_types::SolError>::abi_encode_raw(
18628                        inner,
18629                        out,
18630                    )
18631                }
18632                Self::NotActivelyDelegated(inner) => {
18633                    <NotActivelyDelegated as alloy_sol_types::SolError>::abi_encode_raw(
18634                        inner,
18635                        out,
18636                    )
18637                }
18638                Self::OnlyAllocationManager(inner) => {
18639                    <OnlyAllocationManager as alloy_sol_types::SolError>::abi_encode_raw(
18640                        inner,
18641                        out,
18642                    )
18643                }
18644                Self::OnlyEigenPodManager(inner) => {
18645                    <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encode_raw(
18646                        inner,
18647                        out,
18648                    )
18649                }
18650                Self::OnlyPauser(inner) => {
18651                    <OnlyPauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
18652                }
18653                Self::OnlyStrategyManagerOrEigenPodManager(inner) => {
18654                    <OnlyStrategyManagerOrEigenPodManager as alloy_sol_types::SolError>::abi_encode_raw(
18655                        inner,
18656                        out,
18657                    )
18658                }
18659                Self::OnlyUnpauser(inner) => {
18660                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encode_raw(
18661                        inner,
18662                        out,
18663                    )
18664                }
18665                Self::OperatorNotRegistered(inner) => {
18666                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encode_raw(
18667                        inner,
18668                        out,
18669                    )
18670                }
18671                Self::OperatorsCannotUndelegate(inner) => {
18672                    <OperatorsCannotUndelegate as alloy_sol_types::SolError>::abi_encode_raw(
18673                        inner,
18674                        out,
18675                    )
18676                }
18677                Self::SaltSpent(inner) => {
18678                    <SaltSpent as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
18679                }
18680                Self::SignatureExpired(inner) => {
18681                    <SignatureExpired as alloy_sol_types::SolError>::abi_encode_raw(
18682                        inner,
18683                        out,
18684                    )
18685                }
18686                Self::StringTooLong(inner) => {
18687                    <StringTooLong as alloy_sol_types::SolError>::abi_encode_raw(
18688                        inner,
18689                        out,
18690                    )
18691                }
18692                Self::WithdrawalDelayNotElapsed(inner) => {
18693                    <WithdrawalDelayNotElapsed as alloy_sol_types::SolError>::abi_encode_raw(
18694                        inner,
18695                        out,
18696                    )
18697                }
18698                Self::WithdrawalNotQueued(inner) => {
18699                    <WithdrawalNotQueued as alloy_sol_types::SolError>::abi_encode_raw(
18700                        inner,
18701                        out,
18702                    )
18703                }
18704                Self::WithdrawerNotCaller(inner) => {
18705                    <WithdrawerNotCaller as alloy_sol_types::SolError>::abi_encode_raw(
18706                        inner,
18707                        out,
18708                    )
18709                }
18710            }
18711        }
18712    }
18713    ///Container for all the [`DelegationManager`](self) events.
18714    #[derive(serde::Serialize, serde::Deserialize)]
18715    #[derive(Debug, PartialEq, Eq, Hash)]
18716    pub enum DelegationManagerEvents {
18717        #[allow(missing_docs)]
18718        DelegationApproverUpdated(DelegationApproverUpdated),
18719        #[allow(missing_docs)]
18720        DepositScalingFactorUpdated(DepositScalingFactorUpdated),
18721        #[allow(missing_docs)]
18722        Initialized(Initialized),
18723        #[allow(missing_docs)]
18724        OperatorMetadataURIUpdated(OperatorMetadataURIUpdated),
18725        #[allow(missing_docs)]
18726        OperatorRegistered(OperatorRegistered),
18727        #[allow(missing_docs)]
18728        OperatorSharesDecreased(OperatorSharesDecreased),
18729        #[allow(missing_docs)]
18730        OperatorSharesIncreased(OperatorSharesIncreased),
18731        #[allow(missing_docs)]
18732        OperatorSharesSlashed(OperatorSharesSlashed),
18733        #[allow(missing_docs)]
18734        OwnershipTransferred(OwnershipTransferred),
18735        #[allow(missing_docs)]
18736        Paused(Paused),
18737        #[allow(missing_docs)]
18738        SlashingWithdrawalCompleted(SlashingWithdrawalCompleted),
18739        #[allow(missing_docs)]
18740        SlashingWithdrawalQueued(SlashingWithdrawalQueued),
18741        #[allow(missing_docs)]
18742        StakerDelegated(StakerDelegated),
18743        #[allow(missing_docs)]
18744        StakerForceUndelegated(StakerForceUndelegated),
18745        #[allow(missing_docs)]
18746        StakerUndelegated(StakerUndelegated),
18747        #[allow(missing_docs)]
18748        Unpaused(Unpaused),
18749    }
18750    #[automatically_derived]
18751    impl DelegationManagerEvents {
18752        /// All the selectors of this enum.
18753        ///
18754        /// Note that the selectors might not be in the same order as the variants.
18755        /// No guarantees are made about the order of the selectors.
18756        ///
18757        /// Prefer using `SolInterface` methods instead.
18758        pub const SELECTORS: &'static [[u8; 32usize]] = &[
18759            [
18760                2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8,
18761                126u8, 242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8,
18762                3u8, 74u8, 133u8, 49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8,
18763            ],
18764            [
18765                30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8,
18766                24u8, 142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8,
18767                171u8, 58u8, 157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8,
18768            ],
18769            [
18770                31u8, 64u8, 64u8, 8u8, 137u8, 39u8, 78u8, 208u8, 123u8, 36u8, 132u8,
18771                94u8, 80u8, 84u8, 168u8, 122u8, 12u8, 171u8, 150u8, 158u8, 177u8, 39u8,
18772                122u8, 175u8, 230u8, 26u8, 227u8, 82u8, 231u8, 195u8, 42u8, 0u8,
18773            ],
18774            [
18775                38u8, 178u8, 170u8, 226u8, 101u8, 22u8, 232u8, 113u8, 158u8, 245u8, 14u8,
18776                162u8, 246u8, 131u8, 26u8, 46u8, 251u8, 212u8, 227u8, 125u8, 204u8,
18777                223u8, 15u8, 105u8, 54u8, 178u8, 123u8, 192u8, 142u8, 121u8, 62u8, 48u8,
18778            ],
18779            [
18780                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8,
18781                2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8,
18782                228u8, 152u8, 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
18783            ],
18784            [
18785                105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8,
18786                221u8, 129u8, 84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8,
18787                200u8, 50u8, 170u8, 255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8,
18788            ],
18789            [
18790                119u8, 59u8, 84u8, 192u8, 77u8, 117u8, 111u8, 204u8, 94u8, 103u8, 129u8,
18791                17u8, 247u8, 215u8, 48u8, 222u8, 59u8, 233u8, 129u8, 146u8, 0u8, 7u8,
18792                153u8, 238u8, 227u8, 214u8, 55u8, 22u8, 5u8, 90u8, 135u8, 198u8,
18793            ],
18794            [
18795                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
18796                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
18797                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
18798            ],
18799            [
18800                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
18801                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
18802                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
18803            ],
18804            [
18805                139u8, 233u8, 50u8, 186u8, 197u8, 69u8, 97u8, 242u8, 114u8, 96u8, 249u8,
18806                84u8, 99u8, 217u8, 184u8, 171u8, 55u8, 224u8, 107u8, 40u8, 66u8, 229u8,
18807                238u8, 36u8, 4u8, 21u8, 124u8, 193u8, 61u8, 246u8, 235u8, 143u8,
18808            ],
18809            [
18810                164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8,
18811                146u8, 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8,
18812                183u8, 183u8, 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8,
18813            ],
18814            [
18815                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8,
18816                188u8, 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8,
18817                11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
18818            ],
18819            [
18820                195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8,
18821                116u8, 91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8,
18822                85u8, 156u8, 210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8,
18823            ],
18824            [
18825                221u8, 97u8, 31u8, 78u8, 246u8, 63u8, 67u8, 133u8, 241u8, 117u8, 108u8,
18826                134u8, 206u8, 31u8, 31u8, 56u8, 154u8, 144u8, 19u8, 186u8, 111u8, 160u8,
18827                125u8, 171u8, 168u8, 82u8, 130u8, 145u8, 188u8, 45u8, 60u8, 48u8,
18828            ],
18829            [
18830                240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8,
18831                30u8, 148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8,
18832                113u8, 19u8, 14u8, 15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8,
18833            ],
18834            [
18835                254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8,
18836                191u8, 201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8,
18837                169u8, 226u8, 183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8,
18838            ],
18839        ];
18840    }
18841    #[automatically_derived]
18842    impl alloy_sol_types::SolEventInterface for DelegationManagerEvents {
18843        const NAME: &'static str = "DelegationManagerEvents";
18844        const COUNT: usize = 16usize;
18845        fn decode_raw_log(
18846            topics: &[alloy_sol_types::Word],
18847            data: &[u8],
18848        ) -> alloy_sol_types::Result<Self> {
18849            match topics.first().copied() {
18850                Some(
18851                    <DelegationApproverUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18852                ) => {
18853                    <DelegationApproverUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
18854                            topics,
18855                            data,
18856                        )
18857                        .map(Self::DelegationApproverUpdated)
18858                }
18859                Some(
18860                    <DepositScalingFactorUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18861                ) => {
18862                    <DepositScalingFactorUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
18863                            topics,
18864                            data,
18865                        )
18866                        .map(Self::DepositScalingFactorUpdated)
18867                }
18868                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18869                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
18870                            topics,
18871                            data,
18872                        )
18873                        .map(Self::Initialized)
18874                }
18875                Some(
18876                    <OperatorMetadataURIUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18877                ) => {
18878                    <OperatorMetadataURIUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
18879                            topics,
18880                            data,
18881                        )
18882                        .map(Self::OperatorMetadataURIUpdated)
18883                }
18884                Some(
18885                    <OperatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18886                ) => {
18887                    <OperatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
18888                            topics,
18889                            data,
18890                        )
18891                        .map(Self::OperatorRegistered)
18892                }
18893                Some(
18894                    <OperatorSharesDecreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18895                ) => {
18896                    <OperatorSharesDecreased as alloy_sol_types::SolEvent>::decode_raw_log(
18897                            topics,
18898                            data,
18899                        )
18900                        .map(Self::OperatorSharesDecreased)
18901                }
18902                Some(
18903                    <OperatorSharesIncreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18904                ) => {
18905                    <OperatorSharesIncreased as alloy_sol_types::SolEvent>::decode_raw_log(
18906                            topics,
18907                            data,
18908                        )
18909                        .map(Self::OperatorSharesIncreased)
18910                }
18911                Some(
18912                    <OperatorSharesSlashed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18913                ) => {
18914                    <OperatorSharesSlashed as alloy_sol_types::SolEvent>::decode_raw_log(
18915                            topics,
18916                            data,
18917                        )
18918                        .map(Self::OperatorSharesSlashed)
18919                }
18920                Some(
18921                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18922                ) => {
18923                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
18924                            topics,
18925                            data,
18926                        )
18927                        .map(Self::OwnershipTransferred)
18928                }
18929                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18930                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18931                        .map(Self::Paused)
18932                }
18933                Some(
18934                    <SlashingWithdrawalCompleted as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18935                ) => {
18936                    <SlashingWithdrawalCompleted as alloy_sol_types::SolEvent>::decode_raw_log(
18937                            topics,
18938                            data,
18939                        )
18940                        .map(Self::SlashingWithdrawalCompleted)
18941                }
18942                Some(
18943                    <SlashingWithdrawalQueued as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18944                ) => {
18945                    <SlashingWithdrawalQueued as alloy_sol_types::SolEvent>::decode_raw_log(
18946                            topics,
18947                            data,
18948                        )
18949                        .map(Self::SlashingWithdrawalQueued)
18950                }
18951                Some(<StakerDelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18952                    <StakerDelegated as alloy_sol_types::SolEvent>::decode_raw_log(
18953                            topics,
18954                            data,
18955                        )
18956                        .map(Self::StakerDelegated)
18957                }
18958                Some(
18959                    <StakerForceUndelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18960                ) => {
18961                    <StakerForceUndelegated as alloy_sol_types::SolEvent>::decode_raw_log(
18962                            topics,
18963                            data,
18964                        )
18965                        .map(Self::StakerForceUndelegated)
18966                }
18967                Some(
18968                    <StakerUndelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18969                ) => {
18970                    <StakerUndelegated as alloy_sol_types::SolEvent>::decode_raw_log(
18971                            topics,
18972                            data,
18973                        )
18974                        .map(Self::StakerUndelegated)
18975                }
18976                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18977                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18978                        .map(Self::Unpaused)
18979                }
18980                _ => {
18981                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
18982                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
18983                        log: alloy_sol_types::private::Box::new(
18984                            alloy_sol_types::private::LogData::new_unchecked(
18985                                topics.to_vec(),
18986                                data.to_vec().into(),
18987                            ),
18988                        ),
18989                    })
18990                }
18991            }
18992        }
18993    }
18994    #[automatically_derived]
18995    impl alloy_sol_types::private::IntoLogData for DelegationManagerEvents {
18996        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
18997            match self {
18998                Self::DelegationApproverUpdated(inner) => {
18999                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19000                }
19001                Self::DepositScalingFactorUpdated(inner) => {
19002                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19003                }
19004                Self::Initialized(inner) => {
19005                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19006                }
19007                Self::OperatorMetadataURIUpdated(inner) => {
19008                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19009                }
19010                Self::OperatorRegistered(inner) => {
19011                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19012                }
19013                Self::OperatorSharesDecreased(inner) => {
19014                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19015                }
19016                Self::OperatorSharesIncreased(inner) => {
19017                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19018                }
19019                Self::OperatorSharesSlashed(inner) => {
19020                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19021                }
19022                Self::OwnershipTransferred(inner) => {
19023                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19024                }
19025                Self::Paused(inner) => {
19026                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19027                }
19028                Self::SlashingWithdrawalCompleted(inner) => {
19029                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19030                }
19031                Self::SlashingWithdrawalQueued(inner) => {
19032                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19033                }
19034                Self::StakerDelegated(inner) => {
19035                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19036                }
19037                Self::StakerForceUndelegated(inner) => {
19038                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19039                }
19040                Self::StakerUndelegated(inner) => {
19041                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19042                }
19043                Self::Unpaused(inner) => {
19044                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19045                }
19046            }
19047        }
19048        fn into_log_data(self) -> alloy_sol_types::private::LogData {
19049            match self {
19050                Self::DelegationApproverUpdated(inner) => {
19051                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19052                }
19053                Self::DepositScalingFactorUpdated(inner) => {
19054                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19055                }
19056                Self::Initialized(inner) => {
19057                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19058                }
19059                Self::OperatorMetadataURIUpdated(inner) => {
19060                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19061                }
19062                Self::OperatorRegistered(inner) => {
19063                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19064                }
19065                Self::OperatorSharesDecreased(inner) => {
19066                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19067                }
19068                Self::OperatorSharesIncreased(inner) => {
19069                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19070                }
19071                Self::OperatorSharesSlashed(inner) => {
19072                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19073                }
19074                Self::OwnershipTransferred(inner) => {
19075                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19076                }
19077                Self::Paused(inner) => {
19078                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19079                }
19080                Self::SlashingWithdrawalCompleted(inner) => {
19081                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19082                }
19083                Self::SlashingWithdrawalQueued(inner) => {
19084                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19085                }
19086                Self::StakerDelegated(inner) => {
19087                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19088                }
19089                Self::StakerForceUndelegated(inner) => {
19090                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19091                }
19092                Self::StakerUndelegated(inner) => {
19093                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19094                }
19095                Self::Unpaused(inner) => {
19096                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19097                }
19098            }
19099        }
19100    }
19101    use alloy::contract as alloy_contract;
19102    /**Creates a new wrapper around an on-chain [`DelegationManager`](self) contract instance.
19103
19104See the [wrapper's documentation](`DelegationManagerInstance`) for more details.*/
19105    #[inline]
19106    pub const fn new<
19107        P: alloy_contract::private::Provider<N>,
19108        N: alloy_contract::private::Network,
19109    >(
19110        address: alloy_sol_types::private::Address,
19111        provider: P,
19112    ) -> DelegationManagerInstance<P, N> {
19113        DelegationManagerInstance::<P, N>::new(address, provider)
19114    }
19115    /**Deploys this contract using the given `provider` and constructor arguments, if any.
19116
19117Returns a new instance of the contract, if the deployment was successful.
19118
19119For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
19120    #[inline]
19121    pub fn deploy<
19122        P: alloy_contract::private::Provider<N>,
19123        N: alloy_contract::private::Network,
19124    >(
19125        provider: P,
19126        _strategyManager: alloy::sol_types::private::Address,
19127        _eigenPodManager: alloy::sol_types::private::Address,
19128        _allocationManager: alloy::sol_types::private::Address,
19129        _pauserRegistry: alloy::sol_types::private::Address,
19130        _permissionController: alloy::sol_types::private::Address,
19131        _MIN_WITHDRAWAL_DELAY: u32,
19132        _version: alloy::sol_types::private::String,
19133    ) -> impl ::core::future::Future<
19134        Output = alloy_contract::Result<DelegationManagerInstance<P, N>>,
19135    > {
19136        DelegationManagerInstance::<
19137            P,
19138            N,
19139        >::deploy(
19140            provider,
19141            _strategyManager,
19142            _eigenPodManager,
19143            _allocationManager,
19144            _pauserRegistry,
19145            _permissionController,
19146            _MIN_WITHDRAWAL_DELAY,
19147            _version,
19148        )
19149    }
19150    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
19151and constructor arguments, if any.
19152
19153This is a simple wrapper around creating a `RawCallBuilder` with the data set to
19154the bytecode concatenated with the constructor's ABI-encoded arguments.*/
19155    #[inline]
19156    pub fn deploy_builder<
19157        P: alloy_contract::private::Provider<N>,
19158        N: alloy_contract::private::Network,
19159    >(
19160        provider: P,
19161        _strategyManager: alloy::sol_types::private::Address,
19162        _eigenPodManager: alloy::sol_types::private::Address,
19163        _allocationManager: alloy::sol_types::private::Address,
19164        _pauserRegistry: alloy::sol_types::private::Address,
19165        _permissionController: alloy::sol_types::private::Address,
19166        _MIN_WITHDRAWAL_DELAY: u32,
19167        _version: alloy::sol_types::private::String,
19168    ) -> alloy_contract::RawCallBuilder<P, N> {
19169        DelegationManagerInstance::<
19170            P,
19171            N,
19172        >::deploy_builder(
19173            provider,
19174            _strategyManager,
19175            _eigenPodManager,
19176            _allocationManager,
19177            _pauserRegistry,
19178            _permissionController,
19179            _MIN_WITHDRAWAL_DELAY,
19180            _version,
19181        )
19182    }
19183    /**A [`DelegationManager`](self) instance.
19184
19185Contains type-safe methods for interacting with an on-chain instance of the
19186[`DelegationManager`](self) contract located at a given `address`, using a given
19187provider `P`.
19188
19189If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
19190documentation on how to provide it), the `deploy` and `deploy_builder` methods can
19191be used to deploy a new instance of the contract.
19192
19193See the [module-level documentation](self) for all the available methods.*/
19194    #[derive(Clone)]
19195    pub struct DelegationManagerInstance<P, N = alloy_contract::private::Ethereum> {
19196        address: alloy_sol_types::private::Address,
19197        provider: P,
19198        _network: ::core::marker::PhantomData<N>,
19199    }
19200    #[automatically_derived]
19201    impl<P, N> ::core::fmt::Debug for DelegationManagerInstance<P, N> {
19202        #[inline]
19203        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
19204            f.debug_tuple("DelegationManagerInstance").field(&self.address).finish()
19205        }
19206    }
19207    /// Instantiation and getters/setters.
19208    #[automatically_derived]
19209    impl<
19210        P: alloy_contract::private::Provider<N>,
19211        N: alloy_contract::private::Network,
19212    > DelegationManagerInstance<P, N> {
19213        /**Creates a new wrapper around an on-chain [`DelegationManager`](self) contract instance.
19214
19215See the [wrapper's documentation](`DelegationManagerInstance`) for more details.*/
19216        #[inline]
19217        pub const fn new(
19218            address: alloy_sol_types::private::Address,
19219            provider: P,
19220        ) -> Self {
19221            Self {
19222                address,
19223                provider,
19224                _network: ::core::marker::PhantomData,
19225            }
19226        }
19227        /**Deploys this contract using the given `provider` and constructor arguments, if any.
19228
19229Returns a new instance of the contract, if the deployment was successful.
19230
19231For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
19232        #[inline]
19233        pub async fn deploy(
19234            provider: P,
19235            _strategyManager: alloy::sol_types::private::Address,
19236            _eigenPodManager: alloy::sol_types::private::Address,
19237            _allocationManager: alloy::sol_types::private::Address,
19238            _pauserRegistry: alloy::sol_types::private::Address,
19239            _permissionController: alloy::sol_types::private::Address,
19240            _MIN_WITHDRAWAL_DELAY: u32,
19241            _version: alloy::sol_types::private::String,
19242        ) -> alloy_contract::Result<DelegationManagerInstance<P, N>> {
19243            let call_builder = Self::deploy_builder(
19244                provider,
19245                _strategyManager,
19246                _eigenPodManager,
19247                _allocationManager,
19248                _pauserRegistry,
19249                _permissionController,
19250                _MIN_WITHDRAWAL_DELAY,
19251                _version,
19252            );
19253            let contract_address = call_builder.deploy().await?;
19254            Ok(Self::new(contract_address, call_builder.provider))
19255        }
19256        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
19257and constructor arguments, if any.
19258
19259This is a simple wrapper around creating a `RawCallBuilder` with the data set to
19260the bytecode concatenated with the constructor's ABI-encoded arguments.*/
19261        #[inline]
19262        pub fn deploy_builder(
19263            provider: P,
19264            _strategyManager: alloy::sol_types::private::Address,
19265            _eigenPodManager: alloy::sol_types::private::Address,
19266            _allocationManager: alloy::sol_types::private::Address,
19267            _pauserRegistry: alloy::sol_types::private::Address,
19268            _permissionController: alloy::sol_types::private::Address,
19269            _MIN_WITHDRAWAL_DELAY: u32,
19270            _version: alloy::sol_types::private::String,
19271        ) -> alloy_contract::RawCallBuilder<P, N> {
19272            alloy_contract::RawCallBuilder::new_raw_deploy(
19273                provider,
19274                [
19275                    &BYTECODE[..],
19276                    &alloy_sol_types::SolConstructor::abi_encode(
19277                        &constructorCall {
19278                            _strategyManager,
19279                            _eigenPodManager,
19280                            _allocationManager,
19281                            _pauserRegistry,
19282                            _permissionController,
19283                            _MIN_WITHDRAWAL_DELAY,
19284                            _version,
19285                        },
19286                    )[..],
19287                ]
19288                    .concat()
19289                    .into(),
19290            )
19291        }
19292        /// Returns a reference to the address.
19293        #[inline]
19294        pub const fn address(&self) -> &alloy_sol_types::private::Address {
19295            &self.address
19296        }
19297        /// Sets the address.
19298        #[inline]
19299        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
19300            self.address = address;
19301        }
19302        /// Sets the address and returns `self`.
19303        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
19304            self.set_address(address);
19305            self
19306        }
19307        /// Returns a reference to the provider.
19308        #[inline]
19309        pub const fn provider(&self) -> &P {
19310            &self.provider
19311        }
19312    }
19313    impl<P: ::core::clone::Clone, N> DelegationManagerInstance<&P, N> {
19314        /// Clones the provider and returns a new instance with the cloned provider.
19315        #[inline]
19316        pub fn with_cloned_provider(self) -> DelegationManagerInstance<P, N> {
19317            DelegationManagerInstance {
19318                address: self.address,
19319                provider: ::core::clone::Clone::clone(&self.provider),
19320                _network: ::core::marker::PhantomData,
19321            }
19322        }
19323    }
19324    /// Function calls.
19325    #[automatically_derived]
19326    impl<
19327        P: alloy_contract::private::Provider<N>,
19328        N: alloy_contract::private::Network,
19329    > DelegationManagerInstance<P, N> {
19330        /// Creates a new call builder using this contract instance's provider and address.
19331        ///
19332        /// Note that the call can be any function call, not just those defined in this
19333        /// contract. Prefer using the other methods for building type-safe contract calls.
19334        pub fn call_builder<C: alloy_sol_types::SolCall>(
19335            &self,
19336            call: &C,
19337        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
19338            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
19339        }
19340        ///Creates a new call builder for the [`DELEGATION_APPROVAL_TYPEHASH`] function.
19341        pub fn DELEGATION_APPROVAL_TYPEHASH(
19342            &self,
19343        ) -> alloy_contract::SolCallBuilder<&P, DELEGATION_APPROVAL_TYPEHASHCall, N> {
19344            self.call_builder(&DELEGATION_APPROVAL_TYPEHASHCall)
19345        }
19346        ///Creates a new call builder for the [`allocationManager`] function.
19347        pub fn allocationManager(
19348            &self,
19349        ) -> alloy_contract::SolCallBuilder<&P, allocationManagerCall, N> {
19350            self.call_builder(&allocationManagerCall)
19351        }
19352        ///Creates a new call builder for the [`beaconChainETHStrategy`] function.
19353        pub fn beaconChainETHStrategy(
19354            &self,
19355        ) -> alloy_contract::SolCallBuilder<&P, beaconChainETHStrategyCall, N> {
19356            self.call_builder(&beaconChainETHStrategyCall)
19357        }
19358        ///Creates a new call builder for the [`calculateDelegationApprovalDigestHash`] function.
19359        pub fn calculateDelegationApprovalDigestHash(
19360            &self,
19361            staker: alloy::sol_types::private::Address,
19362            operator: alloy::sol_types::private::Address,
19363            approver: alloy::sol_types::private::Address,
19364            approverSalt: alloy::sol_types::private::FixedBytes<32>,
19365            expiry: alloy::sol_types::private::primitives::aliases::U256,
19366        ) -> alloy_contract::SolCallBuilder<
19367            &P,
19368            calculateDelegationApprovalDigestHashCall,
19369            N,
19370        > {
19371            self.call_builder(
19372                &calculateDelegationApprovalDigestHashCall {
19373                    staker,
19374                    operator,
19375                    approver,
19376                    approverSalt,
19377                    expiry,
19378                },
19379            )
19380        }
19381        ///Creates a new call builder for the [`calculateWithdrawalRoot`] function.
19382        pub fn calculateWithdrawalRoot(
19383            &self,
19384            withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
19385        ) -> alloy_contract::SolCallBuilder<&P, calculateWithdrawalRootCall, N> {
19386            self.call_builder(
19387                &calculateWithdrawalRootCall {
19388                    withdrawal,
19389                },
19390            )
19391        }
19392        ///Creates a new call builder for the [`completeQueuedWithdrawal`] function.
19393        pub fn completeQueuedWithdrawal(
19394            &self,
19395            withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
19396            tokens: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
19397            receiveAsTokens: bool,
19398        ) -> alloy_contract::SolCallBuilder<&P, completeQueuedWithdrawalCall, N> {
19399            self.call_builder(
19400                &completeQueuedWithdrawalCall {
19401                    withdrawal,
19402                    tokens,
19403                    receiveAsTokens,
19404                },
19405            )
19406        }
19407        ///Creates a new call builder for the [`completeQueuedWithdrawals`] function.
19408        pub fn completeQueuedWithdrawals(
19409            &self,
19410            withdrawals: alloy::sol_types::private::Vec<
19411                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
19412            >,
19413            tokens: alloy::sol_types::private::Vec<
19414                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
19415            >,
19416            receiveAsTokens: alloy::sol_types::private::Vec<bool>,
19417        ) -> alloy_contract::SolCallBuilder<&P, completeQueuedWithdrawalsCall, N> {
19418            self.call_builder(
19419                &completeQueuedWithdrawalsCall {
19420                    withdrawals,
19421                    tokens,
19422                    receiveAsTokens,
19423                },
19424            )
19425        }
19426        ///Creates a new call builder for the [`convertToDepositShares`] function.
19427        pub fn convertToDepositShares(
19428            &self,
19429            staker: alloy::sol_types::private::Address,
19430            strategies: alloy::sol_types::private::Vec<
19431                alloy::sol_types::private::Address,
19432            >,
19433            withdrawableShares: alloy::sol_types::private::Vec<
19434                alloy::sol_types::private::primitives::aliases::U256,
19435            >,
19436        ) -> alloy_contract::SolCallBuilder<&P, convertToDepositSharesCall, N> {
19437            self.call_builder(
19438                &convertToDepositSharesCall {
19439                    staker,
19440                    strategies,
19441                    withdrawableShares,
19442                },
19443            )
19444        }
19445        ///Creates a new call builder for the [`cumulativeWithdrawalsQueued`] function.
19446        pub fn cumulativeWithdrawalsQueued(
19447            &self,
19448            staker: alloy::sol_types::private::Address,
19449        ) -> alloy_contract::SolCallBuilder<&P, cumulativeWithdrawalsQueuedCall, N> {
19450            self.call_builder(
19451                &cumulativeWithdrawalsQueuedCall {
19452                    staker,
19453                },
19454            )
19455        }
19456        ///Creates a new call builder for the [`decreaseDelegatedShares`] function.
19457        pub fn decreaseDelegatedShares(
19458            &self,
19459            staker: alloy::sol_types::private::Address,
19460            curDepositShares: alloy::sol_types::private::primitives::aliases::U256,
19461            beaconChainSlashingFactorDecrease: u64,
19462        ) -> alloy_contract::SolCallBuilder<&P, decreaseDelegatedSharesCall, N> {
19463            self.call_builder(
19464                &decreaseDelegatedSharesCall {
19465                    staker,
19466                    curDepositShares,
19467                    beaconChainSlashingFactorDecrease,
19468                },
19469            )
19470        }
19471        ///Creates a new call builder for the [`delegateTo`] function.
19472        pub fn delegateTo(
19473            &self,
19474            operator: alloy::sol_types::private::Address,
19475            approverSignatureAndExpiry: <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
19476            approverSalt: alloy::sol_types::private::FixedBytes<32>,
19477        ) -> alloy_contract::SolCallBuilder<&P, delegateToCall, N> {
19478            self.call_builder(
19479                &delegateToCall {
19480                    operator,
19481                    approverSignatureAndExpiry,
19482                    approverSalt,
19483                },
19484            )
19485        }
19486        ///Creates a new call builder for the [`delegatedTo`] function.
19487        pub fn delegatedTo(
19488            &self,
19489            staker: alloy::sol_types::private::Address,
19490        ) -> alloy_contract::SolCallBuilder<&P, delegatedToCall, N> {
19491            self.call_builder(&delegatedToCall { staker })
19492        }
19493        ///Creates a new call builder for the [`delegationApprover`] function.
19494        pub fn delegationApprover(
19495            &self,
19496            operator: alloy::sol_types::private::Address,
19497        ) -> alloy_contract::SolCallBuilder<&P, delegationApproverCall, N> {
19498            self.call_builder(&delegationApproverCall { operator })
19499        }
19500        ///Creates a new call builder for the [`delegationApproverSaltIsSpent`] function.
19501        pub fn delegationApproverSaltIsSpent(
19502            &self,
19503            delegationApprover: alloy::sol_types::private::Address,
19504            salt: alloy::sol_types::private::FixedBytes<32>,
19505        ) -> alloy_contract::SolCallBuilder<&P, delegationApproverSaltIsSpentCall, N> {
19506            self.call_builder(
19507                &delegationApproverSaltIsSpentCall {
19508                    delegationApprover,
19509                    salt,
19510                },
19511            )
19512        }
19513        ///Creates a new call builder for the [`depositScalingFactor`] function.
19514        pub fn depositScalingFactor(
19515            &self,
19516            staker: alloy::sol_types::private::Address,
19517            strategy: alloy::sol_types::private::Address,
19518        ) -> alloy_contract::SolCallBuilder<&P, depositScalingFactorCall, N> {
19519            self.call_builder(
19520                &depositScalingFactorCall {
19521                    staker,
19522                    strategy,
19523                },
19524            )
19525        }
19526        ///Creates a new call builder for the [`domainSeparator`] function.
19527        pub fn domainSeparator(
19528            &self,
19529        ) -> alloy_contract::SolCallBuilder<&P, domainSeparatorCall, N> {
19530            self.call_builder(&domainSeparatorCall)
19531        }
19532        ///Creates a new call builder for the [`eigenPodManager`] function.
19533        pub fn eigenPodManager(
19534            &self,
19535        ) -> alloy_contract::SolCallBuilder<&P, eigenPodManagerCall, N> {
19536            self.call_builder(&eigenPodManagerCall)
19537        }
19538        ///Creates a new call builder for the [`getDepositedShares`] function.
19539        pub fn getDepositedShares(
19540            &self,
19541            staker: alloy::sol_types::private::Address,
19542        ) -> alloy_contract::SolCallBuilder<&P, getDepositedSharesCall, N> {
19543            self.call_builder(&getDepositedSharesCall { staker })
19544        }
19545        ///Creates a new call builder for the [`getOperatorShares`] function.
19546        pub fn getOperatorShares(
19547            &self,
19548            operator: alloy::sol_types::private::Address,
19549            strategies: alloy::sol_types::private::Vec<
19550                alloy::sol_types::private::Address,
19551            >,
19552        ) -> alloy_contract::SolCallBuilder<&P, getOperatorSharesCall, N> {
19553            self.call_builder(
19554                &getOperatorSharesCall {
19555                    operator,
19556                    strategies,
19557                },
19558            )
19559        }
19560        ///Creates a new call builder for the [`getOperatorsShares`] function.
19561        pub fn getOperatorsShares(
19562            &self,
19563            operators: alloy::sol_types::private::Vec<
19564                alloy::sol_types::private::Address,
19565            >,
19566            strategies: alloy::sol_types::private::Vec<
19567                alloy::sol_types::private::Address,
19568            >,
19569        ) -> alloy_contract::SolCallBuilder<&P, getOperatorsSharesCall, N> {
19570            self.call_builder(
19571                &getOperatorsSharesCall {
19572                    operators,
19573                    strategies,
19574                },
19575            )
19576        }
19577        ///Creates a new call builder for the [`getQueuedWithdrawal`] function.
19578        pub fn getQueuedWithdrawal(
19579            &self,
19580            withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
19581        ) -> alloy_contract::SolCallBuilder<&P, getQueuedWithdrawalCall, N> {
19582            self.call_builder(
19583                &getQueuedWithdrawalCall {
19584                    withdrawalRoot,
19585                },
19586            )
19587        }
19588        ///Creates a new call builder for the [`getQueuedWithdrawalRoots`] function.
19589        pub fn getQueuedWithdrawalRoots(
19590            &self,
19591            staker: alloy::sol_types::private::Address,
19592        ) -> alloy_contract::SolCallBuilder<&P, getQueuedWithdrawalRootsCall, N> {
19593            self.call_builder(
19594                &getQueuedWithdrawalRootsCall {
19595                    staker,
19596                },
19597            )
19598        }
19599        ///Creates a new call builder for the [`getQueuedWithdrawals`] function.
19600        pub fn getQueuedWithdrawals(
19601            &self,
19602            staker: alloy::sol_types::private::Address,
19603        ) -> alloy_contract::SolCallBuilder<&P, getQueuedWithdrawalsCall, N> {
19604            self.call_builder(&getQueuedWithdrawalsCall { staker })
19605        }
19606        ///Creates a new call builder for the [`getSlashableSharesInQueue`] function.
19607        pub fn getSlashableSharesInQueue(
19608            &self,
19609            operator: alloy::sol_types::private::Address,
19610            strategy: alloy::sol_types::private::Address,
19611        ) -> alloy_contract::SolCallBuilder<&P, getSlashableSharesInQueueCall, N> {
19612            self.call_builder(
19613                &getSlashableSharesInQueueCall {
19614                    operator,
19615                    strategy,
19616                },
19617            )
19618        }
19619        ///Creates a new call builder for the [`getWithdrawableShares`] function.
19620        pub fn getWithdrawableShares(
19621            &self,
19622            staker: alloy::sol_types::private::Address,
19623            strategies: alloy::sol_types::private::Vec<
19624                alloy::sol_types::private::Address,
19625            >,
19626        ) -> alloy_contract::SolCallBuilder<&P, getWithdrawableSharesCall, N> {
19627            self.call_builder(
19628                &getWithdrawableSharesCall {
19629                    staker,
19630                    strategies,
19631                },
19632            )
19633        }
19634        ///Creates a new call builder for the [`increaseDelegatedShares`] function.
19635        pub fn increaseDelegatedShares(
19636            &self,
19637            staker: alloy::sol_types::private::Address,
19638            strategy: alloy::sol_types::private::Address,
19639            prevDepositShares: alloy::sol_types::private::primitives::aliases::U256,
19640            addedShares: alloy::sol_types::private::primitives::aliases::U256,
19641        ) -> alloy_contract::SolCallBuilder<&P, increaseDelegatedSharesCall, N> {
19642            self.call_builder(
19643                &increaseDelegatedSharesCall {
19644                    staker,
19645                    strategy,
19646                    prevDepositShares,
19647                    addedShares,
19648                },
19649            )
19650        }
19651        ///Creates a new call builder for the [`initialize`] function.
19652        pub fn initialize(
19653            &self,
19654            initialOwner: alloy::sol_types::private::Address,
19655            initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
19656        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
19657            self.call_builder(
19658                &initializeCall {
19659                    initialOwner,
19660                    initialPausedStatus,
19661                },
19662            )
19663        }
19664        ///Creates a new call builder for the [`isDelegated`] function.
19665        pub fn isDelegated(
19666            &self,
19667            staker: alloy::sol_types::private::Address,
19668        ) -> alloy_contract::SolCallBuilder<&P, isDelegatedCall, N> {
19669            self.call_builder(&isDelegatedCall { staker })
19670        }
19671        ///Creates a new call builder for the [`isOperator`] function.
19672        pub fn isOperator(
19673            &self,
19674            operator: alloy::sol_types::private::Address,
19675        ) -> alloy_contract::SolCallBuilder<&P, isOperatorCall, N> {
19676            self.call_builder(&isOperatorCall { operator })
19677        }
19678        ///Creates a new call builder for the [`minWithdrawalDelayBlocks`] function.
19679        pub fn minWithdrawalDelayBlocks(
19680            &self,
19681        ) -> alloy_contract::SolCallBuilder<&P, minWithdrawalDelayBlocksCall, N> {
19682            self.call_builder(&minWithdrawalDelayBlocksCall)
19683        }
19684        ///Creates a new call builder for the [`modifyOperatorDetails`] function.
19685        pub fn modifyOperatorDetails(
19686            &self,
19687            operator: alloy::sol_types::private::Address,
19688            newDelegationApprover: alloy::sol_types::private::Address,
19689        ) -> alloy_contract::SolCallBuilder<&P, modifyOperatorDetailsCall, N> {
19690            self.call_builder(
19691                &modifyOperatorDetailsCall {
19692                    operator,
19693                    newDelegationApprover,
19694                },
19695            )
19696        }
19697        ///Creates a new call builder for the [`operatorShares`] function.
19698        pub fn operatorShares(
19699            &self,
19700            operator: alloy::sol_types::private::Address,
19701            strategy: alloy::sol_types::private::Address,
19702        ) -> alloy_contract::SolCallBuilder<&P, operatorSharesCall, N> {
19703            self.call_builder(
19704                &operatorSharesCall {
19705                    operator,
19706                    strategy,
19707                },
19708            )
19709        }
19710        ///Creates a new call builder for the [`owner`] function.
19711        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
19712            self.call_builder(&ownerCall)
19713        }
19714        ///Creates a new call builder for the [`pause`] function.
19715        pub fn pause(
19716            &self,
19717            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
19718        ) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
19719            self.call_builder(&pauseCall { newPausedStatus })
19720        }
19721        ///Creates a new call builder for the [`pauseAll`] function.
19722        pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder<&P, pauseAllCall, N> {
19723            self.call_builder(&pauseAllCall)
19724        }
19725        ///Creates a new call builder for the [`paused_0`] function.
19726        pub fn paused_0(
19727            &self,
19728            index: u8,
19729        ) -> alloy_contract::SolCallBuilder<&P, paused_0Call, N> {
19730            self.call_builder(&paused_0Call { index })
19731        }
19732        ///Creates a new call builder for the [`paused_1`] function.
19733        pub fn paused_1(&self) -> alloy_contract::SolCallBuilder<&P, paused_1Call, N> {
19734            self.call_builder(&paused_1Call)
19735        }
19736        ///Creates a new call builder for the [`pauserRegistry`] function.
19737        pub fn pauserRegistry(
19738            &self,
19739        ) -> alloy_contract::SolCallBuilder<&P, pauserRegistryCall, N> {
19740            self.call_builder(&pauserRegistryCall)
19741        }
19742        ///Creates a new call builder for the [`pendingWithdrawals`] function.
19743        pub fn pendingWithdrawals(
19744            &self,
19745            withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
19746        ) -> alloy_contract::SolCallBuilder<&P, pendingWithdrawalsCall, N> {
19747            self.call_builder(
19748                &pendingWithdrawalsCall {
19749                    withdrawalRoot,
19750                },
19751            )
19752        }
19753        ///Creates a new call builder for the [`permissionController`] function.
19754        pub fn permissionController(
19755            &self,
19756        ) -> alloy_contract::SolCallBuilder<&P, permissionControllerCall, N> {
19757            self.call_builder(&permissionControllerCall)
19758        }
19759        ///Creates a new call builder for the [`queueWithdrawals`] function.
19760        pub fn queueWithdrawals(
19761            &self,
19762            params: alloy::sol_types::private::Vec<
19763                <IDelegationManagerTypes::QueuedWithdrawalParams as alloy::sol_types::SolType>::RustType,
19764            >,
19765        ) -> alloy_contract::SolCallBuilder<&P, queueWithdrawalsCall, N> {
19766            self.call_builder(&queueWithdrawalsCall { params })
19767        }
19768        ///Creates a new call builder for the [`queuedWithdrawals`] function.
19769        pub fn queuedWithdrawals(
19770            &self,
19771            withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
19772        ) -> alloy_contract::SolCallBuilder<&P, queuedWithdrawalsCall, N> {
19773            self.call_builder(
19774                &queuedWithdrawalsCall {
19775                    withdrawalRoot,
19776                },
19777            )
19778        }
19779        ///Creates a new call builder for the [`redelegate`] function.
19780        pub fn redelegate(
19781            &self,
19782            newOperator: alloy::sol_types::private::Address,
19783            newOperatorApproverSig: <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
19784            approverSalt: alloy::sol_types::private::FixedBytes<32>,
19785        ) -> alloy_contract::SolCallBuilder<&P, redelegateCall, N> {
19786            self.call_builder(
19787                &redelegateCall {
19788                    newOperator,
19789                    newOperatorApproverSig,
19790                    approverSalt,
19791                },
19792            )
19793        }
19794        ///Creates a new call builder for the [`registerAsOperator`] function.
19795        pub fn registerAsOperator(
19796            &self,
19797            initDelegationApprover: alloy::sol_types::private::Address,
19798            allocationDelay: u32,
19799            metadataURI: alloy::sol_types::private::String,
19800        ) -> alloy_contract::SolCallBuilder<&P, registerAsOperatorCall, N> {
19801            self.call_builder(
19802                &registerAsOperatorCall {
19803                    initDelegationApprover,
19804                    allocationDelay,
19805                    metadataURI,
19806                },
19807            )
19808        }
19809        ///Creates a new call builder for the [`renounceOwnership`] function.
19810        pub fn renounceOwnership(
19811            &self,
19812        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
19813            self.call_builder(&renounceOwnershipCall)
19814        }
19815        ///Creates a new call builder for the [`slashOperatorShares`] function.
19816        pub fn slashOperatorShares(
19817            &self,
19818            operator: alloy::sol_types::private::Address,
19819            strategy: alloy::sol_types::private::Address,
19820            prevMaxMagnitude: u64,
19821            newMaxMagnitude: u64,
19822        ) -> alloy_contract::SolCallBuilder<&P, slashOperatorSharesCall, N> {
19823            self.call_builder(
19824                &slashOperatorSharesCall {
19825                    operator,
19826                    strategy,
19827                    prevMaxMagnitude,
19828                    newMaxMagnitude,
19829                },
19830            )
19831        }
19832        ///Creates a new call builder for the [`strategyManager`] function.
19833        pub fn strategyManager(
19834            &self,
19835        ) -> alloy_contract::SolCallBuilder<&P, strategyManagerCall, N> {
19836            self.call_builder(&strategyManagerCall)
19837        }
19838        ///Creates a new call builder for the [`transferOwnership`] function.
19839        pub fn transferOwnership(
19840            &self,
19841            newOwner: alloy::sol_types::private::Address,
19842        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
19843            self.call_builder(&transferOwnershipCall { newOwner })
19844        }
19845        ///Creates a new call builder for the [`undelegate`] function.
19846        pub fn undelegate(
19847            &self,
19848            staker: alloy::sol_types::private::Address,
19849        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
19850            self.call_builder(&undelegateCall { staker })
19851        }
19852        ///Creates a new call builder for the [`unpause`] function.
19853        pub fn unpause(
19854            &self,
19855            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
19856        ) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
19857            self.call_builder(&unpauseCall { newPausedStatus })
19858        }
19859        ///Creates a new call builder for the [`updateOperatorMetadataURI`] function.
19860        pub fn updateOperatorMetadataURI(
19861            &self,
19862            operator: alloy::sol_types::private::Address,
19863            metadataURI: alloy::sol_types::private::String,
19864        ) -> alloy_contract::SolCallBuilder<&P, updateOperatorMetadataURICall, N> {
19865            self.call_builder(
19866                &updateOperatorMetadataURICall {
19867                    operator,
19868                    metadataURI,
19869                },
19870            )
19871        }
19872        ///Creates a new call builder for the [`version`] function.
19873        pub fn version(&self) -> alloy_contract::SolCallBuilder<&P, versionCall, N> {
19874            self.call_builder(&versionCall)
19875        }
19876    }
19877    /// Event filters.
19878    #[automatically_derived]
19879    impl<
19880        P: alloy_contract::private::Provider<N>,
19881        N: alloy_contract::private::Network,
19882    > DelegationManagerInstance<P, N> {
19883        /// Creates a new event filter using this contract instance's provider and address.
19884        ///
19885        /// Note that the type can be any event, not just those defined in this contract.
19886        /// Prefer using the other methods for building type-safe event filters.
19887        pub fn event_filter<E: alloy_sol_types::SolEvent>(
19888            &self,
19889        ) -> alloy_contract::Event<&P, E, N> {
19890            alloy_contract::Event::new_sol(&self.provider, &self.address)
19891        }
19892        ///Creates a new event filter for the [`DelegationApproverUpdated`] event.
19893        pub fn DelegationApproverUpdated_filter(
19894            &self,
19895        ) -> alloy_contract::Event<&P, DelegationApproverUpdated, N> {
19896            self.event_filter::<DelegationApproverUpdated>()
19897        }
19898        ///Creates a new event filter for the [`DepositScalingFactorUpdated`] event.
19899        pub fn DepositScalingFactorUpdated_filter(
19900            &self,
19901        ) -> alloy_contract::Event<&P, DepositScalingFactorUpdated, N> {
19902            self.event_filter::<DepositScalingFactorUpdated>()
19903        }
19904        ///Creates a new event filter for the [`Initialized`] event.
19905        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
19906            self.event_filter::<Initialized>()
19907        }
19908        ///Creates a new event filter for the [`OperatorMetadataURIUpdated`] event.
19909        pub fn OperatorMetadataURIUpdated_filter(
19910            &self,
19911        ) -> alloy_contract::Event<&P, OperatorMetadataURIUpdated, N> {
19912            self.event_filter::<OperatorMetadataURIUpdated>()
19913        }
19914        ///Creates a new event filter for the [`OperatorRegistered`] event.
19915        pub fn OperatorRegistered_filter(
19916            &self,
19917        ) -> alloy_contract::Event<&P, OperatorRegistered, N> {
19918            self.event_filter::<OperatorRegistered>()
19919        }
19920        ///Creates a new event filter for the [`OperatorSharesDecreased`] event.
19921        pub fn OperatorSharesDecreased_filter(
19922            &self,
19923        ) -> alloy_contract::Event<&P, OperatorSharesDecreased, N> {
19924            self.event_filter::<OperatorSharesDecreased>()
19925        }
19926        ///Creates a new event filter for the [`OperatorSharesIncreased`] event.
19927        pub fn OperatorSharesIncreased_filter(
19928            &self,
19929        ) -> alloy_contract::Event<&P, OperatorSharesIncreased, N> {
19930            self.event_filter::<OperatorSharesIncreased>()
19931        }
19932        ///Creates a new event filter for the [`OperatorSharesSlashed`] event.
19933        pub fn OperatorSharesSlashed_filter(
19934            &self,
19935        ) -> alloy_contract::Event<&P, OperatorSharesSlashed, N> {
19936            self.event_filter::<OperatorSharesSlashed>()
19937        }
19938        ///Creates a new event filter for the [`OwnershipTransferred`] event.
19939        pub fn OwnershipTransferred_filter(
19940            &self,
19941        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
19942            self.event_filter::<OwnershipTransferred>()
19943        }
19944        ///Creates a new event filter for the [`Paused`] event.
19945        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
19946            self.event_filter::<Paused>()
19947        }
19948        ///Creates a new event filter for the [`SlashingWithdrawalCompleted`] event.
19949        pub fn SlashingWithdrawalCompleted_filter(
19950            &self,
19951        ) -> alloy_contract::Event<&P, SlashingWithdrawalCompleted, N> {
19952            self.event_filter::<SlashingWithdrawalCompleted>()
19953        }
19954        ///Creates a new event filter for the [`SlashingWithdrawalQueued`] event.
19955        pub fn SlashingWithdrawalQueued_filter(
19956            &self,
19957        ) -> alloy_contract::Event<&P, SlashingWithdrawalQueued, N> {
19958            self.event_filter::<SlashingWithdrawalQueued>()
19959        }
19960        ///Creates a new event filter for the [`StakerDelegated`] event.
19961        pub fn StakerDelegated_filter(
19962            &self,
19963        ) -> alloy_contract::Event<&P, StakerDelegated, N> {
19964            self.event_filter::<StakerDelegated>()
19965        }
19966        ///Creates a new event filter for the [`StakerForceUndelegated`] event.
19967        pub fn StakerForceUndelegated_filter(
19968            &self,
19969        ) -> alloy_contract::Event<&P, StakerForceUndelegated, N> {
19970            self.event_filter::<StakerForceUndelegated>()
19971        }
19972        ///Creates a new event filter for the [`StakerUndelegated`] event.
19973        pub fn StakerUndelegated_filter(
19974            &self,
19975        ) -> alloy_contract::Event<&P, StakerUndelegated, N> {
19976            self.event_filter::<StakerUndelegated>()
19977        }
19978        ///Creates a new event filter for the [`Unpaused`] event.
19979        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
19980            self.event_filter::<Unpaused>()
19981        }
19982    }
19983}