eigenlayer_contract_deployer/bindings/core/
delegationmanager.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(Default, Debug, PartialEq, Eq, Hash)]
24    /**```solidity
25struct QueuedWithdrawalParams { address[] strategies; uint256[] depositShares; address __deprecated_withdrawer; }
26```*/
27    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
28    #[derive(Clone)]
29    pub struct QueuedWithdrawalParams {
30        #[allow(missing_docs)]
31        pub strategies: alloy::sol_types::private::Vec<
32            alloy::sol_types::private::Address,
33        >,
34        #[allow(missing_docs)]
35        pub depositShares: alloy::sol_types::private::Vec<
36            alloy::sol_types::private::primitives::aliases::U256,
37        >,
38        #[allow(missing_docs)]
39        pub __deprecated_withdrawer: alloy::sol_types::private::Address,
40    }
41    #[allow(
42        non_camel_case_types,
43        non_snake_case,
44        clippy::pub_underscore_fields,
45        clippy::style
46    )]
47    const _: () = {
48        use alloy::sol_types as alloy_sol_types;
49        #[doc(hidden)]
50        type UnderlyingSolTuple<'a> = (
51            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
52            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
53            alloy::sol_types::sol_data::Address,
54        );
55        #[doc(hidden)]
56        type UnderlyingRustTuple<'a> = (
57            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
58            alloy::sol_types::private::Vec<
59                alloy::sol_types::private::primitives::aliases::U256,
60            >,
61            alloy::sol_types::private::Address,
62        );
63        #[cfg(test)]
64        #[allow(dead_code, unreachable_patterns)]
65        fn _type_assertion(
66            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
67        ) {
68            match _t {
69                alloy_sol_types::private::AssertTypeEq::<
70                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
71                >(_) => {}
72            }
73        }
74        #[automatically_derived]
75        #[doc(hidden)]
76        impl ::core::convert::From<QueuedWithdrawalParams> for UnderlyingRustTuple<'_> {
77            fn from(value: QueuedWithdrawalParams) -> Self {
78                (value.strategies, value.depositShares, value.__deprecated_withdrawer)
79            }
80        }
81        #[automatically_derived]
82        #[doc(hidden)]
83        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QueuedWithdrawalParams {
84            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
85                Self {
86                    strategies: tuple.0,
87                    depositShares: tuple.1,
88                    __deprecated_withdrawer: tuple.2,
89                }
90            }
91        }
92        #[automatically_derived]
93        impl alloy_sol_types::SolValue for QueuedWithdrawalParams {
94            type SolType = Self;
95        }
96        #[automatically_derived]
97        impl alloy_sol_types::private::SolTypeValue<Self> for QueuedWithdrawalParams {
98            #[inline]
99            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
100                (
101                    <alloy::sol_types::sol_data::Array<
102                        alloy::sol_types::sol_data::Address,
103                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
104                    <alloy::sol_types::sol_data::Array<
105                        alloy::sol_types::sol_data::Uint<256>,
106                    > as alloy_sol_types::SolType>::tokenize(&self.depositShares),
107                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
108                        &self.__deprecated_withdrawer,
109                    ),
110                )
111            }
112            #[inline]
113            fn stv_abi_encoded_size(&self) -> usize {
114                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
115                    return size;
116                }
117                let tuple = <UnderlyingRustTuple<
118                    '_,
119                > as ::core::convert::From<Self>>::from(self.clone());
120                <UnderlyingSolTuple<
121                    '_,
122                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
123            }
124            #[inline]
125            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
126                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
127            }
128            #[inline]
129            fn stv_abi_encode_packed_to(
130                &self,
131                out: &mut alloy_sol_types::private::Vec<u8>,
132            ) {
133                let tuple = <UnderlyingRustTuple<
134                    '_,
135                > as ::core::convert::From<Self>>::from(self.clone());
136                <UnderlyingSolTuple<
137                    '_,
138                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
139            }
140            #[inline]
141            fn stv_abi_packed_encoded_size(&self) -> usize {
142                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
143                    return size;
144                }
145                let tuple = <UnderlyingRustTuple<
146                    '_,
147                > as ::core::convert::From<Self>>::from(self.clone());
148                <UnderlyingSolTuple<
149                    '_,
150                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
151            }
152        }
153        #[automatically_derived]
154        impl alloy_sol_types::SolType for QueuedWithdrawalParams {
155            type RustType = Self;
156            type Token<'a> = <UnderlyingSolTuple<
157                'a,
158            > as alloy_sol_types::SolType>::Token<'a>;
159            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
160            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
161                '_,
162            > as alloy_sol_types::SolType>::ENCODED_SIZE;
163            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
164                '_,
165            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
166            #[inline]
167            fn valid_token(token: &Self::Token<'_>) -> bool {
168                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
169            }
170            #[inline]
171            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
172                let tuple = <UnderlyingSolTuple<
173                    '_,
174                > as alloy_sol_types::SolType>::detokenize(token);
175                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
176            }
177        }
178        #[automatically_derived]
179        impl alloy_sol_types::SolStruct for QueuedWithdrawalParams {
180            const NAME: &'static str = "QueuedWithdrawalParams";
181            #[inline]
182            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
183                alloy_sol_types::private::Cow::Borrowed(
184                    "QueuedWithdrawalParams(address[] strategies,uint256[] depositShares,address __deprecated_withdrawer)",
185                )
186            }
187            #[inline]
188            fn eip712_components() -> alloy_sol_types::private::Vec<
189                alloy_sol_types::private::Cow<'static, str>,
190            > {
191                alloy_sol_types::private::Vec::new()
192            }
193            #[inline]
194            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
195                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
196            }
197            #[inline]
198            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
199                [
200                    <alloy::sol_types::sol_data::Array<
201                        alloy::sol_types::sol_data::Address,
202                    > as alloy_sol_types::SolType>::eip712_data_word(&self.strategies)
203                        .0,
204                    <alloy::sol_types::sol_data::Array<
205                        alloy::sol_types::sol_data::Uint<256>,
206                    > as alloy_sol_types::SolType>::eip712_data_word(&self.depositShares)
207                        .0,
208                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
209                            &self.__deprecated_withdrawer,
210                        )
211                        .0,
212                ]
213                    .concat()
214            }
215        }
216        #[automatically_derived]
217        impl alloy_sol_types::EventTopic for QueuedWithdrawalParams {
218            #[inline]
219            fn topic_preimage_length(rust: &Self::RustType) -> usize {
220                0usize
221                    + <alloy::sol_types::sol_data::Array<
222                        alloy::sol_types::sol_data::Address,
223                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
224                        &rust.strategies,
225                    )
226                    + <alloy::sol_types::sol_data::Array<
227                        alloy::sol_types::sol_data::Uint<256>,
228                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
229                        &rust.depositShares,
230                    )
231                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
232                        &rust.__deprecated_withdrawer,
233                    )
234            }
235            #[inline]
236            fn encode_topic_preimage(
237                rust: &Self::RustType,
238                out: &mut alloy_sol_types::private::Vec<u8>,
239            ) {
240                out.reserve(
241                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
242                );
243                <alloy::sol_types::sol_data::Array<
244                    alloy::sol_types::sol_data::Address,
245                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
246                    &rust.strategies,
247                    out,
248                );
249                <alloy::sol_types::sol_data::Array<
250                    alloy::sol_types::sol_data::Uint<256>,
251                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
252                    &rust.depositShares,
253                    out,
254                );
255                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
256                    &rust.__deprecated_withdrawer,
257                    out,
258                );
259            }
260            #[inline]
261            fn encode_topic(
262                rust: &Self::RustType,
263            ) -> alloy_sol_types::abi::token::WordToken {
264                let mut out = alloy_sol_types::private::Vec::new();
265                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
266                    rust,
267                    &mut out,
268                );
269                alloy_sol_types::abi::token::WordToken(
270                    alloy_sol_types::private::keccak256(out),
271                )
272            }
273        }
274    };
275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
276    /**```solidity
277struct Withdrawal { address staker; address delegatedTo; address withdrawer; uint256 nonce; uint32 startBlock; address[] strategies; uint256[] scaledShares; }
278```*/
279    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
280    #[derive(Clone)]
281    pub struct Withdrawal {
282        #[allow(missing_docs)]
283        pub staker: alloy::sol_types::private::Address,
284        #[allow(missing_docs)]
285        pub delegatedTo: alloy::sol_types::private::Address,
286        #[allow(missing_docs)]
287        pub withdrawer: alloy::sol_types::private::Address,
288        #[allow(missing_docs)]
289        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
290        #[allow(missing_docs)]
291        pub startBlock: u32,
292        #[allow(missing_docs)]
293        pub strategies: alloy::sol_types::private::Vec<
294            alloy::sol_types::private::Address,
295        >,
296        #[allow(missing_docs)]
297        pub scaledShares: alloy::sol_types::private::Vec<
298            alloy::sol_types::private::primitives::aliases::U256,
299        >,
300    }
301    #[allow(
302        non_camel_case_types,
303        non_snake_case,
304        clippy::pub_underscore_fields,
305        clippy::style
306    )]
307    const _: () = {
308        use alloy::sol_types as alloy_sol_types;
309        #[doc(hidden)]
310        type UnderlyingSolTuple<'a> = (
311            alloy::sol_types::sol_data::Address,
312            alloy::sol_types::sol_data::Address,
313            alloy::sol_types::sol_data::Address,
314            alloy::sol_types::sol_data::Uint<256>,
315            alloy::sol_types::sol_data::Uint<32>,
316            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
317            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
318        );
319        #[doc(hidden)]
320        type UnderlyingRustTuple<'a> = (
321            alloy::sol_types::private::Address,
322            alloy::sol_types::private::Address,
323            alloy::sol_types::private::Address,
324            alloy::sol_types::private::primitives::aliases::U256,
325            u32,
326            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
327            alloy::sol_types::private::Vec<
328                alloy::sol_types::private::primitives::aliases::U256,
329            >,
330        );
331        #[cfg(test)]
332        #[allow(dead_code, unreachable_patterns)]
333        fn _type_assertion(
334            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
335        ) {
336            match _t {
337                alloy_sol_types::private::AssertTypeEq::<
338                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
339                >(_) => {}
340            }
341        }
342        #[automatically_derived]
343        #[doc(hidden)]
344        impl ::core::convert::From<Withdrawal> for UnderlyingRustTuple<'_> {
345            fn from(value: Withdrawal) -> Self {
346                (
347                    value.staker,
348                    value.delegatedTo,
349                    value.withdrawer,
350                    value.nonce,
351                    value.startBlock,
352                    value.strategies,
353                    value.scaledShares,
354                )
355            }
356        }
357        #[automatically_derived]
358        #[doc(hidden)]
359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Withdrawal {
360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361                Self {
362                    staker: tuple.0,
363                    delegatedTo: tuple.1,
364                    withdrawer: tuple.2,
365                    nonce: tuple.3,
366                    startBlock: tuple.4,
367                    strategies: tuple.5,
368                    scaledShares: tuple.6,
369                }
370            }
371        }
372        #[automatically_derived]
373        impl alloy_sol_types::SolValue for Withdrawal {
374            type SolType = Self;
375        }
376        #[automatically_derived]
377        impl alloy_sol_types::private::SolTypeValue<Self> for Withdrawal {
378            #[inline]
379            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
380                (
381                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
382                        &self.staker,
383                    ),
384                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
385                        &self.delegatedTo,
386                    ),
387                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
388                        &self.withdrawer,
389                    ),
390                    <alloy::sol_types::sol_data::Uint<
391                        256,
392                    > as alloy_sol_types::SolType>::tokenize(&self.nonce),
393                    <alloy::sol_types::sol_data::Uint<
394                        32,
395                    > as alloy_sol_types::SolType>::tokenize(&self.startBlock),
396                    <alloy::sol_types::sol_data::Array<
397                        alloy::sol_types::sol_data::Address,
398                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
399                    <alloy::sol_types::sol_data::Array<
400                        alloy::sol_types::sol_data::Uint<256>,
401                    > as alloy_sol_types::SolType>::tokenize(&self.scaledShares),
402                )
403            }
404            #[inline]
405            fn stv_abi_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
415            }
416            #[inline]
417            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
418                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
419            }
420            #[inline]
421            fn stv_abi_encode_packed_to(
422                &self,
423                out: &mut alloy_sol_types::private::Vec<u8>,
424            ) {
425                let tuple = <UnderlyingRustTuple<
426                    '_,
427                > as ::core::convert::From<Self>>::from(self.clone());
428                <UnderlyingSolTuple<
429                    '_,
430                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
431            }
432            #[inline]
433            fn stv_abi_packed_encoded_size(&self) -> usize {
434                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
435                    return size;
436                }
437                let tuple = <UnderlyingRustTuple<
438                    '_,
439                > as ::core::convert::From<Self>>::from(self.clone());
440                <UnderlyingSolTuple<
441                    '_,
442                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
443            }
444        }
445        #[automatically_derived]
446        impl alloy_sol_types::SolType for Withdrawal {
447            type RustType = Self;
448            type Token<'a> = <UnderlyingSolTuple<
449                'a,
450            > as alloy_sol_types::SolType>::Token<'a>;
451            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
452            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
453                '_,
454            > as alloy_sol_types::SolType>::ENCODED_SIZE;
455            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
456                '_,
457            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
458            #[inline]
459            fn valid_token(token: &Self::Token<'_>) -> bool {
460                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
461            }
462            #[inline]
463            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
464                let tuple = <UnderlyingSolTuple<
465                    '_,
466                > as alloy_sol_types::SolType>::detokenize(token);
467                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
468            }
469        }
470        #[automatically_derived]
471        impl alloy_sol_types::SolStruct for Withdrawal {
472            const NAME: &'static str = "Withdrawal";
473            #[inline]
474            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
475                alloy_sol_types::private::Cow::Borrowed(
476                    "Withdrawal(address staker,address delegatedTo,address withdrawer,uint256 nonce,uint32 startBlock,address[] strategies,uint256[] scaledShares)",
477                )
478            }
479            #[inline]
480            fn eip712_components() -> alloy_sol_types::private::Vec<
481                alloy_sol_types::private::Cow<'static, str>,
482            > {
483                alloy_sol_types::private::Vec::new()
484            }
485            #[inline]
486            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
487                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
488            }
489            #[inline]
490            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
491                [
492                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
493                            &self.staker,
494                        )
495                        .0,
496                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
497                            &self.delegatedTo,
498                        )
499                        .0,
500                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
501                            &self.withdrawer,
502                        )
503                        .0,
504                    <alloy::sol_types::sol_data::Uint<
505                        256,
506                    > as alloy_sol_types::SolType>::eip712_data_word(&self.nonce)
507                        .0,
508                    <alloy::sol_types::sol_data::Uint<
509                        32,
510                    > as alloy_sol_types::SolType>::eip712_data_word(&self.startBlock)
511                        .0,
512                    <alloy::sol_types::sol_data::Array<
513                        alloy::sol_types::sol_data::Address,
514                    > as alloy_sol_types::SolType>::eip712_data_word(&self.strategies)
515                        .0,
516                    <alloy::sol_types::sol_data::Array<
517                        alloy::sol_types::sol_data::Uint<256>,
518                    > as alloy_sol_types::SolType>::eip712_data_word(&self.scaledShares)
519                        .0,
520                ]
521                    .concat()
522            }
523        }
524        #[automatically_derived]
525        impl alloy_sol_types::EventTopic for Withdrawal {
526            #[inline]
527            fn topic_preimage_length(rust: &Self::RustType) -> usize {
528                0usize
529                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
530                        &rust.staker,
531                    )
532                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
533                        &rust.delegatedTo,
534                    )
535                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
536                        &rust.withdrawer,
537                    )
538                    + <alloy::sol_types::sol_data::Uint<
539                        256,
540                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce)
541                    + <alloy::sol_types::sol_data::Uint<
542                        32,
543                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
544                        &rust.startBlock,
545                    )
546                    + <alloy::sol_types::sol_data::Array<
547                        alloy::sol_types::sol_data::Address,
548                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
549                        &rust.strategies,
550                    )
551                    + <alloy::sol_types::sol_data::Array<
552                        alloy::sol_types::sol_data::Uint<256>,
553                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
554                        &rust.scaledShares,
555                    )
556            }
557            #[inline]
558            fn encode_topic_preimage(
559                rust: &Self::RustType,
560                out: &mut alloy_sol_types::private::Vec<u8>,
561            ) {
562                out.reserve(
563                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
564                );
565                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
566                    &rust.staker,
567                    out,
568                );
569                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
570                    &rust.delegatedTo,
571                    out,
572                );
573                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
574                    &rust.withdrawer,
575                    out,
576                );
577                <alloy::sol_types::sol_data::Uint<
578                    256,
579                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
580                    &rust.nonce,
581                    out,
582                );
583                <alloy::sol_types::sol_data::Uint<
584                    32,
585                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
586                    &rust.startBlock,
587                    out,
588                );
589                <alloy::sol_types::sol_data::Array<
590                    alloy::sol_types::sol_data::Address,
591                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
592                    &rust.strategies,
593                    out,
594                );
595                <alloy::sol_types::sol_data::Array<
596                    alloy::sol_types::sol_data::Uint<256>,
597                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
598                    &rust.scaledShares,
599                    out,
600                );
601            }
602            #[inline]
603            fn encode_topic(
604                rust: &Self::RustType,
605            ) -> alloy_sol_types::abi::token::WordToken {
606                let mut out = alloy_sol_types::private::Vec::new();
607                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
608                    rust,
609                    &mut out,
610                );
611                alloy_sol_types::abi::token::WordToken(
612                    alloy_sol_types::private::keccak256(out),
613                )
614            }
615        }
616    };
617    use alloy::contract as alloy_contract;
618    /**Creates a new wrapper around an on-chain [`IDelegationManagerTypes`](self) contract instance.
619
620See the [wrapper's documentation](`IDelegationManagerTypesInstance`) for more details.*/
621    #[inline]
622    pub const fn new<
623        T: alloy_contract::private::Transport + ::core::clone::Clone,
624        P: alloy_contract::private::Provider<T, N>,
625        N: alloy_contract::private::Network,
626    >(
627        address: alloy_sol_types::private::Address,
628        provider: P,
629    ) -> IDelegationManagerTypesInstance<T, P, N> {
630        IDelegationManagerTypesInstance::<T, P, N>::new(address, provider)
631    }
632    /**A [`IDelegationManagerTypes`](self) instance.
633
634Contains type-safe methods for interacting with an on-chain instance of the
635[`IDelegationManagerTypes`](self) contract located at a given `address`, using a given
636provider `P`.
637
638If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
639documentation on how to provide it), the `deploy` and `deploy_builder` methods can
640be used to deploy a new instance of the contract.
641
642See the [module-level documentation](self) for all the available methods.*/
643    #[derive(Clone)]
644    pub struct IDelegationManagerTypesInstance<
645        T,
646        P,
647        N = alloy_contract::private::Ethereum,
648    > {
649        address: alloy_sol_types::private::Address,
650        provider: P,
651        _network_transport: ::core::marker::PhantomData<(N, T)>,
652    }
653    #[automatically_derived]
654    impl<T, P, N> ::core::fmt::Debug for IDelegationManagerTypesInstance<T, 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        T: alloy_contract::private::Transport + ::core::clone::Clone,
666        P: alloy_contract::private::Provider<T, N>,
667        N: alloy_contract::private::Network,
668    > IDelegationManagerTypesInstance<T, P, N> {
669        /**Creates a new wrapper around an on-chain [`IDelegationManagerTypes`](self) contract instance.
670
671See the [wrapper's documentation](`IDelegationManagerTypesInstance`) for more details.*/
672        #[inline]
673        pub const fn new(
674            address: alloy_sol_types::private::Address,
675            provider: P,
676        ) -> Self {
677            Self {
678                address,
679                provider,
680                _network_transport: ::core::marker::PhantomData,
681            }
682        }
683        /// Returns a reference to the address.
684        #[inline]
685        pub const fn address(&self) -> &alloy_sol_types::private::Address {
686            &self.address
687        }
688        /// Sets the address.
689        #[inline]
690        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
691            self.address = address;
692        }
693        /// Sets the address and returns `self`.
694        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
695            self.set_address(address);
696            self
697        }
698        /// Returns a reference to the provider.
699        #[inline]
700        pub const fn provider(&self) -> &P {
701            &self.provider
702        }
703    }
704    impl<T, P: ::core::clone::Clone, N> IDelegationManagerTypesInstance<T, &P, N> {
705        /// Clones the provider and returns a new instance with the cloned provider.
706        #[inline]
707        pub fn with_cloned_provider(self) -> IDelegationManagerTypesInstance<T, P, N> {
708            IDelegationManagerTypesInstance {
709                address: self.address,
710                provider: ::core::clone::Clone::clone(&self.provider),
711                _network_transport: ::core::marker::PhantomData,
712            }
713        }
714    }
715    /// Function calls.
716    #[automatically_derived]
717    impl<
718        T: alloy_contract::private::Transport + ::core::clone::Clone,
719        P: alloy_contract::private::Provider<T, N>,
720        N: alloy_contract::private::Network,
721    > IDelegationManagerTypesInstance<T, P, N> {
722        /// Creates a new call builder using this contract instance's provider and address.
723        ///
724        /// Note that the call can be any function call, not just those defined in this
725        /// contract. Prefer using the other methods for building type-safe contract calls.
726        pub fn call_builder<C: alloy_sol_types::SolCall>(
727            &self,
728            call: &C,
729        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
730            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
731        }
732    }
733    /// Event filters.
734    #[automatically_derived]
735    impl<
736        T: alloy_contract::private::Transport + ::core::clone::Clone,
737        P: alloy_contract::private::Provider<T, N>,
738        N: alloy_contract::private::Network,
739    > IDelegationManagerTypesInstance<T, P, N> {
740        /// Creates a new event filter using this contract instance's provider and address.
741        ///
742        /// Note that the type can be any event, not just those defined in this contract.
743        /// Prefer using the other methods for building type-safe event filters.
744        pub fn event_filter<E: alloy_sol_types::SolEvent>(
745            &self,
746        ) -> alloy_contract::Event<T, &P, E, N> {
747            alloy_contract::Event::new_sol(&self.provider, &self.address)
748        }
749    }
750}
751///Module containing a contract's types and functions.
752/**
753
754```solidity
755library ISignatureUtilsMixinTypes {
756    struct SignatureWithExpiry { bytes signature; uint256 expiry; }
757}
758```*/
759#[allow(
760    non_camel_case_types,
761    non_snake_case,
762    clippy::pub_underscore_fields,
763    clippy::style,
764    clippy::empty_structs_with_brackets
765)]
766pub mod ISignatureUtilsMixinTypes {
767    use super::*;
768    use alloy::sol_types as alloy_sol_types;
769    #[derive(Default, Debug, PartialEq, Eq, Hash)]
770    /**```solidity
771struct SignatureWithExpiry { bytes signature; uint256 expiry; }
772```*/
773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
774    #[derive(Clone)]
775    pub struct SignatureWithExpiry {
776        #[allow(missing_docs)]
777        pub signature: alloy::sol_types::private::Bytes,
778        #[allow(missing_docs)]
779        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
780    }
781    #[allow(
782        non_camel_case_types,
783        non_snake_case,
784        clippy::pub_underscore_fields,
785        clippy::style
786    )]
787    const _: () = {
788        use alloy::sol_types as alloy_sol_types;
789        #[doc(hidden)]
790        type UnderlyingSolTuple<'a> = (
791            alloy::sol_types::sol_data::Bytes,
792            alloy::sol_types::sol_data::Uint<256>,
793        );
794        #[doc(hidden)]
795        type UnderlyingRustTuple<'a> = (
796            alloy::sol_types::private::Bytes,
797            alloy::sol_types::private::primitives::aliases::U256,
798        );
799        #[cfg(test)]
800        #[allow(dead_code, unreachable_patterns)]
801        fn _type_assertion(
802            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
803        ) {
804            match _t {
805                alloy_sol_types::private::AssertTypeEq::<
806                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
807                >(_) => {}
808            }
809        }
810        #[automatically_derived]
811        #[doc(hidden)]
812        impl ::core::convert::From<SignatureWithExpiry> for UnderlyingRustTuple<'_> {
813            fn from(value: SignatureWithExpiry) -> Self {
814                (value.signature, value.expiry)
815            }
816        }
817        #[automatically_derived]
818        #[doc(hidden)]
819        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SignatureWithExpiry {
820            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
821                Self {
822                    signature: tuple.0,
823                    expiry: tuple.1,
824                }
825            }
826        }
827        #[automatically_derived]
828        impl alloy_sol_types::SolValue for SignatureWithExpiry {
829            type SolType = Self;
830        }
831        #[automatically_derived]
832        impl alloy_sol_types::private::SolTypeValue<Self> for SignatureWithExpiry {
833            #[inline]
834            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
835                (
836                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
837                        &self.signature,
838                    ),
839                    <alloy::sol_types::sol_data::Uint<
840                        256,
841                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
842                )
843            }
844            #[inline]
845            fn stv_abi_encoded_size(&self) -> usize {
846                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
847                    return size;
848                }
849                let tuple = <UnderlyingRustTuple<
850                    '_,
851                > as ::core::convert::From<Self>>::from(self.clone());
852                <UnderlyingSolTuple<
853                    '_,
854                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
855            }
856            #[inline]
857            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
858                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
859            }
860            #[inline]
861            fn stv_abi_encode_packed_to(
862                &self,
863                out: &mut alloy_sol_types::private::Vec<u8>,
864            ) {
865                let tuple = <UnderlyingRustTuple<
866                    '_,
867                > as ::core::convert::From<Self>>::from(self.clone());
868                <UnderlyingSolTuple<
869                    '_,
870                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
871            }
872            #[inline]
873            fn stv_abi_packed_encoded_size(&self) -> usize {
874                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
875                    return size;
876                }
877                let tuple = <UnderlyingRustTuple<
878                    '_,
879                > as ::core::convert::From<Self>>::from(self.clone());
880                <UnderlyingSolTuple<
881                    '_,
882                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
883            }
884        }
885        #[automatically_derived]
886        impl alloy_sol_types::SolType for SignatureWithExpiry {
887            type RustType = Self;
888            type Token<'a> = <UnderlyingSolTuple<
889                'a,
890            > as alloy_sol_types::SolType>::Token<'a>;
891            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
892            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
893                '_,
894            > as alloy_sol_types::SolType>::ENCODED_SIZE;
895            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
896                '_,
897            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
898            #[inline]
899            fn valid_token(token: &Self::Token<'_>) -> bool {
900                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
901            }
902            #[inline]
903            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
904                let tuple = <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::detokenize(token);
907                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
908            }
909        }
910        #[automatically_derived]
911        impl alloy_sol_types::SolStruct for SignatureWithExpiry {
912            const NAME: &'static str = "SignatureWithExpiry";
913            #[inline]
914            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
915                alloy_sol_types::private::Cow::Borrowed(
916                    "SignatureWithExpiry(bytes signature,uint256 expiry)",
917                )
918            }
919            #[inline]
920            fn eip712_components() -> alloy_sol_types::private::Vec<
921                alloy_sol_types::private::Cow<'static, str>,
922            > {
923                alloy_sol_types::private::Vec::new()
924            }
925            #[inline]
926            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
927                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
928            }
929            #[inline]
930            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
931                [
932                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
933                            &self.signature,
934                        )
935                        .0,
936                    <alloy::sol_types::sol_data::Uint<
937                        256,
938                    > as alloy_sol_types::SolType>::eip712_data_word(&self.expiry)
939                        .0,
940                ]
941                    .concat()
942            }
943        }
944        #[automatically_derived]
945        impl alloy_sol_types::EventTopic for SignatureWithExpiry {
946            #[inline]
947            fn topic_preimage_length(rust: &Self::RustType) -> usize {
948                0usize
949                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
950                        &rust.signature,
951                    )
952                    + <alloy::sol_types::sol_data::Uint<
953                        256,
954                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
955                        &rust.expiry,
956                    )
957            }
958            #[inline]
959            fn encode_topic_preimage(
960                rust: &Self::RustType,
961                out: &mut alloy_sol_types::private::Vec<u8>,
962            ) {
963                out.reserve(
964                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
965                );
966                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
967                    &rust.signature,
968                    out,
969                );
970                <alloy::sol_types::sol_data::Uint<
971                    256,
972                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
973                    &rust.expiry,
974                    out,
975                );
976            }
977            #[inline]
978            fn encode_topic(
979                rust: &Self::RustType,
980            ) -> alloy_sol_types::abi::token::WordToken {
981                let mut out = alloy_sol_types::private::Vec::new();
982                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
983                    rust,
984                    &mut out,
985                );
986                alloy_sol_types::abi::token::WordToken(
987                    alloy_sol_types::private::keccak256(out),
988                )
989            }
990        }
991    };
992    use alloy::contract as alloy_contract;
993    /**Creates a new wrapper around an on-chain [`ISignatureUtilsMixinTypes`](self) contract instance.
994
995See the [wrapper's documentation](`ISignatureUtilsMixinTypesInstance`) for more details.*/
996    #[inline]
997    pub const fn new<
998        T: alloy_contract::private::Transport + ::core::clone::Clone,
999        P: alloy_contract::private::Provider<T, N>,
1000        N: alloy_contract::private::Network,
1001    >(
1002        address: alloy_sol_types::private::Address,
1003        provider: P,
1004    ) -> ISignatureUtilsMixinTypesInstance<T, P, N> {
1005        ISignatureUtilsMixinTypesInstance::<T, P, N>::new(address, provider)
1006    }
1007    /**A [`ISignatureUtilsMixinTypes`](self) instance.
1008
1009Contains type-safe methods for interacting with an on-chain instance of the
1010[`ISignatureUtilsMixinTypes`](self) contract located at a given `address`, using a given
1011provider `P`.
1012
1013If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1014documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1015be used to deploy a new instance of the contract.
1016
1017See the [module-level documentation](self) for all the available methods.*/
1018    #[derive(Clone)]
1019    pub struct ISignatureUtilsMixinTypesInstance<
1020        T,
1021        P,
1022        N = alloy_contract::private::Ethereum,
1023    > {
1024        address: alloy_sol_types::private::Address,
1025        provider: P,
1026        _network_transport: ::core::marker::PhantomData<(N, T)>,
1027    }
1028    #[automatically_derived]
1029    impl<T, P, N> ::core::fmt::Debug for ISignatureUtilsMixinTypesInstance<T, P, N> {
1030        #[inline]
1031        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1032            f.debug_tuple("ISignatureUtilsMixinTypesInstance")
1033                .field(&self.address)
1034                .finish()
1035        }
1036    }
1037    /// Instantiation and getters/setters.
1038    #[automatically_derived]
1039    impl<
1040        T: alloy_contract::private::Transport + ::core::clone::Clone,
1041        P: alloy_contract::private::Provider<T, N>,
1042        N: alloy_contract::private::Network,
1043    > ISignatureUtilsMixinTypesInstance<T, P, N> {
1044        /**Creates a new wrapper around an on-chain [`ISignatureUtilsMixinTypes`](self) contract instance.
1045
1046See the [wrapper's documentation](`ISignatureUtilsMixinTypesInstance`) for more details.*/
1047        #[inline]
1048        pub const fn new(
1049            address: alloy_sol_types::private::Address,
1050            provider: P,
1051        ) -> Self {
1052            Self {
1053                address,
1054                provider,
1055                _network_transport: ::core::marker::PhantomData,
1056            }
1057        }
1058        /// Returns a reference to the address.
1059        #[inline]
1060        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1061            &self.address
1062        }
1063        /// Sets the address.
1064        #[inline]
1065        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1066            self.address = address;
1067        }
1068        /// Sets the address and returns `self`.
1069        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1070            self.set_address(address);
1071            self
1072        }
1073        /// Returns a reference to the provider.
1074        #[inline]
1075        pub const fn provider(&self) -> &P {
1076            &self.provider
1077        }
1078    }
1079    impl<T, P: ::core::clone::Clone, N> ISignatureUtilsMixinTypesInstance<T, &P, N> {
1080        /// Clones the provider and returns a new instance with the cloned provider.
1081        #[inline]
1082        pub fn with_cloned_provider(self) -> ISignatureUtilsMixinTypesInstance<T, P, N> {
1083            ISignatureUtilsMixinTypesInstance {
1084                address: self.address,
1085                provider: ::core::clone::Clone::clone(&self.provider),
1086                _network_transport: ::core::marker::PhantomData,
1087            }
1088        }
1089    }
1090    /// Function calls.
1091    #[automatically_derived]
1092    impl<
1093        T: alloy_contract::private::Transport + ::core::clone::Clone,
1094        P: alloy_contract::private::Provider<T, N>,
1095        N: alloy_contract::private::Network,
1096    > ISignatureUtilsMixinTypesInstance<T, P, N> {
1097        /// Creates a new call builder using this contract instance's provider and address.
1098        ///
1099        /// Note that the call can be any function call, not just those defined in this
1100        /// contract. Prefer using the other methods for building type-safe contract calls.
1101        pub fn call_builder<C: alloy_sol_types::SolCall>(
1102            &self,
1103            call: &C,
1104        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1105            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1106        }
1107    }
1108    /// Event filters.
1109    #[automatically_derived]
1110    impl<
1111        T: alloy_contract::private::Transport + ::core::clone::Clone,
1112        P: alloy_contract::private::Provider<T, N>,
1113        N: alloy_contract::private::Network,
1114    > ISignatureUtilsMixinTypesInstance<T, P, N> {
1115        /// Creates a new event filter using this contract instance's provider and address.
1116        ///
1117        /// Note that the type can be any event, not just those defined in this contract.
1118        /// Prefer using the other methods for building type-safe event filters.
1119        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1120            &self,
1121        ) -> alloy_contract::Event<T, &P, E, N> {
1122            alloy_contract::Event::new_sol(&self.provider, &self.address)
1123        }
1124    }
1125}
1126/**
1127
1128Generated by the following Solidity interface...
1129```solidity
1130library IDelegationManagerTypes {
1131    struct QueuedWithdrawalParams {
1132        address[] strategies;
1133        uint256[] depositShares;
1134        address __deprecated_withdrawer;
1135    }
1136    struct Withdrawal {
1137        address staker;
1138        address delegatedTo;
1139        address withdrawer;
1140        uint256 nonce;
1141        uint32 startBlock;
1142        address[] strategies;
1143        uint256[] scaledShares;
1144    }
1145}
1146
1147library ISignatureUtilsMixinTypes {
1148    struct SignatureWithExpiry {
1149        bytes signature;
1150        uint256 expiry;
1151    }
1152}
1153
1154interface DelegationManager {
1155    error ActivelyDelegated();
1156    error CallerCannotUndelegate();
1157    error CurrentlyPaused();
1158    error FullySlashed();
1159    error InputAddressZero();
1160    error InputArrayLengthMismatch();
1161    error InputArrayLengthZero();
1162    error InvalidNewPausedStatus();
1163    error InvalidPermissions();
1164    error InvalidShortString();
1165    error InvalidSignature();
1166    error InvalidSnapshotOrdering();
1167    error NotActivelyDelegated();
1168    error OnlyAllocationManager();
1169    error OnlyEigenPodManager();
1170    error OnlyPauser();
1171    error OnlyStrategyManagerOrEigenPodManager();
1172    error OnlyUnpauser();
1173    error OperatorNotRegistered();
1174    error OperatorsCannotUndelegate();
1175    error SaltSpent();
1176    error SignatureExpired();
1177    error StringTooLong(string str);
1178    error WithdrawalDelayNotElapsed();
1179    error WithdrawalNotQueued();
1180    error WithdrawerNotCaller();
1181
1182    event DelegationApproverUpdated(address indexed operator, address newDelegationApprover);
1183    event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor);
1184    event Initialized(uint8 version);
1185    event OperatorMetadataURIUpdated(address indexed operator, string metadataURI);
1186    event OperatorRegistered(address indexed operator, address delegationApprover);
1187    event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares);
1188    event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares);
1189    event OperatorSharesSlashed(address indexed operator, address strategy, uint256 totalSlashedShares);
1190    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1191    event Paused(address indexed account, uint256 newPausedStatus);
1192    event SlashingWithdrawalCompleted(bytes32 withdrawalRoot);
1193    event SlashingWithdrawalQueued(bytes32 withdrawalRoot, IDelegationManagerTypes.Withdrawal withdrawal, uint256[] sharesToWithdraw);
1194    event StakerDelegated(address indexed staker, address indexed operator);
1195    event StakerForceUndelegated(address indexed staker, address indexed operator);
1196    event StakerUndelegated(address indexed staker, address indexed operator);
1197    event Unpaused(address indexed account, uint256 newPausedStatus);
1198
1199    constructor(address _strategyManager, address _eigenPodManager, address _allocationManager, address _pauserRegistry, address _permissionController, uint32 _MIN_WITHDRAWAL_DELAY, string _version);
1200
1201    function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32);
1202    function allocationManager() external view returns (address);
1203    function beaconChainETHStrategy() external view returns (address);
1204    function calculateDelegationApprovalDigestHash(address staker, address operator, address approver, bytes32 approverSalt, uint256 expiry) external view returns (bytes32);
1205    function calculateWithdrawalRoot(IDelegationManagerTypes.Withdrawal memory withdrawal) external pure returns (bytes32);
1206    function completeQueuedWithdrawal(IDelegationManagerTypes.Withdrawal memory withdrawal, address[] memory tokens, bool receiveAsTokens) external;
1207    function completeQueuedWithdrawals(IDelegationManagerTypes.Withdrawal[] memory withdrawals, address[][] memory tokens, bool[] memory receiveAsTokens) external;
1208    function convertToDepositShares(address staker, address[] memory strategies, uint256[] memory withdrawableShares) external view returns (uint256[] memory);
1209    function cumulativeWithdrawalsQueued(address staker) external view returns (uint256 totalQueued);
1210    function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) external;
1211    function delegateTo(address operator, ISignatureUtilsMixinTypes.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external;
1212    function delegatedTo(address staker) external view returns (address operator);
1213    function delegationApprover(address operator) external view returns (address);
1214    function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) external view returns (bool spent);
1215    function depositScalingFactor(address staker, address strategy) external view returns (uint256);
1216    function domainSeparator() external view returns (bytes32);
1217    function eigenPodManager() external view returns (address);
1218    function getDepositedShares(address staker) external view returns (address[] memory, uint256[] memory);
1219    function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory);
1220    function getOperatorsShares(address[] memory operators, address[] memory strategies) external view returns (uint256[][] memory);
1221    function getQueuedWithdrawal(bytes32 withdrawalRoot) external view returns (IDelegationManagerTypes.Withdrawal memory withdrawal, uint256[] memory shares);
1222    function getQueuedWithdrawalRoots(address staker) external view returns (bytes32[] memory);
1223    function getQueuedWithdrawals(address staker) external view returns (IDelegationManagerTypes.Withdrawal[] memory withdrawals, uint256[][] memory shares);
1224    function getSlashableSharesInQueue(address operator, address strategy) external view returns (uint256);
1225    function getWithdrawableShares(address staker, address[] memory strategies) external view returns (uint256[] memory withdrawableShares, uint256[] memory depositShares);
1226    function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) external;
1227    function initialize(address initialOwner, uint256 initialPausedStatus) external;
1228    function isDelegated(address staker) external view returns (bool);
1229    function isOperator(address operator) external view returns (bool);
1230    function minWithdrawalDelayBlocks() external view returns (uint32);
1231    function modifyOperatorDetails(address operator, address newDelegationApprover) external;
1232    function operatorShares(address operator, address strategy) external view returns (uint256 shares);
1233    function owner() external view returns (address);
1234    function pause(uint256 newPausedStatus) external;
1235    function pauseAll() external;
1236    function paused(uint8 index) external view returns (bool);
1237    function paused() external view returns (uint256);
1238    function pauserRegistry() external view returns (address);
1239    function pendingWithdrawals(bytes32 withdrawalRoot) external view returns (bool pending);
1240    function permissionController() external view returns (address);
1241    function queueWithdrawals(IDelegationManagerTypes.QueuedWithdrawalParams[] memory params) external returns (bytes32[] memory);
1242    function queuedWithdrawals(bytes32 withdrawalRoot) external view returns (IDelegationManagerTypes.Withdrawal memory withdrawal);
1243    function redelegate(address newOperator, ISignatureUtilsMixinTypes.SignatureWithExpiry memory newOperatorApproverSig, bytes32 approverSalt) external returns (bytes32[] memory withdrawalRoots);
1244    function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string memory metadataURI) external;
1245    function renounceOwnership() external;
1246    function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) external;
1247    function strategyManager() external view returns (address);
1248    function transferOwnership(address newOwner) external;
1249    function undelegate(address staker) external returns (bytes32[] memory withdrawalRoots);
1250    function unpause(uint256 newPausedStatus) external;
1251    function updateOperatorMetadataURI(address operator, string memory metadataURI) external;
1252    function version() external view returns (string memory);
1253}
1254```
1255
1256...which was generated by the following JSON ABI:
1257```json
1258[
1259  {
1260    "type": "constructor",
1261    "inputs": [
1262      {
1263        "name": "_strategyManager",
1264        "type": "address",
1265        "internalType": "contract IStrategyManager"
1266      },
1267      {
1268        "name": "_eigenPodManager",
1269        "type": "address",
1270        "internalType": "contract IEigenPodManager"
1271      },
1272      {
1273        "name": "_allocationManager",
1274        "type": "address",
1275        "internalType": "contract IAllocationManager"
1276      },
1277      {
1278        "name": "_pauserRegistry",
1279        "type": "address",
1280        "internalType": "contract IPauserRegistry"
1281      },
1282      {
1283        "name": "_permissionController",
1284        "type": "address",
1285        "internalType": "contract IPermissionController"
1286      },
1287      {
1288        "name": "_MIN_WITHDRAWAL_DELAY",
1289        "type": "uint32",
1290        "internalType": "uint32"
1291      },
1292      {
1293        "name": "_version",
1294        "type": "string",
1295        "internalType": "string"
1296      }
1297    ],
1298    "stateMutability": "nonpayable"
1299  },
1300  {
1301    "type": "function",
1302    "name": "DELEGATION_APPROVAL_TYPEHASH",
1303    "inputs": [],
1304    "outputs": [
1305      {
1306        "name": "",
1307        "type": "bytes32",
1308        "internalType": "bytes32"
1309      }
1310    ],
1311    "stateMutability": "view"
1312  },
1313  {
1314    "type": "function",
1315    "name": "allocationManager",
1316    "inputs": [],
1317    "outputs": [
1318      {
1319        "name": "",
1320        "type": "address",
1321        "internalType": "contract IAllocationManager"
1322      }
1323    ],
1324    "stateMutability": "view"
1325  },
1326  {
1327    "type": "function",
1328    "name": "beaconChainETHStrategy",
1329    "inputs": [],
1330    "outputs": [
1331      {
1332        "name": "",
1333        "type": "address",
1334        "internalType": "contract IStrategy"
1335      }
1336    ],
1337    "stateMutability": "view"
1338  },
1339  {
1340    "type": "function",
1341    "name": "calculateDelegationApprovalDigestHash",
1342    "inputs": [
1343      {
1344        "name": "staker",
1345        "type": "address",
1346        "internalType": "address"
1347      },
1348      {
1349        "name": "operator",
1350        "type": "address",
1351        "internalType": "address"
1352      },
1353      {
1354        "name": "approver",
1355        "type": "address",
1356        "internalType": "address"
1357      },
1358      {
1359        "name": "approverSalt",
1360        "type": "bytes32",
1361        "internalType": "bytes32"
1362      },
1363      {
1364        "name": "expiry",
1365        "type": "uint256",
1366        "internalType": "uint256"
1367      }
1368    ],
1369    "outputs": [
1370      {
1371        "name": "",
1372        "type": "bytes32",
1373        "internalType": "bytes32"
1374      }
1375    ],
1376    "stateMutability": "view"
1377  },
1378  {
1379    "type": "function",
1380    "name": "calculateWithdrawalRoot",
1381    "inputs": [
1382      {
1383        "name": "withdrawal",
1384        "type": "tuple",
1385        "internalType": "struct IDelegationManagerTypes.Withdrawal",
1386        "components": [
1387          {
1388            "name": "staker",
1389            "type": "address",
1390            "internalType": "address"
1391          },
1392          {
1393            "name": "delegatedTo",
1394            "type": "address",
1395            "internalType": "address"
1396          },
1397          {
1398            "name": "withdrawer",
1399            "type": "address",
1400            "internalType": "address"
1401          },
1402          {
1403            "name": "nonce",
1404            "type": "uint256",
1405            "internalType": "uint256"
1406          },
1407          {
1408            "name": "startBlock",
1409            "type": "uint32",
1410            "internalType": "uint32"
1411          },
1412          {
1413            "name": "strategies",
1414            "type": "address[]",
1415            "internalType": "contract IStrategy[]"
1416          },
1417          {
1418            "name": "scaledShares",
1419            "type": "uint256[]",
1420            "internalType": "uint256[]"
1421          }
1422        ]
1423      }
1424    ],
1425    "outputs": [
1426      {
1427        "name": "",
1428        "type": "bytes32",
1429        "internalType": "bytes32"
1430      }
1431    ],
1432    "stateMutability": "pure"
1433  },
1434  {
1435    "type": "function",
1436    "name": "completeQueuedWithdrawal",
1437    "inputs": [
1438      {
1439        "name": "withdrawal",
1440        "type": "tuple",
1441        "internalType": "struct IDelegationManagerTypes.Withdrawal",
1442        "components": [
1443          {
1444            "name": "staker",
1445            "type": "address",
1446            "internalType": "address"
1447          },
1448          {
1449            "name": "delegatedTo",
1450            "type": "address",
1451            "internalType": "address"
1452          },
1453          {
1454            "name": "withdrawer",
1455            "type": "address",
1456            "internalType": "address"
1457          },
1458          {
1459            "name": "nonce",
1460            "type": "uint256",
1461            "internalType": "uint256"
1462          },
1463          {
1464            "name": "startBlock",
1465            "type": "uint32",
1466            "internalType": "uint32"
1467          },
1468          {
1469            "name": "strategies",
1470            "type": "address[]",
1471            "internalType": "contract IStrategy[]"
1472          },
1473          {
1474            "name": "scaledShares",
1475            "type": "uint256[]",
1476            "internalType": "uint256[]"
1477          }
1478        ]
1479      },
1480      {
1481        "name": "tokens",
1482        "type": "address[]",
1483        "internalType": "contract IERC20[]"
1484      },
1485      {
1486        "name": "receiveAsTokens",
1487        "type": "bool",
1488        "internalType": "bool"
1489      }
1490    ],
1491    "outputs": [],
1492    "stateMutability": "nonpayable"
1493  },
1494  {
1495    "type": "function",
1496    "name": "completeQueuedWithdrawals",
1497    "inputs": [
1498      {
1499        "name": "withdrawals",
1500        "type": "tuple[]",
1501        "internalType": "struct IDelegationManagerTypes.Withdrawal[]",
1502        "components": [
1503          {
1504            "name": "staker",
1505            "type": "address",
1506            "internalType": "address"
1507          },
1508          {
1509            "name": "delegatedTo",
1510            "type": "address",
1511            "internalType": "address"
1512          },
1513          {
1514            "name": "withdrawer",
1515            "type": "address",
1516            "internalType": "address"
1517          },
1518          {
1519            "name": "nonce",
1520            "type": "uint256",
1521            "internalType": "uint256"
1522          },
1523          {
1524            "name": "startBlock",
1525            "type": "uint32",
1526            "internalType": "uint32"
1527          },
1528          {
1529            "name": "strategies",
1530            "type": "address[]",
1531            "internalType": "contract IStrategy[]"
1532          },
1533          {
1534            "name": "scaledShares",
1535            "type": "uint256[]",
1536            "internalType": "uint256[]"
1537          }
1538        ]
1539      },
1540      {
1541        "name": "tokens",
1542        "type": "address[][]",
1543        "internalType": "contract IERC20[][]"
1544      },
1545      {
1546        "name": "receiveAsTokens",
1547        "type": "bool[]",
1548        "internalType": "bool[]"
1549      }
1550    ],
1551    "outputs": [],
1552    "stateMutability": "nonpayable"
1553  },
1554  {
1555    "type": "function",
1556    "name": "convertToDepositShares",
1557    "inputs": [
1558      {
1559        "name": "staker",
1560        "type": "address",
1561        "internalType": "address"
1562      },
1563      {
1564        "name": "strategies",
1565        "type": "address[]",
1566        "internalType": "contract IStrategy[]"
1567      },
1568      {
1569        "name": "withdrawableShares",
1570        "type": "uint256[]",
1571        "internalType": "uint256[]"
1572      }
1573    ],
1574    "outputs": [
1575      {
1576        "name": "",
1577        "type": "uint256[]",
1578        "internalType": "uint256[]"
1579      }
1580    ],
1581    "stateMutability": "view"
1582  },
1583  {
1584    "type": "function",
1585    "name": "cumulativeWithdrawalsQueued",
1586    "inputs": [
1587      {
1588        "name": "staker",
1589        "type": "address",
1590        "internalType": "address"
1591      }
1592    ],
1593    "outputs": [
1594      {
1595        "name": "totalQueued",
1596        "type": "uint256",
1597        "internalType": "uint256"
1598      }
1599    ],
1600    "stateMutability": "view"
1601  },
1602  {
1603    "type": "function",
1604    "name": "decreaseDelegatedShares",
1605    "inputs": [
1606      {
1607        "name": "staker",
1608        "type": "address",
1609        "internalType": "address"
1610      },
1611      {
1612        "name": "curDepositShares",
1613        "type": "uint256",
1614        "internalType": "uint256"
1615      },
1616      {
1617        "name": "beaconChainSlashingFactorDecrease",
1618        "type": "uint64",
1619        "internalType": "uint64"
1620      }
1621    ],
1622    "outputs": [],
1623    "stateMutability": "nonpayable"
1624  },
1625  {
1626    "type": "function",
1627    "name": "delegateTo",
1628    "inputs": [
1629      {
1630        "name": "operator",
1631        "type": "address",
1632        "internalType": "address"
1633      },
1634      {
1635        "name": "approverSignatureAndExpiry",
1636        "type": "tuple",
1637        "internalType": "struct ISignatureUtilsMixinTypes.SignatureWithExpiry",
1638        "components": [
1639          {
1640            "name": "signature",
1641            "type": "bytes",
1642            "internalType": "bytes"
1643          },
1644          {
1645            "name": "expiry",
1646            "type": "uint256",
1647            "internalType": "uint256"
1648          }
1649        ]
1650      },
1651      {
1652        "name": "approverSalt",
1653        "type": "bytes32",
1654        "internalType": "bytes32"
1655      }
1656    ],
1657    "outputs": [],
1658    "stateMutability": "nonpayable"
1659  },
1660  {
1661    "type": "function",
1662    "name": "delegatedTo",
1663    "inputs": [
1664      {
1665        "name": "staker",
1666        "type": "address",
1667        "internalType": "address"
1668      }
1669    ],
1670    "outputs": [
1671      {
1672        "name": "operator",
1673        "type": "address",
1674        "internalType": "address"
1675      }
1676    ],
1677    "stateMutability": "view"
1678  },
1679  {
1680    "type": "function",
1681    "name": "delegationApprover",
1682    "inputs": [
1683      {
1684        "name": "operator",
1685        "type": "address",
1686        "internalType": "address"
1687      }
1688    ],
1689    "outputs": [
1690      {
1691        "name": "",
1692        "type": "address",
1693        "internalType": "address"
1694      }
1695    ],
1696    "stateMutability": "view"
1697  },
1698  {
1699    "type": "function",
1700    "name": "delegationApproverSaltIsSpent",
1701    "inputs": [
1702      {
1703        "name": "delegationApprover",
1704        "type": "address",
1705        "internalType": "address"
1706      },
1707      {
1708        "name": "salt",
1709        "type": "bytes32",
1710        "internalType": "bytes32"
1711      }
1712    ],
1713    "outputs": [
1714      {
1715        "name": "spent",
1716        "type": "bool",
1717        "internalType": "bool"
1718      }
1719    ],
1720    "stateMutability": "view"
1721  },
1722  {
1723    "type": "function",
1724    "name": "depositScalingFactor",
1725    "inputs": [
1726      {
1727        "name": "staker",
1728        "type": "address",
1729        "internalType": "address"
1730      },
1731      {
1732        "name": "strategy",
1733        "type": "address",
1734        "internalType": "contract IStrategy"
1735      }
1736    ],
1737    "outputs": [
1738      {
1739        "name": "",
1740        "type": "uint256",
1741        "internalType": "uint256"
1742      }
1743    ],
1744    "stateMutability": "view"
1745  },
1746  {
1747    "type": "function",
1748    "name": "domainSeparator",
1749    "inputs": [],
1750    "outputs": [
1751      {
1752        "name": "",
1753        "type": "bytes32",
1754        "internalType": "bytes32"
1755      }
1756    ],
1757    "stateMutability": "view"
1758  },
1759  {
1760    "type": "function",
1761    "name": "eigenPodManager",
1762    "inputs": [],
1763    "outputs": [
1764      {
1765        "name": "",
1766        "type": "address",
1767        "internalType": "contract IEigenPodManager"
1768      }
1769    ],
1770    "stateMutability": "view"
1771  },
1772  {
1773    "type": "function",
1774    "name": "getDepositedShares",
1775    "inputs": [
1776      {
1777        "name": "staker",
1778        "type": "address",
1779        "internalType": "address"
1780      }
1781    ],
1782    "outputs": [
1783      {
1784        "name": "",
1785        "type": "address[]",
1786        "internalType": "contract IStrategy[]"
1787      },
1788      {
1789        "name": "",
1790        "type": "uint256[]",
1791        "internalType": "uint256[]"
1792      }
1793    ],
1794    "stateMutability": "view"
1795  },
1796  {
1797    "type": "function",
1798    "name": "getOperatorShares",
1799    "inputs": [
1800      {
1801        "name": "operator",
1802        "type": "address",
1803        "internalType": "address"
1804      },
1805      {
1806        "name": "strategies",
1807        "type": "address[]",
1808        "internalType": "contract IStrategy[]"
1809      }
1810    ],
1811    "outputs": [
1812      {
1813        "name": "",
1814        "type": "uint256[]",
1815        "internalType": "uint256[]"
1816      }
1817    ],
1818    "stateMutability": "view"
1819  },
1820  {
1821    "type": "function",
1822    "name": "getOperatorsShares",
1823    "inputs": [
1824      {
1825        "name": "operators",
1826        "type": "address[]",
1827        "internalType": "address[]"
1828      },
1829      {
1830        "name": "strategies",
1831        "type": "address[]",
1832        "internalType": "contract IStrategy[]"
1833      }
1834    ],
1835    "outputs": [
1836      {
1837        "name": "",
1838        "type": "uint256[][]",
1839        "internalType": "uint256[][]"
1840      }
1841    ],
1842    "stateMutability": "view"
1843  },
1844  {
1845    "type": "function",
1846    "name": "getQueuedWithdrawal",
1847    "inputs": [
1848      {
1849        "name": "withdrawalRoot",
1850        "type": "bytes32",
1851        "internalType": "bytes32"
1852      }
1853    ],
1854    "outputs": [
1855      {
1856        "name": "withdrawal",
1857        "type": "tuple",
1858        "internalType": "struct IDelegationManagerTypes.Withdrawal",
1859        "components": [
1860          {
1861            "name": "staker",
1862            "type": "address",
1863            "internalType": "address"
1864          },
1865          {
1866            "name": "delegatedTo",
1867            "type": "address",
1868            "internalType": "address"
1869          },
1870          {
1871            "name": "withdrawer",
1872            "type": "address",
1873            "internalType": "address"
1874          },
1875          {
1876            "name": "nonce",
1877            "type": "uint256",
1878            "internalType": "uint256"
1879          },
1880          {
1881            "name": "startBlock",
1882            "type": "uint32",
1883            "internalType": "uint32"
1884          },
1885          {
1886            "name": "strategies",
1887            "type": "address[]",
1888            "internalType": "contract IStrategy[]"
1889          },
1890          {
1891            "name": "scaledShares",
1892            "type": "uint256[]",
1893            "internalType": "uint256[]"
1894          }
1895        ]
1896      },
1897      {
1898        "name": "shares",
1899        "type": "uint256[]",
1900        "internalType": "uint256[]"
1901      }
1902    ],
1903    "stateMutability": "view"
1904  },
1905  {
1906    "type": "function",
1907    "name": "getQueuedWithdrawalRoots",
1908    "inputs": [
1909      {
1910        "name": "staker",
1911        "type": "address",
1912        "internalType": "address"
1913      }
1914    ],
1915    "outputs": [
1916      {
1917        "name": "",
1918        "type": "bytes32[]",
1919        "internalType": "bytes32[]"
1920      }
1921    ],
1922    "stateMutability": "view"
1923  },
1924  {
1925    "type": "function",
1926    "name": "getQueuedWithdrawals",
1927    "inputs": [
1928      {
1929        "name": "staker",
1930        "type": "address",
1931        "internalType": "address"
1932      }
1933    ],
1934    "outputs": [
1935      {
1936        "name": "withdrawals",
1937        "type": "tuple[]",
1938        "internalType": "struct IDelegationManagerTypes.Withdrawal[]",
1939        "components": [
1940          {
1941            "name": "staker",
1942            "type": "address",
1943            "internalType": "address"
1944          },
1945          {
1946            "name": "delegatedTo",
1947            "type": "address",
1948            "internalType": "address"
1949          },
1950          {
1951            "name": "withdrawer",
1952            "type": "address",
1953            "internalType": "address"
1954          },
1955          {
1956            "name": "nonce",
1957            "type": "uint256",
1958            "internalType": "uint256"
1959          },
1960          {
1961            "name": "startBlock",
1962            "type": "uint32",
1963            "internalType": "uint32"
1964          },
1965          {
1966            "name": "strategies",
1967            "type": "address[]",
1968            "internalType": "contract IStrategy[]"
1969          },
1970          {
1971            "name": "scaledShares",
1972            "type": "uint256[]",
1973            "internalType": "uint256[]"
1974          }
1975        ]
1976      },
1977      {
1978        "name": "shares",
1979        "type": "uint256[][]",
1980        "internalType": "uint256[][]"
1981      }
1982    ],
1983    "stateMutability": "view"
1984  },
1985  {
1986    "type": "function",
1987    "name": "getSlashableSharesInQueue",
1988    "inputs": [
1989      {
1990        "name": "operator",
1991        "type": "address",
1992        "internalType": "address"
1993      },
1994      {
1995        "name": "strategy",
1996        "type": "address",
1997        "internalType": "contract IStrategy"
1998      }
1999    ],
2000    "outputs": [
2001      {
2002        "name": "",
2003        "type": "uint256",
2004        "internalType": "uint256"
2005      }
2006    ],
2007    "stateMutability": "view"
2008  },
2009  {
2010    "type": "function",
2011    "name": "getWithdrawableShares",
2012    "inputs": [
2013      {
2014        "name": "staker",
2015        "type": "address",
2016        "internalType": "address"
2017      },
2018      {
2019        "name": "strategies",
2020        "type": "address[]",
2021        "internalType": "contract IStrategy[]"
2022      }
2023    ],
2024    "outputs": [
2025      {
2026        "name": "withdrawableShares",
2027        "type": "uint256[]",
2028        "internalType": "uint256[]"
2029      },
2030      {
2031        "name": "depositShares",
2032        "type": "uint256[]",
2033        "internalType": "uint256[]"
2034      }
2035    ],
2036    "stateMutability": "view"
2037  },
2038  {
2039    "type": "function",
2040    "name": "increaseDelegatedShares",
2041    "inputs": [
2042      {
2043        "name": "staker",
2044        "type": "address",
2045        "internalType": "address"
2046      },
2047      {
2048        "name": "strategy",
2049        "type": "address",
2050        "internalType": "contract IStrategy"
2051      },
2052      {
2053        "name": "prevDepositShares",
2054        "type": "uint256",
2055        "internalType": "uint256"
2056      },
2057      {
2058        "name": "addedShares",
2059        "type": "uint256",
2060        "internalType": "uint256"
2061      }
2062    ],
2063    "outputs": [],
2064    "stateMutability": "nonpayable"
2065  },
2066  {
2067    "type": "function",
2068    "name": "initialize",
2069    "inputs": [
2070      {
2071        "name": "initialOwner",
2072        "type": "address",
2073        "internalType": "address"
2074      },
2075      {
2076        "name": "initialPausedStatus",
2077        "type": "uint256",
2078        "internalType": "uint256"
2079      }
2080    ],
2081    "outputs": [],
2082    "stateMutability": "nonpayable"
2083  },
2084  {
2085    "type": "function",
2086    "name": "isDelegated",
2087    "inputs": [
2088      {
2089        "name": "staker",
2090        "type": "address",
2091        "internalType": "address"
2092      }
2093    ],
2094    "outputs": [
2095      {
2096        "name": "",
2097        "type": "bool",
2098        "internalType": "bool"
2099      }
2100    ],
2101    "stateMutability": "view"
2102  },
2103  {
2104    "type": "function",
2105    "name": "isOperator",
2106    "inputs": [
2107      {
2108        "name": "operator",
2109        "type": "address",
2110        "internalType": "address"
2111      }
2112    ],
2113    "outputs": [
2114      {
2115        "name": "",
2116        "type": "bool",
2117        "internalType": "bool"
2118      }
2119    ],
2120    "stateMutability": "view"
2121  },
2122  {
2123    "type": "function",
2124    "name": "minWithdrawalDelayBlocks",
2125    "inputs": [],
2126    "outputs": [
2127      {
2128        "name": "",
2129        "type": "uint32",
2130        "internalType": "uint32"
2131      }
2132    ],
2133    "stateMutability": "view"
2134  },
2135  {
2136    "type": "function",
2137    "name": "modifyOperatorDetails",
2138    "inputs": [
2139      {
2140        "name": "operator",
2141        "type": "address",
2142        "internalType": "address"
2143      },
2144      {
2145        "name": "newDelegationApprover",
2146        "type": "address",
2147        "internalType": "address"
2148      }
2149    ],
2150    "outputs": [],
2151    "stateMutability": "nonpayable"
2152  },
2153  {
2154    "type": "function",
2155    "name": "operatorShares",
2156    "inputs": [
2157      {
2158        "name": "operator",
2159        "type": "address",
2160        "internalType": "address"
2161      },
2162      {
2163        "name": "strategy",
2164        "type": "address",
2165        "internalType": "contract IStrategy"
2166      }
2167    ],
2168    "outputs": [
2169      {
2170        "name": "shares",
2171        "type": "uint256",
2172        "internalType": "uint256"
2173      }
2174    ],
2175    "stateMutability": "view"
2176  },
2177  {
2178    "type": "function",
2179    "name": "owner",
2180    "inputs": [],
2181    "outputs": [
2182      {
2183        "name": "",
2184        "type": "address",
2185        "internalType": "address"
2186      }
2187    ],
2188    "stateMutability": "view"
2189  },
2190  {
2191    "type": "function",
2192    "name": "pause",
2193    "inputs": [
2194      {
2195        "name": "newPausedStatus",
2196        "type": "uint256",
2197        "internalType": "uint256"
2198      }
2199    ],
2200    "outputs": [],
2201    "stateMutability": "nonpayable"
2202  },
2203  {
2204    "type": "function",
2205    "name": "pauseAll",
2206    "inputs": [],
2207    "outputs": [],
2208    "stateMutability": "nonpayable"
2209  },
2210  {
2211    "type": "function",
2212    "name": "paused",
2213    "inputs": [
2214      {
2215        "name": "index",
2216        "type": "uint8",
2217        "internalType": "uint8"
2218      }
2219    ],
2220    "outputs": [
2221      {
2222        "name": "",
2223        "type": "bool",
2224        "internalType": "bool"
2225      }
2226    ],
2227    "stateMutability": "view"
2228  },
2229  {
2230    "type": "function",
2231    "name": "paused",
2232    "inputs": [],
2233    "outputs": [
2234      {
2235        "name": "",
2236        "type": "uint256",
2237        "internalType": "uint256"
2238      }
2239    ],
2240    "stateMutability": "view"
2241  },
2242  {
2243    "type": "function",
2244    "name": "pauserRegistry",
2245    "inputs": [],
2246    "outputs": [
2247      {
2248        "name": "",
2249        "type": "address",
2250        "internalType": "contract IPauserRegistry"
2251      }
2252    ],
2253    "stateMutability": "view"
2254  },
2255  {
2256    "type": "function",
2257    "name": "pendingWithdrawals",
2258    "inputs": [
2259      {
2260        "name": "withdrawalRoot",
2261        "type": "bytes32",
2262        "internalType": "bytes32"
2263      }
2264    ],
2265    "outputs": [
2266      {
2267        "name": "pending",
2268        "type": "bool",
2269        "internalType": "bool"
2270      }
2271    ],
2272    "stateMutability": "view"
2273  },
2274  {
2275    "type": "function",
2276    "name": "permissionController",
2277    "inputs": [],
2278    "outputs": [
2279      {
2280        "name": "",
2281        "type": "address",
2282        "internalType": "contract IPermissionController"
2283      }
2284    ],
2285    "stateMutability": "view"
2286  },
2287  {
2288    "type": "function",
2289    "name": "queueWithdrawals",
2290    "inputs": [
2291      {
2292        "name": "params",
2293        "type": "tuple[]",
2294        "internalType": "struct IDelegationManagerTypes.QueuedWithdrawalParams[]",
2295        "components": [
2296          {
2297            "name": "strategies",
2298            "type": "address[]",
2299            "internalType": "contract IStrategy[]"
2300          },
2301          {
2302            "name": "depositShares",
2303            "type": "uint256[]",
2304            "internalType": "uint256[]"
2305          },
2306          {
2307            "name": "__deprecated_withdrawer",
2308            "type": "address",
2309            "internalType": "address"
2310          }
2311        ]
2312      }
2313    ],
2314    "outputs": [
2315      {
2316        "name": "",
2317        "type": "bytes32[]",
2318        "internalType": "bytes32[]"
2319      }
2320    ],
2321    "stateMutability": "nonpayable"
2322  },
2323  {
2324    "type": "function",
2325    "name": "queuedWithdrawals",
2326    "inputs": [
2327      {
2328        "name": "withdrawalRoot",
2329        "type": "bytes32",
2330        "internalType": "bytes32"
2331      }
2332    ],
2333    "outputs": [
2334      {
2335        "name": "withdrawal",
2336        "type": "tuple",
2337        "internalType": "struct IDelegationManagerTypes.Withdrawal",
2338        "components": [
2339          {
2340            "name": "staker",
2341            "type": "address",
2342            "internalType": "address"
2343          },
2344          {
2345            "name": "delegatedTo",
2346            "type": "address",
2347            "internalType": "address"
2348          },
2349          {
2350            "name": "withdrawer",
2351            "type": "address",
2352            "internalType": "address"
2353          },
2354          {
2355            "name": "nonce",
2356            "type": "uint256",
2357            "internalType": "uint256"
2358          },
2359          {
2360            "name": "startBlock",
2361            "type": "uint32",
2362            "internalType": "uint32"
2363          },
2364          {
2365            "name": "strategies",
2366            "type": "address[]",
2367            "internalType": "contract IStrategy[]"
2368          },
2369          {
2370            "name": "scaledShares",
2371            "type": "uint256[]",
2372            "internalType": "uint256[]"
2373          }
2374        ]
2375      }
2376    ],
2377    "stateMutability": "view"
2378  },
2379  {
2380    "type": "function",
2381    "name": "redelegate",
2382    "inputs": [
2383      {
2384        "name": "newOperator",
2385        "type": "address",
2386        "internalType": "address"
2387      },
2388      {
2389        "name": "newOperatorApproverSig",
2390        "type": "tuple",
2391        "internalType": "struct ISignatureUtilsMixinTypes.SignatureWithExpiry",
2392        "components": [
2393          {
2394            "name": "signature",
2395            "type": "bytes",
2396            "internalType": "bytes"
2397          },
2398          {
2399            "name": "expiry",
2400            "type": "uint256",
2401            "internalType": "uint256"
2402          }
2403        ]
2404      },
2405      {
2406        "name": "approverSalt",
2407        "type": "bytes32",
2408        "internalType": "bytes32"
2409      }
2410    ],
2411    "outputs": [
2412      {
2413        "name": "withdrawalRoots",
2414        "type": "bytes32[]",
2415        "internalType": "bytes32[]"
2416      }
2417    ],
2418    "stateMutability": "nonpayable"
2419  },
2420  {
2421    "type": "function",
2422    "name": "registerAsOperator",
2423    "inputs": [
2424      {
2425        "name": "initDelegationApprover",
2426        "type": "address",
2427        "internalType": "address"
2428      },
2429      {
2430        "name": "allocationDelay",
2431        "type": "uint32",
2432        "internalType": "uint32"
2433      },
2434      {
2435        "name": "metadataURI",
2436        "type": "string",
2437        "internalType": "string"
2438      }
2439    ],
2440    "outputs": [],
2441    "stateMutability": "nonpayable"
2442  },
2443  {
2444    "type": "function",
2445    "name": "renounceOwnership",
2446    "inputs": [],
2447    "outputs": [],
2448    "stateMutability": "nonpayable"
2449  },
2450  {
2451    "type": "function",
2452    "name": "slashOperatorShares",
2453    "inputs": [
2454      {
2455        "name": "operator",
2456        "type": "address",
2457        "internalType": "address"
2458      },
2459      {
2460        "name": "strategy",
2461        "type": "address",
2462        "internalType": "contract IStrategy"
2463      },
2464      {
2465        "name": "prevMaxMagnitude",
2466        "type": "uint64",
2467        "internalType": "uint64"
2468      },
2469      {
2470        "name": "newMaxMagnitude",
2471        "type": "uint64",
2472        "internalType": "uint64"
2473      }
2474    ],
2475    "outputs": [],
2476    "stateMutability": "nonpayable"
2477  },
2478  {
2479    "type": "function",
2480    "name": "strategyManager",
2481    "inputs": [],
2482    "outputs": [
2483      {
2484        "name": "",
2485        "type": "address",
2486        "internalType": "contract IStrategyManager"
2487      }
2488    ],
2489    "stateMutability": "view"
2490  },
2491  {
2492    "type": "function",
2493    "name": "transferOwnership",
2494    "inputs": [
2495      {
2496        "name": "newOwner",
2497        "type": "address",
2498        "internalType": "address"
2499      }
2500    ],
2501    "outputs": [],
2502    "stateMutability": "nonpayable"
2503  },
2504  {
2505    "type": "function",
2506    "name": "undelegate",
2507    "inputs": [
2508      {
2509        "name": "staker",
2510        "type": "address",
2511        "internalType": "address"
2512      }
2513    ],
2514    "outputs": [
2515      {
2516        "name": "withdrawalRoots",
2517        "type": "bytes32[]",
2518        "internalType": "bytes32[]"
2519      }
2520    ],
2521    "stateMutability": "nonpayable"
2522  },
2523  {
2524    "type": "function",
2525    "name": "unpause",
2526    "inputs": [
2527      {
2528        "name": "newPausedStatus",
2529        "type": "uint256",
2530        "internalType": "uint256"
2531      }
2532    ],
2533    "outputs": [],
2534    "stateMutability": "nonpayable"
2535  },
2536  {
2537    "type": "function",
2538    "name": "updateOperatorMetadataURI",
2539    "inputs": [
2540      {
2541        "name": "operator",
2542        "type": "address",
2543        "internalType": "address"
2544      },
2545      {
2546        "name": "metadataURI",
2547        "type": "string",
2548        "internalType": "string"
2549      }
2550    ],
2551    "outputs": [],
2552    "stateMutability": "nonpayable"
2553  },
2554  {
2555    "type": "function",
2556    "name": "version",
2557    "inputs": [],
2558    "outputs": [
2559      {
2560        "name": "",
2561        "type": "string",
2562        "internalType": "string"
2563      }
2564    ],
2565    "stateMutability": "view"
2566  },
2567  {
2568    "type": "event",
2569    "name": "DelegationApproverUpdated",
2570    "inputs": [
2571      {
2572        "name": "operator",
2573        "type": "address",
2574        "indexed": true,
2575        "internalType": "address"
2576      },
2577      {
2578        "name": "newDelegationApprover",
2579        "type": "address",
2580        "indexed": false,
2581        "internalType": "address"
2582      }
2583    ],
2584    "anonymous": false
2585  },
2586  {
2587    "type": "event",
2588    "name": "DepositScalingFactorUpdated",
2589    "inputs": [
2590      {
2591        "name": "staker",
2592        "type": "address",
2593        "indexed": false,
2594        "internalType": "address"
2595      },
2596      {
2597        "name": "strategy",
2598        "type": "address",
2599        "indexed": false,
2600        "internalType": "contract IStrategy"
2601      },
2602      {
2603        "name": "newDepositScalingFactor",
2604        "type": "uint256",
2605        "indexed": false,
2606        "internalType": "uint256"
2607      }
2608    ],
2609    "anonymous": false
2610  },
2611  {
2612    "type": "event",
2613    "name": "Initialized",
2614    "inputs": [
2615      {
2616        "name": "version",
2617        "type": "uint8",
2618        "indexed": false,
2619        "internalType": "uint8"
2620      }
2621    ],
2622    "anonymous": false
2623  },
2624  {
2625    "type": "event",
2626    "name": "OperatorMetadataURIUpdated",
2627    "inputs": [
2628      {
2629        "name": "operator",
2630        "type": "address",
2631        "indexed": true,
2632        "internalType": "address"
2633      },
2634      {
2635        "name": "metadataURI",
2636        "type": "string",
2637        "indexed": false,
2638        "internalType": "string"
2639      }
2640    ],
2641    "anonymous": false
2642  },
2643  {
2644    "type": "event",
2645    "name": "OperatorRegistered",
2646    "inputs": [
2647      {
2648        "name": "operator",
2649        "type": "address",
2650        "indexed": true,
2651        "internalType": "address"
2652      },
2653      {
2654        "name": "delegationApprover",
2655        "type": "address",
2656        "indexed": false,
2657        "internalType": "address"
2658      }
2659    ],
2660    "anonymous": false
2661  },
2662  {
2663    "type": "event",
2664    "name": "OperatorSharesDecreased",
2665    "inputs": [
2666      {
2667        "name": "operator",
2668        "type": "address",
2669        "indexed": true,
2670        "internalType": "address"
2671      },
2672      {
2673        "name": "staker",
2674        "type": "address",
2675        "indexed": false,
2676        "internalType": "address"
2677      },
2678      {
2679        "name": "strategy",
2680        "type": "address",
2681        "indexed": false,
2682        "internalType": "contract IStrategy"
2683      },
2684      {
2685        "name": "shares",
2686        "type": "uint256",
2687        "indexed": false,
2688        "internalType": "uint256"
2689      }
2690    ],
2691    "anonymous": false
2692  },
2693  {
2694    "type": "event",
2695    "name": "OperatorSharesIncreased",
2696    "inputs": [
2697      {
2698        "name": "operator",
2699        "type": "address",
2700        "indexed": true,
2701        "internalType": "address"
2702      },
2703      {
2704        "name": "staker",
2705        "type": "address",
2706        "indexed": false,
2707        "internalType": "address"
2708      },
2709      {
2710        "name": "strategy",
2711        "type": "address",
2712        "indexed": false,
2713        "internalType": "contract IStrategy"
2714      },
2715      {
2716        "name": "shares",
2717        "type": "uint256",
2718        "indexed": false,
2719        "internalType": "uint256"
2720      }
2721    ],
2722    "anonymous": false
2723  },
2724  {
2725    "type": "event",
2726    "name": "OperatorSharesSlashed",
2727    "inputs": [
2728      {
2729        "name": "operator",
2730        "type": "address",
2731        "indexed": true,
2732        "internalType": "address"
2733      },
2734      {
2735        "name": "strategy",
2736        "type": "address",
2737        "indexed": false,
2738        "internalType": "contract IStrategy"
2739      },
2740      {
2741        "name": "totalSlashedShares",
2742        "type": "uint256",
2743        "indexed": false,
2744        "internalType": "uint256"
2745      }
2746    ],
2747    "anonymous": false
2748  },
2749  {
2750    "type": "event",
2751    "name": "OwnershipTransferred",
2752    "inputs": [
2753      {
2754        "name": "previousOwner",
2755        "type": "address",
2756        "indexed": true,
2757        "internalType": "address"
2758      },
2759      {
2760        "name": "newOwner",
2761        "type": "address",
2762        "indexed": true,
2763        "internalType": "address"
2764      }
2765    ],
2766    "anonymous": false
2767  },
2768  {
2769    "type": "event",
2770    "name": "Paused",
2771    "inputs": [
2772      {
2773        "name": "account",
2774        "type": "address",
2775        "indexed": true,
2776        "internalType": "address"
2777      },
2778      {
2779        "name": "newPausedStatus",
2780        "type": "uint256",
2781        "indexed": false,
2782        "internalType": "uint256"
2783      }
2784    ],
2785    "anonymous": false
2786  },
2787  {
2788    "type": "event",
2789    "name": "SlashingWithdrawalCompleted",
2790    "inputs": [
2791      {
2792        "name": "withdrawalRoot",
2793        "type": "bytes32",
2794        "indexed": false,
2795        "internalType": "bytes32"
2796      }
2797    ],
2798    "anonymous": false
2799  },
2800  {
2801    "type": "event",
2802    "name": "SlashingWithdrawalQueued",
2803    "inputs": [
2804      {
2805        "name": "withdrawalRoot",
2806        "type": "bytes32",
2807        "indexed": false,
2808        "internalType": "bytes32"
2809      },
2810      {
2811        "name": "withdrawal",
2812        "type": "tuple",
2813        "indexed": false,
2814        "internalType": "struct IDelegationManagerTypes.Withdrawal",
2815        "components": [
2816          {
2817            "name": "staker",
2818            "type": "address",
2819            "internalType": "address"
2820          },
2821          {
2822            "name": "delegatedTo",
2823            "type": "address",
2824            "internalType": "address"
2825          },
2826          {
2827            "name": "withdrawer",
2828            "type": "address",
2829            "internalType": "address"
2830          },
2831          {
2832            "name": "nonce",
2833            "type": "uint256",
2834            "internalType": "uint256"
2835          },
2836          {
2837            "name": "startBlock",
2838            "type": "uint32",
2839            "internalType": "uint32"
2840          },
2841          {
2842            "name": "strategies",
2843            "type": "address[]",
2844            "internalType": "contract IStrategy[]"
2845          },
2846          {
2847            "name": "scaledShares",
2848            "type": "uint256[]",
2849            "internalType": "uint256[]"
2850          }
2851        ]
2852      },
2853      {
2854        "name": "sharesToWithdraw",
2855        "type": "uint256[]",
2856        "indexed": false,
2857        "internalType": "uint256[]"
2858      }
2859    ],
2860    "anonymous": false
2861  },
2862  {
2863    "type": "event",
2864    "name": "StakerDelegated",
2865    "inputs": [
2866      {
2867        "name": "staker",
2868        "type": "address",
2869        "indexed": true,
2870        "internalType": "address"
2871      },
2872      {
2873        "name": "operator",
2874        "type": "address",
2875        "indexed": true,
2876        "internalType": "address"
2877      }
2878    ],
2879    "anonymous": false
2880  },
2881  {
2882    "type": "event",
2883    "name": "StakerForceUndelegated",
2884    "inputs": [
2885      {
2886        "name": "staker",
2887        "type": "address",
2888        "indexed": true,
2889        "internalType": "address"
2890      },
2891      {
2892        "name": "operator",
2893        "type": "address",
2894        "indexed": true,
2895        "internalType": "address"
2896      }
2897    ],
2898    "anonymous": false
2899  },
2900  {
2901    "type": "event",
2902    "name": "StakerUndelegated",
2903    "inputs": [
2904      {
2905        "name": "staker",
2906        "type": "address",
2907        "indexed": true,
2908        "internalType": "address"
2909      },
2910      {
2911        "name": "operator",
2912        "type": "address",
2913        "indexed": true,
2914        "internalType": "address"
2915      }
2916    ],
2917    "anonymous": false
2918  },
2919  {
2920    "type": "event",
2921    "name": "Unpaused",
2922    "inputs": [
2923      {
2924        "name": "account",
2925        "type": "address",
2926        "indexed": true,
2927        "internalType": "address"
2928      },
2929      {
2930        "name": "newPausedStatus",
2931        "type": "uint256",
2932        "indexed": false,
2933        "internalType": "uint256"
2934      }
2935    ],
2936    "anonymous": false
2937  },
2938  {
2939    "type": "error",
2940    "name": "ActivelyDelegated",
2941    "inputs": []
2942  },
2943  {
2944    "type": "error",
2945    "name": "CallerCannotUndelegate",
2946    "inputs": []
2947  },
2948  {
2949    "type": "error",
2950    "name": "CurrentlyPaused",
2951    "inputs": []
2952  },
2953  {
2954    "type": "error",
2955    "name": "FullySlashed",
2956    "inputs": []
2957  },
2958  {
2959    "type": "error",
2960    "name": "InputAddressZero",
2961    "inputs": []
2962  },
2963  {
2964    "type": "error",
2965    "name": "InputArrayLengthMismatch",
2966    "inputs": []
2967  },
2968  {
2969    "type": "error",
2970    "name": "InputArrayLengthZero",
2971    "inputs": []
2972  },
2973  {
2974    "type": "error",
2975    "name": "InvalidNewPausedStatus",
2976    "inputs": []
2977  },
2978  {
2979    "type": "error",
2980    "name": "InvalidPermissions",
2981    "inputs": []
2982  },
2983  {
2984    "type": "error",
2985    "name": "InvalidShortString",
2986    "inputs": []
2987  },
2988  {
2989    "type": "error",
2990    "name": "InvalidSignature",
2991    "inputs": []
2992  },
2993  {
2994    "type": "error",
2995    "name": "InvalidSnapshotOrdering",
2996    "inputs": []
2997  },
2998  {
2999    "type": "error",
3000    "name": "NotActivelyDelegated",
3001    "inputs": []
3002  },
3003  {
3004    "type": "error",
3005    "name": "OnlyAllocationManager",
3006    "inputs": []
3007  },
3008  {
3009    "type": "error",
3010    "name": "OnlyEigenPodManager",
3011    "inputs": []
3012  },
3013  {
3014    "type": "error",
3015    "name": "OnlyPauser",
3016    "inputs": []
3017  },
3018  {
3019    "type": "error",
3020    "name": "OnlyStrategyManagerOrEigenPodManager",
3021    "inputs": []
3022  },
3023  {
3024    "type": "error",
3025    "name": "OnlyUnpauser",
3026    "inputs": []
3027  },
3028  {
3029    "type": "error",
3030    "name": "OperatorNotRegistered",
3031    "inputs": []
3032  },
3033  {
3034    "type": "error",
3035    "name": "OperatorsCannotUndelegate",
3036    "inputs": []
3037  },
3038  {
3039    "type": "error",
3040    "name": "SaltSpent",
3041    "inputs": []
3042  },
3043  {
3044    "type": "error",
3045    "name": "SignatureExpired",
3046    "inputs": []
3047  },
3048  {
3049    "type": "error",
3050    "name": "StringTooLong",
3051    "inputs": [
3052      {
3053        "name": "str",
3054        "type": "string",
3055        "internalType": "string"
3056      }
3057    ]
3058  },
3059  {
3060    "type": "error",
3061    "name": "WithdrawalDelayNotElapsed",
3062    "inputs": []
3063  },
3064  {
3065    "type": "error",
3066    "name": "WithdrawalNotQueued",
3067    "inputs": []
3068  },
3069  {
3070    "type": "error",
3071    "name": "WithdrawerNotCaller",
3072    "inputs": []
3073  }
3074]
3075```*/
3076#[allow(
3077    non_camel_case_types,
3078    non_snake_case,
3079    clippy::pub_underscore_fields,
3080    clippy::style,
3081    clippy::empty_structs_with_brackets
3082)]
3083pub mod DelegationManager {
3084    use super::*;
3085    use alloy::sol_types as alloy_sol_types;
3086    /// The creation / init bytecode of the contract.
3087    ///
3088    /// ```text
3089    ///0x610160604052348015610010575f5ffd5b5060405161626a38038061626a83398101604081905261002f916101fb565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610382565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da919061032a565b60405180910390fd5b80516100ee8261035c565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156101f35781810151838201526020016101db565b50505f910152565b5f5f5f5f5f5f5f60e0888a031215610211575f5ffd5b875161021c816101ae565b602089015190975061022d816101ae565b604089015190965061023e816101ae565b606089015190955061024f816101ae565b6080890151909450610260816101ae565b60a089015190935063ffffffff81168114610279575f5ffd5b60c08901519092506001600160401b03811115610294575f5ffd5b88015f601f82018b136102a5575f5ffd5b81516001600160401b038111156102be576102be6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ec576102ec6101c5565b6040528181528382016020018d1015610303575f5ffd5b6103148260208301602087016101d9565b8092508094505050505092959891949750929550565b602081525f82518060208401526103488160408501602087016101d9565b601f01601f19169190910160400192915050565b8051602080830151919081101561037c575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615def61047b5f395f81816110cf015261407201525f81816103fe015261335801525f818161070101528181613568015281816136aa015261398601525f818161075101528181610dc301528181610f7a0152818161132d01528181611525015281816119590152818161271e015261429c01525f818161042501528181610f07015281816114a5015281816116c901528181612f4f0152818161313101526137e901525f818161038101528181610ed50152818161163701526137c301525f81816105d601528181610b500152818161110f01526125140152615def5ff3fe608060405234801561000f575f5ffd5b50600436106102c3575f3560e01c8063715018a611610177578063bfae3fd2116100d5578063e4cc3f901161008f578063e4cc3f9014610799578063eea9064b146107ac578063f0e0e676146107bf578063f2fde38b146107df578063f698da25146107f2578063fabc1cbc146107fa578063fd8aa88d1461080d575f5ffd5b8063bfae3fd2146106e4578063c448feb8146106f7578063c978f7ac1461072b578063ca8aa7c71461074c578063cd6dc68714610773578063da8be86414610786575f5ffd5b80639104c319116101315780639104c3191461061c5780639435bb431461063057806399f5371b14610643578063a178848414610663578063a33a343314610682578063b7f06ebe14610695578063bb45fef2146106b7575f5ffd5b8063715018a61461058c578063778e55f31461059457806378296ec5146105be578063886f1195146105d15780638da5cb5b146105f85780639004134714610609575f5ffd5b806354fd4d50116102245780635dd68579116101de5780635dd68579146104d6578063601bb36f146104f757806360a0d1ce1461050a57806365da12641461051d57806366d5ba93146105455780636d70f7ae146105665780636e17444814610579575f5ffd5b806354fd4d501461045a578063595c6a671461046f578063597b36da146104775780635ac86ab71461048a5780635c975abb146104ad5780635d975e88146104b5575f5ffd5b806339b70e381161028057806339b70e381461037c5780633c651cf2146103b05780633cdeb5e0146103c35780633e28391d146103d65780634657e26a146103f95780634665bcda1461042057806354b7c96c14610447575f5ffd5b806304a4f979146102c75780630b9f487a146103015780630dd8dd0214610314578063136439dd1461033457806325df922e146103495780632aa6d88814610369575b5f5ffd5b6102ee7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b6102ee61030f366004614c76565b610820565b610327610322366004614d0d565b6108a8565b6040516102f89190614d4b565b610347610342366004614d82565b610b39565b005b61035c610357366004614f17565b610c13565b6040516102f89190614fc5565b610347610377366004615027565b610d73565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b6040516102f89190615085565b6103476103be366004615099565b610eca565b6103a36103d13660046150dc565b61101b565b6103e96103e43660046150dc565b61103b565b60405190151581526020016102f8565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b6103476104553660046150f7565b61105a565b6104626110c8565b6040516102f8919061517b565b6103476110f8565b6102ee610485366004615249565b6111ac565b6103e961049836600461527a565b606654600160ff9092169190911b9081161490565b6066546102ee565b6104c86104c3366004614d82565b6111db565b6040516102f8929190615351565b6104e96104e43660046150dc565b6111f8565b6040516102f89291906153c3565b610347610505366004615444565b611322565b61034761051836600461549d565b61149a565b6103a361052b3660046150dc565b609a6020525f90815260409020546001600160a01b031681565b6105586105533660046150dc565b611630565b6040516102f89291906154dc565b6103e96105743660046150dc565b61191d565b6102ee6105873660046150f7565b611955565b6103476119fa565b6102ee6105a23660046150f7565b609860209081525f928352604080842090915290825290205481565b6103476105cc3660046154ee565b611a0b565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103a3565b61035c61061736600461553e565b611aa1565b6103a35f516020615d9a5f395f51905f5281565b61034761063e36600461558a565b611b77565b610656610651366004614d82565b611c50565b6040516102f89190615626565b6102ee6106713660046150dc565b609f6020525f908152604090205481565b610327610690366004615638565b611d6c565b6103e96106a3366004614d82565b609e6020525f908152604090205460ff1681565b6103e96106c536600461571f565b609c60209081525f928352604080842090915290825290205460ff1681565b6102ee6106f23660046150f7565b611d84565b60405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016102f8565b61073e61073936600461553e565b611dc0565b6040516102f8929190615749565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b61034761078136600461571f565b612038565b6103276107943660046150dc565b612153565b6103476107a7366004615768565b61227a565b6103476107ba366004615638565b6122d0565b6107d26107cd3660046157db565b61233b565b6040516102f89190615888565b6103476107ed3660046150dc565b6123e0565b6102ee612459565b610347610808366004614d82565b612512565b61032761081b3660046150dc565b612629565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f9061089e9060e0016040516020818303038152906040528051906020012061264c565b9695505050505050565b6066546060906001906002908116036108d45760405163840a48d560e01b815260040160405180910390fd5b6108dc61267a565b5f836001600160401b038111156108f5576108f5614d99565b60405190808252806020026020018201604052801561091e578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b2a578686828181106109585761095861589a565b905060200281019061096a91906158ae565b6109789060208101906158cc565b905087878381811061098c5761098c61589a565b905060200281019061099e91906158ae565b6109a890806158cc565b9050146109c8576040516343714afd60e01b815260040160405180910390fd5b5f610a3233848a8a868181106109e0576109e061589a565b90506020028101906109f291906158ae565b6109fc90806158cc565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506126d392505050565b9050610b0433848a8a86818110610a4b57610a4b61589a565b9050602002810190610a5d91906158ae565b610a6790806158cc565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610aac57610aac61589a565b9050602002810190610abe91906158ae565b610acc9060208101906158cc565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250889250612825915050565b848381518110610b1657610b1661589a565b60209081029190910101525060010161093e565b5050600160c955949350505050565b60405163237dfb4760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906346fbf68e90610b85903390600401615085565b602060405180830381865afa158015610ba0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc49190615911565b610be157604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c065760405163c61dca5d60e01b815260040160405180910390fd5b610c0f82612d94565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610c3c8683876126d3565b90505f85516001600160401b03811115610c5857610c58614d99565b604051908082528060200260200182016040528015610c81578160200160208202803683370190505b5090505f5b8651811015610d66576001600160a01b0388165f90815260a260205260408120885182908a9085908110610cbc57610cbc61589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610d40878381518110610d0e57610d0e61589a565b6020026020010151858481518110610d2857610d2861589a565b602002602001015183612dd19092919063ffffffff16565b838381518110610d5257610d5261589a565b602090810291909101015250600101610c86565b50925050505b9392505050565b610d7b61267a565b610d843361103b565b15610da257604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e0c575f5ffd5b505af1158015610e1e573d5f5f3e3d5ffd5b50505050610e2c3385612def565b610e363333612e51565b336001600160a01b03167fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c185604051610e6f9190615085565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610eb292919061592c565b60405180910390a2610ec4600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f295750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610f465760405163045206a560e21b815260040160405180910390fd5b610f4e61267a565b6001600160a01b038085165f908152609a602052604080822054905163152667d960e31b8152908316927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890610fb1908590899060040161595a565b602060405180830381865afa158015610fcc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff09190615974565b90505f610ffe8787846130f2565b905061100e8388888888866131d5565b505050610ec4600160c955565b6001600160a01b039081165f908152609960205260409020600101541690565b6001600160a01b039081165f908152609a602052604090205416151590565b816110648161331a565b6110815760405163932d94f760e01b815260040160405180910390fd5b61108961267a565b6110928361191d565b6110af576040516325ec6c1f60e01b815260040160405180910390fd5b6110b98383612def565b6110c3600160c955565b505050565b60606110f37f00000000000000000000000000000000000000000000000000000000000000006133c4565b905090565b60405163237dfb4760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906346fbf68e90611144903390600401615085565b602060405180830381865afa15801561115f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190615911565b6111a057604051631d77d47760e21b815260040160405180910390fd5b6111aa5f19612d94565b565b5f816040516020016111be9190615626565b604051602081830303815290604052805190602001209050919050565b6111e3614b37565b60606111ee83613401565b9094909350915050565b6060805f61120584612629565b8051909150806001600160401b0381111561122257611222614d99565b60405190808252806020026020018201604052801561125b57816020015b611248614b37565b8152602001906001900390816112405790505b509350806001600160401b0381111561127657611276614d99565b6040519080825280602002602001820160405280156112a957816020015b60608152602001906001900390816112945790505b5092505f5b8181101561131a576112d88382815181106112cb576112cb61589a565b6020026020010151613401565b8683815181106112ea576112ea61589a565b602002602001018684815181106113035761130361589a565b6020908102919091010191909152526001016112ae565b505050915091565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461136b576040516323d871a560e01b815260040160405180910390fd5b61137361267a565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113b1906001600160401b03808616908516613654565b90505f6113c08686868661366c565b90505f6113cd82846159a3565b90506113db875f8886613729565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61142b876137a3565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b158015611476575f5ffd5b505af1158015611488573d5f5f3e3d5ffd5b5050505050505050610ec4600160c955565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114e357604051633213a66160e21b815260040160405180910390fd5b6114eb61267a565b6114f48361103b565b156110b9576001600160a01b038084165f908152609a602052604080822054905163152667d960e31b8152908316927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec8906115699085905f516020615d9a5f395f51905f529060040161595a565b602060405180830381865afa158015611584573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a89190615974565b6001600160a01b0386165f90815260a2602090815260408083205f516020615d9a5f395f51905f52845282528083208151928301909152548152919250611607866115ff6001600160401b0380871690891661380e565b849190613822565b905061162284885f516020615d9a5f395f51905f5284613729565b505050506110c3600160c955565b6060805f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394f649dd866040518263ffffffff1660e01b81526004016116819190615085565b5f60405180830381865afa15801561169b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116c29190810190615a11565b915091505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fe243a17875f516020615d9a5f395f51905f526040518363ffffffff1660e01b815260040161172292919061595a565b602060405180830381865afa15801561173d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117619190615acc565b9050805f0361177557509094909350915050565b5f8351600161178491906159a3565b6001600160401b0381111561179b5761179b614d99565b6040519080825280602002602001820160405280156117c4578160200160208202803683370190505b5090505f845160016117d691906159a3565b6001600160401b038111156117ed576117ed614d99565b604051908082528060200260200182016040528015611816578160200160208202803683370190505b5090505f516020615d9a5f395f51905f528286518151811061183a5761183a61589a565b60200260200101906001600160a01b031690816001600160a01b031681525050828186518151811061186e5761186e61589a565b60209081029190910101525f5b855181101561190f578581815181106118965761189661589a565b60200260200101518382815181106118b0576118b061589a565b60200260200101906001600160a01b031690816001600160a01b0316815250508481815181106118e2576118e261589a565b60200260200101518282815181106118fc576118fc61589a565b602090810291909101015260010161187b565b509097909650945050505050565b5f6001600160a01b0382161580159061194f57506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9333ec885856040518363ffffffff1660e01b81526004016119a592919061595a565b602060405180830381865afa1580156119c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e49190615974565b90506119f28484835f61366c565b949350505050565b611a02613840565b6111aa5f61389a565b82611a158161331a565b611a325760405163932d94f760e01b815260040160405180910390fd5b611a3b8461191d565b611a58576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611a9392919061592c565b60405180910390a250505050565b60605f82516001600160401b03811115611abd57611abd614d99565b604051908082528060200260200182016040528015611ae6578160200160208202803683370190505b5090505f5b8351811015611b6f576001600160a01b0385165f9081526098602052604081208551909190869084908110611b2257611b2261589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611b5c57611b5c61589a565b6020908102919091010152600101611aeb565b509392505050565b606654600290600490811603611ba05760405163840a48d560e01b815260040160405180910390fd5b611ba861267a565b855f5b81811015611c3b57611c33898983818110611bc857611bc861589a565b9050602002810190611bda9190615ae3565b611be390615af7565b888884818110611bf557611bf561589a565b9050602002810190611c0791906158cc565b888886818110611c1957611c1961589a565b9050602002016020810190611c2e9190615b02565b6138eb565b600101611bab565b5050611c47600160c955565b50505050505050565b611c58614b37565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d0657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611ce8575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611d5c57602002820191905f5260205f20905b815481526020019060010190808311611d48575b5050505050815250509050919050565b6060611d7733612153565b9050610d6c8484846122d0565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610d6c90613d2d565b60608082516001600160401b03811115611ddc57611ddc614d99565b604051908082528060200260200182016040528015611e05578160200160208202803683370190505b50915082516001600160401b03811115611e2157611e21614d99565b604051908082528060200260200182016040528015611e4a578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611e758683876126d3565b90505f5b855181101561202d575f611ea5878381518110611e9857611e9861589a565b60200260200101516137a3565b9050806001600160a01b031663fe243a1789898581518110611ec957611ec961589a565b60200260200101516040518363ffffffff1660e01b8152600401611eee92919061595a565b602060405180830381865afa158015611f09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2d9190615acc565b858381518110611f3f57611f3f61589a565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f898581518110611f8257611f8261589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050612006868481518110611fd457611fd461589a565b6020026020010151858581518110611fee57611fee61589a565b6020026020010151836138229092919063ffffffff16565b8784815181106120185761201861589a565b60209081029190910101525050600101611e79565b5050505b9250929050565b5f54610100900460ff161580801561205657505f54600160ff909116105b8061206f5750303b15801561206f57505f5460ff166001145b6120d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156120f8575f805461ff0019166101001790555b61210182612d94565b61210a8361389a565b80156110c3575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b606061215d61267a565b6121668261103b565b6121835760405163a5c7c44560e01b815260040160405180910390fd5b61218c8261191d565b156121aa576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b03831614612260576001600160a01b038083165f908152609a6020526040902054166121dd8161331a565b8061220157506121ec8161101b565b6001600160a01b0316336001600160a01b0316145b61221e57604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b61226982613d4c565b9050612275600160c955565b919050565b6066546002906004908116036122a35760405163840a48d560e01b815260040160405180910390fd5b6122ab61267a565b6122bf6122b786615af7565b8585856138eb565b6122c9600160c955565b5050505050565b6122d861267a565b6122e13361103b565b156122ff57604051633bf2b50360e11b815260040160405180910390fd5b6123088361191d565b612325576040516325ec6c1f60e01b815260040160405180910390fd5b61233133848484613fab565b6110b93384612e51565b60605f83516001600160401b0381111561235757612357614d99565b60405190808252806020026020018201604052801561238a57816020015b60608152602001906001900390816123755790505b5090505f5b8451811015611b6f576123bb8582815181106123ad576123ad61589a565b602002602001015185611aa1565b8282815181106123cd576123cd61589a565b602090810291909101015260010161238f565b6123e8613840565b6001600160a01b03811661244d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016120ce565b6124568161389a565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea6124c661406a565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561256e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125929190615b1d565b6001600160a01b0316336001600160a01b0316146125c35760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146125ea5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a36020526040902060609061194f90614106565b5f612655612459565b60405161190160f01b60208201526022810191909152604281018390526062016111be565b600260c954036126cc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016120ce565b600260c955565b60605f82516001600160401b038111156126ef576126ef614d99565b604051908082528060200260200182016040528015612718578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b815260040161276a929190615b38565b5f60405180830381865afa158015612784573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127ab9190810190615b5b565b90505f5b845181101561281a576127f5878683815181106127ce576127ce61589a565b60200260200101518484815181106127e8576127e861589a565b60200260200101516130f2565b8382815181106128075761280761589a565b60209081029190910101526001016127af565b509095945050505050565b5f6001600160a01b03861661284d576040516339b190bb60e11b815260040160405180910390fd5b83515f0361286e5760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561288857612888614d99565b6040519080825280602002602001820160405280156128b1578160200160208202803683370190505b5090505f85516001600160401b038111156128ce576128ce614d99565b6040519080825280602002602001820160405280156128f7578160200160208202803683370190505b5090505f5b8651811015612bc7575f61291b888381518110611e9857611e9861589a565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129545761295461589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f8201548152505090506129c08884815181106129a6576129a661589a565b6020026020010151888581518110611fee57611fee61589a565b8484815181106129d2576129d261589a565b602002602001018181525050612a0a8884815181106129f3576129f361589a565b60200260200101518261411290919063ffffffff16565b858481518110612a1c57612a1c61589a565b60209081029190910101526001600160a01b038a1615612ab157612a738a8a8581518110612a4c57612a4c61589a565b6020026020010151878681518110612a6657612a6661589a565b6020026020010151614126565b612ab18a8c8b8681518110612a8a57612a8a61589a565b6020026020010151878781518110612aa457612aa461589a565b6020026020010151613729565b5f826001600160a01b031663724af4238d8c8781518110612ad457612ad461589a565b60200260200101518c8881518110612aee57612aee61589a565b60200260200101516040518463ffffffff1660e01b8152600401612b1493929190615bea565b6020604051808303815f875af1158015612b30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b549190615acc565b9050805f03612bb9576001600160a01b038c165f90815260a2602052604081208b51612bb992908d9088908110612b8d57612b8d61589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f9055565b5050508060010190506128fc565b506001600160a01b0388165f908152609f60205260408120805491829190612bee83615c0e565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612c54826111ac565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612d0a9260058501920190614b90565b5060c08201518051612d26916006840191602090910190614bf3565b5050506001600160a01b038b165f90815260a360205260409020612d4a9082614190565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612d7e93929190615c26565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f6119f282612de9612de287613d2d565b869061419b565b9061419b565b6001600160a01b038281165f818152609960205260409081902060010180546001600160a01b0319169385169390931790925590517f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c69061261d908490615085565b6066545f90600190811603612e795760405163840a48d560e01b815260040160405180910390fd5b5f5f612e8485611630565b915091505f612e945f86856126d3565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611c47575f516020615d9a5f395f51905f526001600160a01b0316848281518110612f2057612f2061589a565b60200260200101516001600160a01b0316036130915760405163a3d75e0960e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a3d75e0990612f84908b90600401615085565b602060405180830381865afa158015612f9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fc39190615974565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f878581518110612ffc57612ffc61589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061307085848151811061304e5761304e61589a565b6020026020010151836001600160401b0316836138229092919063ffffffff16565b8584815181106130825761308261589a565b60200260200101818152505050505b6130ea86888684815181106130a8576130a861589a565b60200260200101515f8786815181106130c3576130c361589a565b60200260200101518787815181106130dd576130dd61589a565b60200260200101516131d5565b600101612eee565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016131c55760405163a3d75e0960e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a3d75e0990613166908890600401615085565b602060405180830381865afa158015613181573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a59190615974565b90506131bd6001600160401b0384811690831661380e565b915050610d6c565b506001600160401b031692915050565b805f036131f557604051630a33bc6960e21b815260040160405180910390fd5b8115613312576001600160a01b038086165f90815260a26020908152604080832093881683529290522061322b818585856141af565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061326990613d2d565b60405161327893929190615bea565b60405180910390a16132898661103b565b15611c47576001600160a01b038088165f908152609860209081526040808320938916835292905290812080548592906132c49084906159a3565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c87878660405161330893929190615bea565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156133a0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194f9190615911565b60605f6133d08361422a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b613409614b37565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a086019392908301828280156134bb57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161349d575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561351157602002820191905f5260205f20905b8154815260200190600101908083116134fd575b50505050508152505091508160a00151516001600160401b0381111561353957613539614d99565b604051908082528060200260200182016040528015613562578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516135969190615c50565b90505f4363ffffffff168263ffffffff16106135c7576135c2845f015185602001518660a001516126d3565b6135de565b6135de845f015185602001518660a0015185614251565b90505f5b8460a001515181101561131a5761362f8560c0015182815181106136085761360861589a565b60200260200101518383815181106136225761362261589a565b602002602001015161437f565b8482815181106136415761364161589a565b60209081029190910101526001016135e2565b5f613662848385600161438a565b6119f29085615c6c565b6001600160a01b038085165f90815260a5602090815260408083209387168352929052908120819061369d906143e5565b90505f61370360016136cf7f000000000000000000000000000000000000000000000000000000000000000043615c7f565b6136d99190615c7f565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906143ff565b90505f6137108284615c6c565b905061371d81878761441b565b98975050505050505050565b6001600160a01b038085165f9081526098602090815260408083209386168352929052908120805483929061375f908490615c6c565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611a9393929190615bea565b5f6001600160a01b0382165f516020615d9a5f395f51905f52146137e7577f000000000000000000000000000000000000000000000000000000000000000061194f565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610d6c8383670de0b6b3a7640000614439565b5f6119f28261383a61383387613d2d565b869061380e565b9061380e565b6033546001600160a01b031633146111aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016120ce565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a0840151518214613910576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613946576040516316110d3560e21b815260040160405180910390fd5b5f613950856111ac565b5f818152609e602052604090205490915060ff16613981576040516387c9d21960e01b815260040160405180910390fd5b60605f7f000000000000000000000000000000000000000000000000000000000000000087608001516139b49190615c50565b90508063ffffffff164363ffffffff16116139e2576040516378f67ae160e11b815260040160405180910390fd5b6139f9875f015188602001518960a0015184614251565b87516001600160a01b03165f90815260a360205260409020909250613a1f91508361451e565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613a766005830182614c2c565b613a83600683015f614c2c565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613acc9084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613b069184906126d3565b90505f5b8860a0015151811015613d22575f613b318a60a001518381518110611e9857611e9861589a565b90505f613b678b60c001518481518110613b4d57613b4d61589a565b60200260200101518785815181106136225761362261589a565b9050805f03613b77575050613d1a565b8715613c4557816001600160a01b0316632eae418c8c5f01518d60a001518681518110613ba657613ba661589a565b60200260200101518d8d88818110613bc057613bc061589a565b9050602002016020810190613bd591906150dc565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613c2a575f5ffd5b505af1158015613c3c573d5f5f3e3d5ffd5b50505050613d17565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613c7057613c7061589a565b6020026020010151866040518463ffffffff1660e01b8152600401613c9793929190615bea565b60408051808303815f875af1158015613cb2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cd69190615c9b565b91509150613d14878e5f01518f60a001518881518110613cf857613cf861589a565b602002602001015185858b8b815181106130dd576130dd61589a565b50505b50505b600101613b0a565b505050505050505050565b80515f9015613d3d57815161194f565b670de0b6b3a764000092915050565b606654606090600190600290811603613d785760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613dd786611630565b9150915081515f03613deb57505050613fa5565b81516001600160401b03811115613e0457613e04614d99565b604051908082528060200260200182016040528015613e2d578160200160208202803683370190505b5094505f613e3c8785856126d3565b90505f5b8351811015613f9f576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613ec057613ec061589a565b6020026020010151835f81518110613eda57613eda61589a565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613f0c57613f0c61589a565b6020026020010151825f81518110613f2657613f2661589a565b602002602001018181525050848481518110613f4457613f4461589a565b6020026020010151815f81518110613f5e57613f5e61589a565b602002602001018181525050613f778b89858585612825565b8a8581518110613f8957613f8961589a565b6020908102919091010152505050600101613e40565b50505050505b50919050565b6001600160a01b038084165f908152609960205260409020600101541680613fd35750610ec4565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff161561401757604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff191660011790558301516122c990829061405e908890889084908890610820565b85516020870151614529565b60605f6140967f00000000000000000000000000000000000000000000000000000000000000006133c4565b9050805f815181106140aa576140aa61589a565b602001015160f81c60f81b816001815181106140c8576140c861589a565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610d6c8361457b565b5f610d6c61411f84613d2d565b839061380e565b6001600160a01b038084165f90815260a5602090815260408083209386168352929052908120614155906143e5565b9050610ec44361416584846159a3565b6001600160a01b038088165f90815260a560209081526040808320938a1683529290522091906145d4565b5f610d6c83836145df565b5f610d6c83670de0b6b3a764000084614439565b825f036141db576040805160208101909152845481526141d4908290612de990613d2d565b8455610ec4565b6040805160208101909152845481525f906141f7908584613822565b90505f61420484836159a3565b90505f61421f84612de9614218888a6159a3565b859061419b565b875550505050505050565b5f60ff8216601f81111561194f57604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561426d5761426d614d99565b604051908082528060200260200182016040528015614296578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016142ea93929190615cbd565b5f60405180830381865afa158015614304573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261432b9190810190615b5b565b90505f5b85518110156143735761434e888783815181106127ce576127ce61589a565b8382815181106143605761436061589a565b602090810291909101015260010161432f565b50909695505050505050565b5f610d6c838361380e565b5f5f614397868686614439565b905060018360028111156143ad576143ad615cf6565b1480156143c957505f84806143c4576143c4615d0a565b868809115b156143dc576143d96001826159a3565b90505b95945050505050565b5f6143f0828261462b565b6001600160e01b031692915050565b5f61440b83838361466f565b6001600160e01b03169392505050565b5f6119f26144298385615d1e565b85906001600160401b031661380e565b5f80805f19858709858702925082811083820303915050805f036144705783828161446657614466615d0a565b0492505050610d6c565b8084116144b75760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016120ce565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610d6c83836146b7565b4281101561454a57604051630819bdcd60e01b815260040160405180910390fd5b61455e6001600160a01b038516848461479a565b610ec457604051638baa579f60e01b815260040160405180910390fd5b6060815f018054806020026020016040519081016040528092919081815260200182805480156145c857602002820191905f5260205f20905b8154815260200190600101908083116145b4575b50505050509050919050565b6110c38383836147ee565b5f81815260018301602052604081205461462457508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561194f565b505f61194f565b81545f9080156146675761465184614644600184615c6c565b5f91825260209091200190565b54600160201b90046001600160e01b03166119f2565b509092915050565b82545f9081614680868683856148f1565b905080156146ad5761469786614644600184615c6c565b54600160201b90046001600160e01b031661089e565b5091949350505050565b5f8181526001830160205260408120548015614791575f6146d9600183615c6c565b85549091505f906146ec90600190615c6c565b905081811461474b575f865f01828154811061470a5761470a61589a565b905f5260205f200154905080875f01848154811061472a5761472a61589a565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061475c5761475c615d3d565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061194f565b5f91505061194f565b5f5f5f6147a78585614944565b90925090505f8160048111156147bf576147bf615cf6565b1480156147dd5750856001600160a01b0316826001600160a01b0316145b8061089e575061089e868686614983565b825480156148a4575f61480685614644600185615c6c565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156148585760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036148a2578261487986614644600186615c6c565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f5b81831015611b6f575f6149068484614a6a565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149305780925061493e565b61493b8160016159a3565b93505b506148f3565b5f5f8251604103614978576020830151604084015160608501515f1a61496c87828585614a84565b94509450505050612031565b505f90506002612031565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016149ab929190615d51565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516149e99190615d69565b5f60405180830381855afa9150503d805f8114614a21576040519150601f19603f3d011682016040523d82523d5f602084013e614a26565b606091505b5091509150818015614a3a57506020815110155b801561089e57508051630b135d3f60e11b90614a5f9083016020908101908401615acc565b149695505050505050565b5f614a786002848418615d7a565b610d6c908484166159a3565b5f806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115614aaf57505f90506003614b2e565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614b00573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614b28575f60019250925050614b2e565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614be3579160200282015b82811115614be357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614bae565b50614bef929150614c43565b5090565b828054828255905f5260205f20908101928215614be3579160200282015b82811115614be3578251825591602001919060010190614c11565b5080545f8255905f5260205f209081019061245691905b5b80821115614bef575f8155600101614c44565b6001600160a01b0381168114612456575f5ffd5b803561227581614c57565b5f5f5f5f5f60a08688031215614c8a575f5ffd5b8535614c9581614c57565b94506020860135614ca581614c57565b93506040860135614cb581614c57565b94979396509394606081013594506080013592915050565b5f5f83601f840112614cdd575f5ffd5b5081356001600160401b03811115614cf3575f5ffd5b6020830191508360208260051b8501011115612031575f5ffd5b5f5f60208385031215614d1e575f5ffd5b82356001600160401b03811115614d33575f5ffd5b614d3f85828601614ccd565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561281a578351835260209384019390920191600101614d64565b5f60208284031215614d92575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614dcf57614dcf614d99565b60405290565b604080519081016001600160401b0381118282101715614dcf57614dcf614d99565b604051601f8201601f191681016001600160401b0381118282101715614e1f57614e1f614d99565b604052919050565b5f6001600160401b03821115614e3f57614e3f614d99565b5060051b60200190565b5f82601f830112614e58575f5ffd5b8135614e6b614e6682614e27565b614df7565b8082825260208201915060208360051b860101925085831115614e8c575f5ffd5b602085015b83811015614eb2578035614ea481614c57565b835260209283019201614e91565b5095945050505050565b5f82601f830112614ecb575f5ffd5b8135614ed9614e6682614e27565b8082825260208201915060208360051b860101925085831115614efa575f5ffd5b602085015b83811015614eb2578035835260209283019201614eff565b5f5f5f60608486031215614f29575f5ffd5b8335614f3481614c57565b925060208401356001600160401b03811115614f4e575f5ffd5b614f5a86828701614e49565b92505060408401356001600160401b03811115614f75575f5ffd5b614f8186828701614ebc565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614fbb578151865260209586019590910190600101614f9d565b5093949350505050565b602081525f610d6c6020830184614f8b565b803563ffffffff81168114612275575f5ffd5b5f5f83601f840112614ffa575f5ffd5b5081356001600160401b03811115615010575f5ffd5b602083019150836020828501011115612031575f5ffd5b5f5f5f5f6060858703121561503a575f5ffd5b843561504581614c57565b935061505360208601614fd7565b925060408501356001600160401b0381111561506d575f5ffd5b61507987828801614fea565b95989497509550505050565b6001600160a01b0391909116815260200190565b5f5f5f5f608085870312156150ac575f5ffd5b84356150b781614c57565b935060208501356150c781614c57565b93969395505050506040820135916060013590565b5f602082840312156150ec575f5ffd5b8135610d6c81614c57565b5f5f60408385031215615108575f5ffd5b823561511381614c57565b9150602083013561512381614c57565b809150509250929050565b5f5b83811015615148578181015183820152602001615130565b50505f910152565b5f815180845261516781602086016020860161512e565b601f01601f19169290920160200192915050565b602081525f610d6c6020830184615150565b5f60e0828403121561519d575f5ffd5b6151a5614dad565b90506151b082614c6b565b81526151be60208301614c6b565b60208201526151cf60408301614c6b565b6040820152606082810135908201526151ea60808301614fd7565b608082015260a08201356001600160401b03811115615207575f5ffd5b61521384828501614e49565b60a08301525060c08201356001600160401b03811115615231575f5ffd5b61523d84828501614ebc565b60c08301525092915050565b5f60208284031215615259575f5ffd5b81356001600160401b0381111561526e575f5ffd5b6119f28482850161518d565b5f6020828403121561528a575f5ffd5b813560ff81168114610d6c575f5ffd5b5f8151808452602084019350602083015f5b82811015614fbb5781516001600160a01b03168652602095860195909101906001016152ac565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f9161531e9085018263ffffffff169052565b5060a082015160e060a085015261533860e085018261529a565b905060c083015184820360c08601526143dc8282614f8b565b604081525f61536360408301856152d3565b82810360208401526143dc8185614f8b565b5f82825180855260208501945060208160051b830101602085015f5b8381101561437357601f198584030188526153ad838351614f8b565b6020988901989093509190910190600101615391565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b8281101561541a57605f198786030184526154058583516152d3565b945060209384019391909101906001016153e9565b5050505082810360208401526143dc8185615375565b6001600160401b0381168114612456575f5ffd5b5f5f5f5f60808587031215615457575f5ffd5b843561546281614c57565b9350602085013561547281614c57565b9250604085013561548281615430565b9150606085013561549281615430565b939692955090935050565b5f5f5f606084860312156154af575f5ffd5b83356154ba81614c57565b92506020840135915060408401356154d181615430565b809150509250925092565b604081525f615363604083018561529a565b5f5f5f60408486031215615500575f5ffd5b833561550b81614c57565b925060208401356001600160401b03811115615525575f5ffd5b61553186828701614fea565b9497909650939450505050565b5f5f6040838503121561554f575f5ffd5b823561555a81614c57565b915060208301356001600160401b03811115615574575f5ffd5b61558085828601614e49565b9150509250929050565b5f5f5f5f5f5f6060878903121561559f575f5ffd5b86356001600160401b038111156155b4575f5ffd5b6155c089828a01614ccd565b90975095505060208701356001600160401b038111156155de575f5ffd5b6155ea89828a01614ccd565b90955093505060408701356001600160401b03811115615608575f5ffd5b61561489828a01614ccd565b979a9699509497509295939492505050565b602081525f610d6c60208301846152d3565b5f5f5f6060848603121561564a575f5ffd5b833561565581614c57565b925060208401356001600160401b0381111561566f575f5ffd5b840160408187031215615680575f5ffd5b615688614dd5565b81356001600160401b0381111561569d575f5ffd5b8201601f810188136156ad575f5ffd5b80356001600160401b038111156156c6576156c6614d99565b6156d9601f8201601f1916602001614df7565b8181528960208385010111156156ed575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f60408385031215615730575f5ffd5b823561573b81614c57565b946020939093013593505050565b604081525f6153636040830185614f8b565b8015158114612456575f5ffd5b5f5f5f5f6060858703121561577b575f5ffd5b84356001600160401b03811115615790575f5ffd5b850160e081880312156157a1575f5ffd5b935060208501356001600160401b038111156157bb575f5ffd5b6157c787828801614ccd565b90945092505060408501356154928161575b565b5f5f604083850312156157ec575f5ffd5b82356001600160401b03811115615801575f5ffd5b8301601f81018513615811575f5ffd5b803561581f614e6682614e27565b8082825260208201915060208360051b850101925087831115615840575f5ffd5b6020840193505b8284101561586b57833561585a81614c57565b825260209384019390910190615847565b945050505060208301356001600160401b03811115615574575f5ffd5b602081525f610d6c6020830184615375565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126158c2575f5ffd5b9190910192915050565b5f5f8335601e198436030181126158e1575f5ffd5b8301803591506001600160401b038211156158fa575f5ffd5b6020019150600581901b3603821315612031575f5ffd5b5f60208284031215615921575f5ffd5b8151610d6c8161575b565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b6001600160a01b0392831681529116602082015260400190565b5f60208284031215615984575f5ffd5b8151610d6c81615430565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561194f5761194f61598f565b5f82601f8301126159c5575f5ffd5b81516159d3614e6682614e27565b8082825260208201915060208360051b8601019250858311156159f4575f5ffd5b602085015b83811015614eb25780518352602092830192016159f9565b5f5f60408385031215615a22575f5ffd5b82516001600160401b03811115615a37575f5ffd5b8301601f81018513615a47575f5ffd5b8051615a55614e6682614e27565b8082825260208201915060208360051b850101925087831115615a76575f5ffd5b6020840193505b82841015615aa1578351615a9081614c57565b825260209384019390910190615a7d565b8095505050505060208301516001600160401b03811115615ac0575f5ffd5b615580858286016159b6565b5f60208284031215615adc575f5ffd5b5051919050565b5f823560de198336030181126158c2575f5ffd5b5f61194f368361518d565b5f60208284031215615b12575f5ffd5b8135610d6c8161575b565b5f60208284031215615b2d575f5ffd5b8151610d6c81614c57565b6001600160a01b03831681526040602082018190525f906119f29083018461529a565b5f60208284031215615b6b575f5ffd5b81516001600160401b03811115615b80575f5ffd5b8201601f81018413615b90575f5ffd5b8051615b9e614e6682614e27565b8082825260208201915060208360051b850101925086831115615bbf575f5ffd5b6020840193505b8284101561089e578351615bd981615430565b825260209384019390910190615bc6565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c1f57615c1f61598f565b5060010190565b838152606060208201525f615c3e60608301856152d3565b828103604084015261089e8185614f8b565b63ffffffff818116838216019081111561194f5761194f61598f565b8181038181111561194f5761194f61598f565b63ffffffff828116828216039081111561194f5761194f61598f565b5f5f60408385031215615cac575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615ce09083018561529a565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b03828116828216039081111561194f5761194f61598f565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6119f26040830184615150565b5f82516158c281846020870161512e565b5f82615d9457634e487b7160e01b5f52601260045260245ffd5b50049056fe000000000000000000000000beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0a2646970667358221220e1c0613b67b7d291dbd51e9b97ad592681c391bc5ea883c66bc8728ebbdeedd464736f6c634300081b0033
3090    /// ```
3091    #[rustfmt::skip]
3092    #[allow(clippy::all)]
3093    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3094        b"a\x01``@R4\x80\x15a\0\x10W__\xFD[P`@Qabj8\x03\x80abj\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]\xEFa\x04{_9_\x81\x81a\x10\xCF\x01Ra@r\x01R_\x81\x81a\x03\xFE\x01Ra3X\x01R_\x81\x81a\x07\x01\x01R\x81\x81a5h\x01R\x81\x81a6\xAA\x01Ra9\x86\x01R_\x81\x81a\x07Q\x01R\x81\x81a\r\xC3\x01R\x81\x81a\x0Fz\x01R\x81\x81a\x13-\x01R\x81\x81a\x15%\x01R\x81\x81a\x19Y\x01R\x81\x81a'\x1E\x01RaB\x9C\x01R_\x81\x81a\x04%\x01R\x81\x81a\x0F\x07\x01R\x81\x81a\x14\xA5\x01R\x81\x81a\x16\xC9\x01R\x81\x81a/O\x01R\x81\x81a11\x01Ra7\xE9\x01R_\x81\x81a\x03\x81\x01R\x81\x81a\x0E\xD5\x01R\x81\x81a\x167\x01Ra7\xC3\x01R_\x81\x81a\x05\xD6\x01R\x81\x81a\x0BP\x01R\x81\x81a\x11\x0F\x01Ra%\x14\x01Ra]\xEF_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\xC3W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01wW\x80c\xBF\xAE?\xD2\x11a\0\xD5W\x80c\xE4\xCC?\x90\x11a\0\x8FW\x80c\xE4\xCC?\x90\x14a\x07\x99W\x80c\xEE\xA9\x06K\x14a\x07\xACW\x80c\xF0\xE0\xE6v\x14a\x07\xBFW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xDFW\x80c\xF6\x98\xDA%\x14a\x07\xF2W\x80c\xFA\xBC\x1C\xBC\x14a\x07\xFAW\x80c\xFD\x8A\xA8\x8D\x14a\x08\rW__\xFD[\x80c\xBF\xAE?\xD2\x14a\x06\xE4W\x80c\xC4H\xFE\xB8\x14a\x06\xF7W\x80c\xC9x\xF7\xAC\x14a\x07+W\x80c\xCA\x8A\xA7\xC7\x14a\x07LW\x80c\xCDm\xC6\x87\x14a\x07sW\x80c\xDA\x8B\xE8d\x14a\x07\x86W__\xFD[\x80c\x91\x04\xC3\x19\x11a\x011W\x80c\x91\x04\xC3\x19\x14a\x06\x1CW\x80c\x945\xBBC\x14a\x060W\x80c\x99\xF57\x1B\x14a\x06CW\x80c\xA1x\x84\x84\x14a\x06cW\x80c\xA3:43\x14a\x06\x82W\x80c\xB7\xF0n\xBE\x14a\x06\x95W\x80c\xBBE\xFE\xF2\x14a\x06\xB7W__\xFD[\x80cqP\x18\xA6\x14a\x05\x8CW\x80cw\x8EU\xF3\x14a\x05\x94W\x80cx)n\xC5\x14a\x05\xBEW\x80c\x88o\x11\x95\x14a\x05\xD1W\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x90\x04\x13G\x14a\x06\tW__\xFD[\x80cT\xFDMP\x11a\x02$W\x80c]\xD6\x85y\x11a\x01\xDEW\x80c]\xD6\x85y\x14a\x04\xD6W\x80c`\x1B\xB3o\x14a\x04\xF7W\x80c`\xA0\xD1\xCE\x14a\x05\nW\x80ce\xDA\x12d\x14a\x05\x1DW\x80cf\xD5\xBA\x93\x14a\x05EW\x80cmp\xF7\xAE\x14a\x05fW\x80cn\x17DH\x14a\x05yW__\xFD[\x80cT\xFDMP\x14a\x04ZW\x80cY\\jg\x14a\x04oW\x80cY{6\xDA\x14a\x04wW\x80cZ\xC8j\xB7\x14a\x04\x8AW\x80c\\\x97Z\xBB\x14a\x04\xADW\x80c]\x97^\x88\x14a\x04\xB5W__\xFD[\x80c9\xB7\x0E8\x11a\x02\x80W\x80c9\xB7\x0E8\x14a\x03|W\x80c<e\x1C\xF2\x14a\x03\xB0W\x80c<\xDE\xB5\xE0\x14a\x03\xC3W\x80c>(9\x1D\x14a\x03\xD6W\x80cFW\xE2j\x14a\x03\xF9W\x80cFe\xBC\xDA\x14a\x04 W\x80cT\xB7\xC9l\x14a\x04GW__\xFD[\x80c\x04\xA4\xF9y\x14a\x02\xC7W\x80c\x0B\x9FHz\x14a\x03\x01W\x80c\r\xD8\xDD\x02\x14a\x03\x14W\x80c\x13d9\xDD\x14a\x034W\x80c%\xDF\x92.\x14a\x03IW\x80c*\xA6\xD8\x88\x14a\x03iW[__\xFD[a\x02\xEE\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\x02\xEEa\x03\x0F6`\x04aLvV[a\x08 V[a\x03'a\x03\"6`\x04aM\rV[a\x08\xA8V[`@Qa\x02\xF8\x91\x90aMKV[a\x03Ga\x03B6`\x04aM\x82V[a\x0B9V[\0[a\x03\\a\x03W6`\x04aO\x17V[a\x0C\x13V[`@Qa\x02\xF8\x91\x90aO\xC5V[a\x03Ga\x03w6`\x04aP'V[a\rsV[a\x03\xA3\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[`@Qa\x02\xF8\x91\x90aP\x85V[a\x03Ga\x03\xBE6`\x04aP\x99V[a\x0E\xCAV[a\x03\xA3a\x03\xD16`\x04aP\xDCV[a\x10\x1BV[a\x03\xE9a\x03\xE46`\x04aP\xDCV[a\x10;V[`@Q\x90\x15\x15\x81R` \x01a\x02\xF8V[a\x03\xA3\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\xA3\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\x03Ga\x04U6`\x04aP\xF7V[a\x10ZV[a\x04ba\x10\xC8V[`@Qa\x02\xF8\x91\x90aQ{V[a\x03Ga\x10\xF8V[a\x02\xEEa\x04\x856`\x04aRIV[a\x11\xACV[a\x03\xE9a\x04\x986`\x04aRzV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x02\xEEV[a\x04\xC8a\x04\xC36`\x04aM\x82V[a\x11\xDBV[`@Qa\x02\xF8\x92\x91\x90aSQV[a\x04\xE9a\x04\xE46`\x04aP\xDCV[a\x11\xF8V[`@Qa\x02\xF8\x92\x91\x90aS\xC3V[a\x03Ga\x05\x056`\x04aTDV[a\x13\"V[a\x03Ga\x05\x186`\x04aT\x9DV[a\x14\x9AV[a\x03\xA3a\x05+6`\x04aP\xDCV[`\x9A` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05Xa\x05S6`\x04aP\xDCV[a\x160V[`@Qa\x02\xF8\x92\x91\x90aT\xDCV[a\x03\xE9a\x05t6`\x04aP\xDCV[a\x19\x1DV[a\x02\xEEa\x05\x876`\x04aP\xF7V[a\x19UV[a\x03Ga\x19\xFAV[a\x02\xEEa\x05\xA26`\x04aP\xF7V[`\x98` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03Ga\x05\xCC6`\x04aT\xEEV[a\x1A\x0BV[a\x03\xA3\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\xA3V[a\x03\\a\x06\x176`\x04aU>V[a\x1A\xA1V[a\x03\xA3_Q` a]\x9A_9_Q\x90_R\x81V[a\x03Ga\x06>6`\x04aU\x8AV[a\x1BwV[a\x06Va\x06Q6`\x04aM\x82V[a\x1CPV[`@Qa\x02\xF8\x91\x90aV&V[a\x02\xEEa\x06q6`\x04aP\xDCV[`\x9F` R_\x90\x81R`@\x90 T\x81V[a\x03'a\x06\x906`\x04aV8V[a\x1DlV[a\x03\xE9a\x06\xA36`\x04aM\x82V[`\x9E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x03\xE9a\x06\xC56`\x04aW\x1FV[`\x9C` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[a\x02\xEEa\x06\xF26`\x04aP\xF7V[a\x1D\x84V[`@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\x02\xF8V[a\x07>a\x0796`\x04aU>V[a\x1D\xC0V[`@Qa\x02\xF8\x92\x91\x90aWIV[a\x03\xA3\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\x03Ga\x07\x816`\x04aW\x1FV[a 8V[a\x03'a\x07\x946`\x04aP\xDCV[a!SV[a\x03Ga\x07\xA76`\x04aWhV[a\"zV[a\x03Ga\x07\xBA6`\x04aV8V[a\"\xD0V[a\x07\xD2a\x07\xCD6`\x04aW\xDBV[a#;V[`@Qa\x02\xF8\x91\x90aX\x88V[a\x03Ga\x07\xED6`\x04aP\xDCV[a#\xE0V[a\x02\xEEa$YV[a\x03Ga\x08\x086`\x04aM\x82V[a%\x12V[a\x03'a\x08\x1B6`\x04aP\xDCV[a&)V[`@\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\x08\x9E\x90`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a&LV[\x96\x95PPPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x03a\x08\xD4W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08\xDCa&zV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xF5Wa\x08\xF5aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1EW\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*W\x86\x86\x82\x81\x81\x10a\tXWa\tXaX\x9AV[\x90P` \x02\x81\x01\x90a\tj\x91\x90aX\xAEV[a\tx\x90` \x81\x01\x90aX\xCCV[\x90P\x87\x87\x83\x81\x81\x10a\t\x8CWa\t\x8CaX\x9AV[\x90P` \x02\x81\x01\x90a\t\x9E\x91\x90aX\xAEV[a\t\xA8\x90\x80aX\xCCV[\x90P\x14a\t\xC8W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\n23\x84\x8A\x8A\x86\x81\x81\x10a\t\xE0Wa\t\xE0aX\x9AV[\x90P` \x02\x81\x01\x90a\t\xF2\x91\x90aX\xAEV[a\t\xFC\x90\x80aX\xCCV[\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&\xD3\x92PPPV[\x90Pa\x0B\x043\x84\x8A\x8A\x86\x81\x81\x10a\nKWa\nKaX\x9AV[\x90P` \x02\x81\x01\x90a\n]\x91\x90aX\xAEV[a\ng\x90\x80aX\xCCV[\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\n\xACWa\n\xACaX\x9AV[\x90P` \x02\x81\x01\x90a\n\xBE\x91\x90aX\xAEV[a\n\xCC\x90` \x81\x01\x90aX\xCCV[\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(%\x91PPV[\x84\x83\x81Q\x81\x10a\x0B\x16Wa\x0B\x16aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\t>V[PP`\x01`\xC9U\x94\x93PPPPV[`@Qc#}\xFBG`\xE1\x1B\x81R`\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\x90cF\xFB\xF6\x8E\x90a\x0B\x85\x903\x90`\x04\x01aP\x85V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xC4\x91\x90aY\x11V[a\x0B\xE1W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`fT\x81\x81\x16\x81\x14a\x0C\x06W`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x0F\x82a-\x94V[PPV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x9A` R`@\x81 T``\x92\x16\x90a\x0C<\x86\x83\x87a&\xD3V[\x90P_\x85Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0CXWa\x0CXaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\x81W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x86Q\x81\x10\x15a\rfW`\x01`\x01`\xA0\x1B\x03\x88\x16_\x90\x81R`\xA2` R`@\x81 \x88Q\x82\x90\x8A\x90\x85\x90\x81\x10a\x0C\xBCWa\x0C\xBCaX\x9AV[` \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@\x87\x83\x81Q\x81\x10a\r\x0EWa\r\x0EaX\x9AV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a\r(Wa\r(aX\x9AV[` \x02` \x01\x01Q\x83a-\xD1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x83\x83\x81Q\x81\x10a\rRWa\rRaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\x0C\x86V[P\x92PPP[\x93\x92PPPV[a\r{a&zV[a\r\x843a\x10;V[\x15a\r\xA2W`@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\x0E\x0CW__\xFD[PZ\xF1\x15\x80\x15a\x0E\x1EW=__>=_\xFD[PPPPa\x0E,3\x85a-\xEFV[a\x0E633a.QV[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x85`@Qa\x0Eo\x91\x90aP\x85V[`@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\x0E\xB2\x92\x91\x90aY,V[`@Q\x80\x91\x03\x90\xA2a\x0E\xC4`\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)WP3`\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\x0FFW`@Qc\x04R\x06\xA5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0FNa&zV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x9A` R`@\x80\x82 T\x90Qc\x15&g\xD9`\xE3\x1B\x81R\x90\x83\x16\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\x90a\x0F\xB1\x90\x85\x90\x89\x90`\x04\x01aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xCCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xF0\x91\x90aYtV[\x90P_a\x0F\xFE\x87\x87\x84a0\xF2V[\x90Pa\x10\x0E\x83\x88\x88\x88\x88\x86a1\xD5V[PPPa\x0E\xC4`\x01`\xC9UV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x9A` R`@\x90 T\x16\x15\x15\x90V[\x81a\x10d\x81a3\x1AV[a\x10\x81W`@Qc\x93-\x94\xF7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\x89a&zV[a\x10\x92\x83a\x19\x1DV[a\x10\xAFW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xB9\x83\x83a-\xEFV[a\x10\xC3`\x01`\xC9UV[PPPV[``a\x10\xF3\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\0a3\xC4V[\x90P\x90V[`@Qc#}\xFBG`\xE1\x1B\x81R`\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\x90cF\xFB\xF6\x8E\x90a\x11D\x903\x90`\x04\x01aP\x85V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11_W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x83\x91\x90aY\x11V[a\x11\xA0W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xAA_\x19a-\x94V[V[_\x81`@Q` \x01a\x11\xBE\x91\x90aV&V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x11\xE3aK7V[``a\x11\xEE\x83a4\x01V[\x90\x94\x90\x93P\x91PPV[``\x80_a\x12\x05\x84a&)V[\x80Q\x90\x91P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\"Wa\x12\"aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12[W\x81` \x01[a\x12HaK7V[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12@W\x90P[P\x93P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12vWa\x12vaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA9W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12\x94W\x90P[P\x92P_[\x81\x81\x10\x15a\x13\x1AWa\x12\xD8\x83\x82\x81Q\x81\x10a\x12\xCBWa\x12\xCBaX\x9AV[` \x02` \x01\x01Qa4\x01V[\x86\x83\x81Q\x81\x10a\x12\xEAWa\x12\xEAaX\x9AV[` \x02` \x01\x01\x86\x84\x81Q\x81\x10a\x13\x03Wa\x13\x03aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01\x91\x90\x91RR`\x01\x01a\x12\xAEV[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\x13kW`@Qc#\xD8q\xA5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13sa&zV[`\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\xB1\x90`\x01`\x01`@\x1B\x03\x80\x86\x16\x90\x85\x16a6TV[\x90P_a\x13\xC0\x86\x86\x86\x86a6lV[\x90P_a\x13\xCD\x82\x84aY\xA3V[\x90Pa\x13\xDB\x87_\x88\x86a7)V[`@\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\x14+\x87a7\xA3V[`@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\x14vW__\xFD[PZ\xF1\x15\x80\x15a\x14\x88W=__>=_\xFD[PPPPPPPPa\x0E\xC4`\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\x14\xE3W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xEBa&zV[a\x14\xF4\x83a\x10;V[\x15a\x10\xB9W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x9A` R`@\x80\x82 T\x90Qc\x15&g\xD9`\xE3\x1B\x81R\x90\x83\x16\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\x90a\x15i\x90\x85\x90_Q` a]\x9A_9_Q\x90_R\x90`\x04\x01aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x84W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xA8\x91\x90aYtV[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 _Q` a]\x9A_9_Q\x90_R\x84R\x82R\x80\x83 \x81Q\x92\x83\x01\x90\x91RT\x81R\x91\x92Pa\x16\x07\x86a\x15\xFF`\x01`\x01`@\x1B\x03\x80\x87\x16\x90\x89\x16a8\x0EV[\x84\x91\x90a8\"V[\x90Pa\x16\"\x84\x88_Q` a]\x9A_9_Q\x90_R\x84a7)V[PPPPa\x10\xC3`\x01`\xC9UV[``\x80__\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\xF6I\xDD\x86`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16\x81\x91\x90aP\x85V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9BW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x16\xC2\x91\x90\x81\x01\x90aZ\x11V[\x91P\x91P_\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\xFE$:\x17\x87_Q` a]\x9A_9_Q\x90_R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\"\x92\x91\x90aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17=W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17a\x91\x90aZ\xCCV[\x90P\x80_\x03a\x17uWP\x90\x94\x90\x93P\x91PPV[_\x83Q`\x01a\x17\x84\x91\x90aY\xA3V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\x9BWa\x17\x9BaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17\xC4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01a\x17\xD6\x91\x90aY\xA3V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xEDWa\x17\xEDaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18\x16W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_Q` a]\x9A_9_Q\x90_R\x82\x86Q\x81Q\x81\x10a\x18:Wa\x18:aX\x9AV[` \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\x18nWa\x18naX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x85Q\x81\x10\x15a\x19\x0FW\x85\x81\x81Q\x81\x10a\x18\x96Wa\x18\x96aX\x9AV[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x18\xB0Wa\x18\xB0aX\x9AV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81\x81Q\x81\x10a\x18\xE2Wa\x18\xE2aX\x9AV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x18\xFCWa\x18\xFCaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x18{V[P\x90\x97\x90\x96P\x94PPPPPV[_`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x19OWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[__\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\xA93>\xC8\x85\x85`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19\xA5\x92\x91\x90aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19\xC0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xE4\x91\x90aYtV[\x90Pa\x19\xF2\x84\x84\x83_a6lV[\x94\x93PPPPV[a\x1A\x02a8@V[a\x11\xAA_a8\x9AV[\x82a\x1A\x15\x81a3\x1AV[a\x1A2W`@Qc\x93-\x94\xF7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A;\x84a\x19\x1DV[a\x1AXW`@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\x93\x92\x91\x90aY,V[`@Q\x80\x91\x03\x90\xA2PPPPV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1A\xBDWa\x1A\xBDaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\xE6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1BoW`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x98` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x1B\"Wa\x1B\"aX\x9AV[` \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\\Wa\x1B\\aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\xEBV[P\x93\x92PPPV[`fT`\x02\x90`\x04\x90\x81\x16\x03a\x1B\xA0W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xA8a&zV[\x85_[\x81\x81\x10\x15a\x1C;Wa\x1C3\x89\x89\x83\x81\x81\x10a\x1B\xC8Wa\x1B\xC8aX\x9AV[\x90P` \x02\x81\x01\x90a\x1B\xDA\x91\x90aZ\xE3V[a\x1B\xE3\x90aZ\xF7V[\x88\x88\x84\x81\x81\x10a\x1B\xF5Wa\x1B\xF5aX\x9AV[\x90P` \x02\x81\x01\x90a\x1C\x07\x91\x90aX\xCCV[\x88\x88\x86\x81\x81\x10a\x1C\x19Wa\x1C\x19aX\x9AV[\x90P` \x02\x01` \x81\x01\x90a\x1C.\x91\x90a[\x02V[a8\xEBV[`\x01\x01a\x1B\xABV[PPa\x1CG`\x01`\xC9UV[PPPPPPPV[a\x1CXaK7V[_\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\x1D\x06W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x1C\xE8W[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\\W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\x1DHW[PPPPP\x81RPP\x90P\x91\x90PV[``a\x1Dw3a!SV[\x90Pa\rl\x84\x84\x84a\"\xD0V[`\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\rl\x90a=-V[``\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xDCWa\x1D\xDCaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x05W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E!Wa\x1E!aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EJW\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\x1Eu\x86\x83\x87a&\xD3V[\x90P_[\x85Q\x81\x10\x15a -W_a\x1E\xA5\x87\x83\x81Q\x81\x10a\x1E\x98Wa\x1E\x98aX\x9AV[` \x02` \x01\x01Qa7\xA3V[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16c\xFE$:\x17\x89\x89\x85\x81Q\x81\x10a\x1E\xC9Wa\x1E\xC9aX\x9AV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\xEE\x92\x91\x90aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\tW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F-\x91\x90aZ\xCCV[\x85\x83\x81Q\x81\x10a\x1F?Wa\x1F?aX\x9AV[` \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\x1F\x82Wa\x1F\x82aX\x9AV[` \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 \x06\x86\x84\x81Q\x81\x10a\x1F\xD4Wa\x1F\xD4aX\x9AV[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a\x1F\xEEWa\x1F\xEEaX\x9AV[` \x02` \x01\x01Q\x83a8\"\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x87\x84\x81Q\x81\x10a \x18Wa \x18aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x1EyV[PPP[\x92P\x92\x90PV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a VWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a oWP0;\x15\x80\x15a oWP_T`\xFF\x16`\x01\x14[a \xD7W`@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 \xF8W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a!\x01\x82a-\x94V[a!\n\x83a8\x9AV[\x80\x15a\x10\xC3W_\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!]a&zV[a!f\x82a\x10;V[a!\x83W`@Qc\xA5\xC7\xC4E`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a!\x8C\x82a\x19\x1DV[\x15a!\xAAW`@Qc\x11\xCA35`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3`\x01`\x01`\xA0\x1B\x03\x83\x16\x14a\"`W`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x9A` R`@\x90 T\x16a!\xDD\x81a3\x1AV[\x80a\"\x01WPa!\xEC\x81a\x10\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14[a\"\x1EW`@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\"i\x82a=LV[\x90Pa\"u`\x01`\xC9UV[\x91\x90PV[`fT`\x02\x90`\x04\x90\x81\x16\x03a\"\xA3W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\"\xABa&zV[a\"\xBFa\"\xB7\x86aZ\xF7V[\x85\x85\x85a8\xEBV[a\"\xC9`\x01`\xC9UV[PPPPPV[a\"\xD8a&zV[a\"\xE13a\x10;V[\x15a\"\xFFW`@Qc;\xF2\xB5\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\x08\x83a\x19\x1DV[a#%W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#13\x84\x84\x84a?\xABV[a\x10\xB93\x84a.QV[``_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#WWa#WaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#\x8AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a#uW\x90P[P\x90P_[\x84Q\x81\x10\x15a\x1BoWa#\xBB\x85\x82\x81Q\x81\x10a#\xADWa#\xADaX\x9AV[` \x02` \x01\x01Q\x85a\x1A\xA1V[\x82\x82\x81Q\x81\x10a#\xCDWa#\xCDaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a#\x8FV[a#\xE8a8@V[`\x01`\x01`\xA0\x1B\x03\x81\x16a$MW`@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 \xCEV[a$V\x81a8\x9AV[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$\xC6a@jV[\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%nW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a%\x92\x91\x90a[\x1DV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a%\xC3W`@QcyH!\xFF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`fT\x80\x19\x82\x19\x81\x16\x14a%\xEAW`@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\x19O\x90aA\x06V[_a&Ua$YV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01a\x11\xBEV[`\x02`\xC9T\x03a&\xCCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a \xCEV[`\x02`\xC9UV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xEFWa&\xEFaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a'\x18W\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'j\x92\x91\x90a[8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a'\x84W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra'\xAB\x91\x90\x81\x01\x90a[[V[\x90P_[\x84Q\x81\x10\x15a(\x1AWa'\xF5\x87\x86\x83\x81Q\x81\x10a'\xCEWa'\xCEaX\x9AV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a'\xE8Wa'\xE8aX\x9AV[` \x02` \x01\x01Qa0\xF2V[\x83\x82\x81Q\x81\x10a(\x07Wa(\x07aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a'\xAFV[P\x90\x95\x94PPPPPV[_`\x01`\x01`\xA0\x1B\x03\x86\x16a(MW`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q_\x03a(nW`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x88Wa(\x88aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a(\xB1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x85Q`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xCEWa(\xCEaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a(\xF7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x86Q\x81\x10\x15a+\xC7W_a)\x1B\x88\x83\x81Q\x81\x10a\x1E\x98Wa\x1E\x98aX\x9AV[\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)TWa)TaX\x9AV[` \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)\xC0\x88\x84\x81Q\x81\x10a)\xA6Wa)\xA6aX\x9AV[` \x02` \x01\x01Q\x88\x85\x81Q\x81\x10a\x1F\xEEWa\x1F\xEEaX\x9AV[\x84\x84\x81Q\x81\x10a)\xD2Wa)\xD2aX\x9AV[` \x02` \x01\x01\x81\x81RPPa*\n\x88\x84\x81Q\x81\x10a)\xF3Wa)\xF3aX\x9AV[` \x02` \x01\x01Q\x82aA\x12\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x85\x84\x81Q\x81\x10a*\x1CWa*\x1CaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01`\x01`\xA0\x1B\x03\x8A\x16\x15a*\xB1Wa*s\x8A\x8A\x85\x81Q\x81\x10a*LWa*LaX\x9AV[` \x02` \x01\x01Q\x87\x86\x81Q\x81\x10a*fWa*faX\x9AV[` \x02` \x01\x01QaA&V[a*\xB1\x8A\x8C\x8B\x86\x81Q\x81\x10a*\x8AWa*\x8AaX\x9AV[` \x02` \x01\x01Q\x87\x87\x81Q\x81\x10a*\xA4Wa*\xA4aX\x9AV[` \x02` \x01\x01Qa7)V[_\x82`\x01`\x01`\xA0\x1B\x03\x16crJ\xF4#\x8D\x8C\x87\x81Q\x81\x10a*\xD4Wa*\xD4aX\x9AV[` \x02` \x01\x01Q\x8C\x88\x81Q\x81\x10a*\xEEWa*\xEEaX\x9AV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+\x14\x93\x92\x91\x90a[\xEAV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a+0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+T\x91\x90aZ\xCCV[\x90P\x80_\x03a+\xB9W`\x01`\x01`\xA0\x1B\x03\x8C\x16_\x90\x81R`\xA2` R`@\x81 \x8BQa+\xB9\x92\x90\x8D\x90\x88\x90\x81\x10a+\x8DWa+\x8DaX\x9AV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x90UV[PPP\x80`\x01\x01\x90Pa(\xFCV[P`\x01`\x01`\xA0\x1B\x03\x88\x16_\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a+\xEE\x83a\\\x0EV[\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,T\x82a\x11\xACV[_\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-\n\x92`\x05\x85\x01\x92\x01\x90aK\x90V[P`\xC0\x82\x01Q\x80Qa-&\x91`\x06\x84\x01\x91` \x90\x91\x01\x90aK\xF3V[PPP`\x01`\x01`\xA0\x1B\x03\x8B\x16_\x90\x81R`\xA3` R`@\x90 a-J\x90\x82aA\x90V[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\\&V[`@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\x19\xF2\x82a-\xE9a-\xE2\x87a=-V[\x86\x90aA\x9BV[\x90aA\x9BV[`\x01`\x01`\xA0\x1B\x03\x82\x81\x16_\x81\x81R`\x99` R`@\x90\x81\x90 `\x01\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x93\x85\x16\x93\x90\x93\x17\x90\x92U\x90Q\x7Fw;T\xC0Muo\xCC^g\x81\x11\xF7\xD70\xDE;\xE9\x81\x92\0\x07\x99\xEE\xE3\xD67\x16\x05Z\x87\xC6\x90a&\x1D\x90\x84\x90aP\x85V[`fT_\x90`\x01\x90\x81\x16\x03a.yW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a.\x84\x85a\x160V[\x91P\x91P_a.\x94_\x86\x85a&\xD3V[`\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\x1CGW_Q` a]\x9A_9_Q\x90_R`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a/ Wa/ aX\x9AV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x03a0\x91W`@Qc\xA3\xD7^\t`\xE0\x1B\x81R_\x90`\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\x90c\xA3\xD7^\t\x90a/\x84\x90\x8B\x90`\x04\x01aP\x85V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a/\x9FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a/\xC3\x91\x90aYtV[\x90P_`\xA2_\x8A`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x87\x85\x81Q\x81\x10a/\xFCWa/\xFCaX\x9AV[` \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\x90Pa0p\x85\x84\x81Q\x81\x10a0NWa0NaX\x9AV[` \x02` \x01\x01Q\x83`\x01`\x01`@\x1B\x03\x16\x83a8\"\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x85\x84\x81Q\x81\x10a0\x82Wa0\x82aX\x9AV[` \x02` \x01\x01\x81\x81RPPPP[a0\xEA\x86\x88\x86\x84\x81Q\x81\x10a0\xA8Wa0\xA8aX\x9AV[` \x02` \x01\x01Q_\x87\x86\x81Q\x81\x10a0\xC3Wa0\xC3aX\x9AV[` \x02` \x01\x01Q\x87\x87\x81Q\x81\x10a0\xDDWa0\xDDaX\x9AV[` \x02` \x01\x01Qa1\xD5V[`\x01\x01a.\xEEV[_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\x01a1\xC5W`@Qc\xA3\xD7^\t`\xE0\x1B\x81R_\x90`\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\x90c\xA3\xD7^\t\x90a1f\x90\x88\x90`\x04\x01aP\x85V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a1\x81W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a1\xA5\x91\x90aYtV[\x90Pa1\xBD`\x01`\x01`@\x1B\x03\x84\x81\x16\x90\x83\x16a8\x0EV[\x91PPa\rlV[P`\x01`\x01`@\x1B\x03\x16\x92\x91PPV[\x80_\x03a1\xF5W`@Qc\n3\xBCi`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81\x15a3\x12W`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R a2+\x81\x85\x85\x85aA\xAFV[`@\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\x90a2i\x90a=-V[`@Qa2x\x93\x92\x91\x90a[\xEAV[`@Q\x80\x91\x03\x90\xA1a2\x89\x86a\x10;V[\x15a\x1CGW`\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\x90a2\xC4\x90\x84\x90aY\xA3V[\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\x08\x93\x92\x91\x90a[\xEAV[`@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\x15a3\xA0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19O\x91\x90aY\x11V[``_a3\xD0\x83aB*V[`@\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\taK7V[_\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\x15a4\xBBW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a4\x9DW[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\x11W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a4\xFDW[PPPPP\x81RPP\x91P\x81`\xA0\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a59Wa59aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a5bW\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\x01Qa5\x96\x91\x90a\\PV[\x90P_Cc\xFF\xFF\xFF\xFF\x16\x82c\xFF\xFF\xFF\xFF\x16\x10a5\xC7Wa5\xC2\x84_\x01Q\x85` \x01Q\x86`\xA0\x01Qa&\xD3V[a5\xDEV[a5\xDE\x84_\x01Q\x85` \x01Q\x86`\xA0\x01Q\x85aBQV[\x90P_[\x84`\xA0\x01QQ\x81\x10\x15a\x13\x1AWa6/\x85`\xC0\x01Q\x82\x81Q\x81\x10a6\x08Wa6\x08aX\x9AV[` \x02` \x01\x01Q\x83\x83\x81Q\x81\x10a6\"Wa6\"aX\x9AV[` \x02` \x01\x01QaC\x7FV[\x84\x82\x81Q\x81\x10a6AWa6AaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a5\xE2V[_a6b\x84\x83\x85`\x01aC\x8AV[a\x19\xF2\x90\x85a\\lV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R\x90\x81 \x81\x90a6\x9D\x90aC\xE5V[\x90P_a7\x03`\x01a6\xCF\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\\\x7FV[a6\xD9\x91\x90a\\\x7FV[`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x8C\x16\x83R\x92\x90R \x90aC\xFFV[\x90P_a7\x10\x82\x84a\\lV[\x90Pa7\x1D\x81\x87\x87aD\x1BV[\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\x90a7_\x90\x84\x90a\\lV[\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\x93\x93\x92\x91\x90a[\xEAV[_`\x01`\x01`\xA0\x1B\x03\x82\x16_Q` a]\x9A_9_Q\x90_R\x14a7\xE7W\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\x19OV[\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\rl\x83\x83g\r\xE0\xB6\xB3\xA7d\0\0aD9V[_a\x19\xF2\x82a8:a83\x87a=-V[\x86\x90a8\x0EV[\x90a8\x0EV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11\xAAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a \xCEV[`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\x10W`@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\x14a9FW`@Qc\x16\x11\r5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a9P\x85a\x11\xACV[_\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a9\x81W`@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\x01Qa9\xB4\x91\x90a\\PV[\x90P\x80c\xFF\xFF\xFF\xFF\x16Cc\xFF\xFF\xFF\xFF\x16\x11a9\xE2W`@Qcx\xF6z\xE1`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a9\xF9\x87_\x01Q\x88` \x01Q\x89`\xA0\x01Q\x84aBQV[\x87Q`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\xA3` R`@\x90 \x90\x92Pa:\x1F\x91P\x83aE\x1EV[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:v`\x05\x83\x01\x82aL,V[a:\x83`\x06\x83\x01_aL,V[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:\xCC\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;\x06\x91\x84\x90a&\xD3V[\x90P_[\x88`\xA0\x01QQ\x81\x10\x15a=\"W_a;1\x8A`\xA0\x01Q\x83\x81Q\x81\x10a\x1E\x98Wa\x1E\x98aX\x9AV[\x90P_a;g\x8B`\xC0\x01Q\x84\x81Q\x81\x10a;MWa;MaX\x9AV[` \x02` \x01\x01Q\x87\x85\x81Q\x81\x10a6\"Wa6\"aX\x9AV[\x90P\x80_\x03a;wWPPa=\x1AV[\x87\x15a<EW\x81`\x01`\x01`\xA0\x1B\x03\x16c.\xAEA\x8C\x8C_\x01Q\x8D`\xA0\x01Q\x86\x81Q\x81\x10a;\xA6Wa;\xA6aX\x9AV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a;\xC0Wa;\xC0aX\x9AV[\x90P` \x02\x01` \x81\x01\x90a;\xD5\x91\x90aP\xDCV[`@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<*W__\xFD[PZ\xF1\x15\x80\x15a<<W=__>=_\xFD[PPPPa=\x17V[__\x83`\x01`\x01`\xA0\x1B\x03\x16cP\xFFr%\x8E_\x01Q\x8F`\xA0\x01Q\x88\x81Q\x81\x10a<pWa<paX\x9AV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a<\x97\x93\x92\x91\x90a[\xEAV[`@\x80Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a<\xB2W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a<\xD6\x91\x90a\\\x9BV[\x91P\x91Pa=\x14\x87\x8E_\x01Q\x8F`\xA0\x01Q\x88\x81Q\x81\x10a<\xF8Wa<\xF8aX\x9AV[` \x02` \x01\x01Q\x85\x85\x8B\x8B\x81Q\x81\x10a0\xDDWa0\xDDaX\x9AV[PP[PP[`\x01\x01a;\nV[PPPPPPPPPV[\x80Q_\x90\x15a==W\x81Qa\x19OV[g\r\xE0\xB6\xB3\xA7d\0\0\x92\x91PPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x03a=xW`@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=\xD7\x86a\x160V[\x91P\x91P\x81Q_\x03a=\xEBWPPPa?\xA5V[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a>\x04Wa>\x04aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a>-W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P_a><\x87\x85\x85a&\xD3V[\x90P_[\x83Q\x81\x10\x15a?\x9FW`@\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>\xC0Wa>\xC0aX\x9AV[` \x02` \x01\x01Q\x83_\x81Q\x81\x10a>\xDAWa>\xDAaX\x9AV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x85\x84\x81Q\x81\x10a?\x0CWa?\x0CaX\x9AV[` \x02` \x01\x01Q\x82_\x81Q\x81\x10a?&Wa?&aX\x9AV[` \x02` \x01\x01\x81\x81RPP\x84\x84\x81Q\x81\x10a?DWa?DaX\x9AV[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a?^Wa?^aX\x9AV[` \x02` \x01\x01\x81\x81RPPa?w\x8B\x89\x85\x85\x85a(%V[\x8A\x85\x81Q\x81\x10a?\x89Wa?\x89aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01RPPP`\x01\x01a>@V[PPPPP[P\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80a?\xD3WPa\x0E\xC4V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x90 T`\xFF\x16\x15a@\x17W`@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\"\xC9\x90\x82\x90a@^\x90\x88\x90\x88\x90\x84\x90\x88\x90a\x08 V[\x85Q` \x87\x01QaE)V[``_a@\x96\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\0a3\xC4V[\x90P\x80_\x81Q\x81\x10a@\xAAWa@\xAAaX\x9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10a@\xC8Wa@\xC8aX\x9AV[\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\rl\x83aE{V[_a\rlaA\x1F\x84a=-V[\x83\x90a8\x0EV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 aAU\x90aC\xE5V[\x90Pa\x0E\xC4CaAe\x84\x84aY\xA3V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R \x91\x90aE\xD4V[_a\rl\x83\x83aE\xDFV[_a\rl\x83g\r\xE0\xB6\xB3\xA7d\0\0\x84aD9V[\x82_\x03aA\xDBW`@\x80Q` \x81\x01\x90\x91R\x84T\x81RaA\xD4\x90\x82\x90a-\xE9\x90a=-V[\x84Ua\x0E\xC4V[`@\x80Q` \x81\x01\x90\x91R\x84T\x81R_\x90aA\xF7\x90\x85\x84a8\"V[\x90P_aB\x04\x84\x83aY\xA3V[\x90P_aB\x1F\x84a-\xE9aB\x18\x88\x8AaY\xA3V[\x85\x90aA\x9BV[\x87UPPPPPPPV[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x19OW`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15aBmWaBmaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15aB\x96W\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\x01aB\xEA\x93\x92\x91\x90a\\\xBDV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aC\x04W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@RaC+\x91\x90\x81\x01\x90a[[V[\x90P_[\x85Q\x81\x10\x15aCsWaCN\x88\x87\x83\x81Q\x81\x10a'\xCEWa'\xCEaX\x9AV[\x83\x82\x81Q\x81\x10aC`WaC`aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01aC/V[P\x90\x96\x95PPPPPPV[_a\rl\x83\x83a8\x0EV[__aC\x97\x86\x86\x86aD9V[\x90P`\x01\x83`\x02\x81\x11\x15aC\xADWaC\xADa\\\xF6V[\x14\x80\x15aC\xC9WP_\x84\x80aC\xC4WaC\xC4a]\nV[\x86\x88\t\x11[\x15aC\xDCWaC\xD9`\x01\x82aY\xA3V[\x90P[\x95\x94PPPPPV[_aC\xF0\x82\x82aF+V[`\x01`\x01`\xE0\x1B\x03\x16\x92\x91PPV[_aD\x0B\x83\x83\x83aFoV[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[_a\x19\xF2aD)\x83\x85a]\x1EV[\x85\x90`\x01`\x01`@\x1B\x03\x16a8\x0EV[_\x80\x80_\x19\x85\x87\t\x85\x87\x02\x92P\x82\x81\x10\x83\x82\x03\x03\x91PP\x80_\x03aDpW\x83\x82\x81aDfWaDfa]\nV[\x04\x92PPPa\rlV[\x80\x84\x11aD\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01RtMath: mulDiv overflow`X\x1B`D\x82\x01R`d\x01a \xCEV[_\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\rl\x83\x83aF\xB7V[B\x81\x10\x15aEJW`@Qc\x08\x19\xBD\xCD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[aE^`\x01`\x01`\xA0\x1B\x03\x85\x16\x84\x84aG\x9AV[a\x0E\xC4W`@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\x15aE\xC8W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11aE\xB4W[PPPPP\x90P\x91\x90PV[a\x10\xC3\x83\x83\x83aG\xEEV[_\x81\x81R`\x01\x83\x01` R`@\x81 TaF$WP\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\x19OV[P_a\x19OV[\x81T_\x90\x80\x15aFgWaFQ\x84aFD`\x01\x84a\\lV[_\x91\x82R` \x90\x91 \x01\x90V[T`\x01` \x1B\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x19\xF2V[P\x90\x92\x91PPV[\x82T_\x90\x81aF\x80\x86\x86\x83\x85aH\xF1V[\x90P\x80\x15aF\xADWaF\x97\x86aFD`\x01\x84a\\lV[T`\x01` \x1B\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x08\x9EV[P\x91\x94\x93PPPPV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x80\x15aG\x91W_aF\xD9`\x01\x83a\\lV[\x85T\x90\x91P_\x90aF\xEC\x90`\x01\x90a\\lV[\x90P\x81\x81\x14aGKW_\x86_\x01\x82\x81T\x81\x10aG\nWaG\naX\x9AV[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10aG*WaG*aX\x9AV[_\x91\x82R` \x80\x83 \x90\x91\x01\x92\x90\x92U\x91\x82R`\x01\x88\x01\x90R`@\x90 \x83\x90U[\x85T\x86\x90\x80aG\\WaG\\a]=V[`\x01\x90\x03\x81\x81\x90_R` _ \x01_\x90U\x90U\x85`\x01\x01_\x86\x81R` \x01\x90\x81R` \x01_ _\x90U`\x01\x93PPPPa\x19OV[_\x91PPa\x19OV[___aG\xA7\x85\x85aIDV[\x90\x92P\x90P_\x81`\x04\x81\x11\x15aG\xBFWaG\xBFa\\\xF6V[\x14\x80\x15aG\xDDWP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x80a\x08\x9EWPa\x08\x9E\x86\x86\x86aI\x83V[\x82T\x80\x15aH\xA4W_aH\x06\x85aFD`\x01\x85a\\lV[`@\x80Q\x80\x82\x01\x90\x91R\x90Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x84R`\x01` \x1B\x90\x92\x04`\x01`\x01`\xE0\x1B\x03\x16` \x84\x01R\x91\x92P\x90\x85\x16\x10\x15aHXW`@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\x03aH\xA2W\x82aHy\x86aFD`\x01\x86a\\lV[\x80T`\x01`\x01`\xE0\x1B\x03\x92\x90\x92\x16`\x01` \x1B\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\x16`\x01` \x1B\x02\x91\x90\x92\x16\x17\x91\x01UV[_[\x81\x83\x10\x15a\x1BoW_aI\x06\x84\x84aJjV[_\x87\x81R` \x90 \x90\x91Pc\xFF\xFF\xFF\xFF\x86\x16\x90\x82\x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15aI0W\x80\x92PaI>V[aI;\x81`\x01aY\xA3V[\x93P[PaH\xF3V[__\x82Q`A\x03aIxW` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1AaIl\x87\x82\x85\x85aJ\x84V[\x94P\x94PPPPa 1V[P_\x90P`\x02a 1V[___\x85`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x86\x86`@Q`$\x01aI\xAB\x92\x91\x90a]QV[`@\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\x90QaI\xE9\x91\x90a]iV[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14aJ!W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>aJ&V[``\x91P[P\x91P\x91P\x81\x80\x15aJ:WP` \x81Q\x10\x15[\x80\x15a\x08\x9EWP\x80Qc\x0B\x13]?`\xE1\x1B\x90aJ_\x90\x83\x01` \x90\x81\x01\x90\x84\x01aZ\xCCV[\x14\x96\x95PPPPPPV[_aJx`\x02\x84\x84\x18a]zV[a\rl\x90\x84\x84\x16aY\xA3V[_\x80o\xA2\xA8\x91\x8C\xA8[\xAF\xE2 \x16\xD0\xB9\x97\xE4\xDF``\x01`\xFF\x1B\x03\x83\x11\x15aJ\xAFWP_\x90P`\x03aK.V[`@\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\0W=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aK(W_`\x01\x92P\x92PPaK.V[\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\x15aK\xE3W\x91` \x02\x82\x01[\x82\x81\x11\x15aK\xE3W\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\x90aK\xAEV[PaK\xEF\x92\x91PaLCV[P\x90V[\x82\x80T\x82\x82U\x90_R` _ \x90\x81\x01\x92\x82\x15aK\xE3W\x91` \x02\x82\x01[\x82\x81\x11\x15aK\xE3W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90aL\x11V[P\x80T_\x82U\x90_R` _ \x90\x81\x01\x90a$V\x91\x90[[\x80\x82\x11\x15aK\xEFW_\x81U`\x01\x01aLDV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a$VW__\xFD[\x805a\"u\x81aLWV[_____`\xA0\x86\x88\x03\x12\x15aL\x8AW__\xFD[\x855aL\x95\x81aLWV[\x94P` \x86\x015aL\xA5\x81aLWV[\x93P`@\x86\x015aL\xB5\x81aLWV[\x94\x97\x93\x96P\x93\x94``\x81\x015\x94P`\x80\x015\x92\x91PPV[__\x83`\x1F\x84\x01\x12aL\xDDW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aL\xF3W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a 1W__\xFD[__` \x83\x85\x03\x12\x15aM\x1EW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aM3W__\xFD[aM?\x85\x82\x86\x01aL\xCDV[\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(\x1AW\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01aMdV[_` \x82\x84\x03\x12\x15aM\x92W__\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\x15aM\xCFWaM\xCFaM\x99V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aM\xCFWaM\xCFaM\x99V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aN\x1FWaN\x1FaM\x99V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15aN?WaN?aM\x99V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12aNXW__\xFD[\x815aNkaNf\x82aN'V[aM\xF7V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aN\x8CW__\xFD[` \x85\x01[\x83\x81\x10\x15aN\xB2W\x805aN\xA4\x81aLWV[\x83R` \x92\x83\x01\x92\x01aN\x91V[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12aN\xCBW__\xFD[\x815aN\xD9aNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aN\xFAW__\xFD[` \x85\x01[\x83\x81\x10\x15aN\xB2W\x805\x83R` \x92\x83\x01\x92\x01aN\xFFV[___``\x84\x86\x03\x12\x15aO)W__\xFD[\x835aO4\x81aLWV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aONW__\xFD[aOZ\x86\x82\x87\x01aNIV[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aOuW__\xFD[aO\x81\x86\x82\x87\x01aN\xBCV[\x91PP\x92P\x92P\x92V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15aO\xBBW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01aO\x9DV[P\x93\x94\x93PPPPV[` \x81R_a\rl` \x83\x01\x84aO\x8BV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\"uW__\xFD[__\x83`\x1F\x84\x01\x12aO\xFAW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\x10W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a 1W__\xFD[____``\x85\x87\x03\x12\x15aP:W__\xFD[\x845aPE\x81aLWV[\x93PaPS` \x86\x01aO\xD7V[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aPmW__\xFD[aPy\x87\x82\x88\x01aO\xEAV[\x95\x98\x94\x97P\x95PPPPV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[____`\x80\x85\x87\x03\x12\x15aP\xACW__\xFD[\x845aP\xB7\x81aLWV[\x93P` \x85\x015aP\xC7\x81aLWV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[_` \x82\x84\x03\x12\x15aP\xECW__\xFD[\x815a\rl\x81aLWV[__`@\x83\x85\x03\x12\x15aQ\x08W__\xFD[\x825aQ\x13\x81aLWV[\x91P` \x83\x015aQ#\x81aLWV[\x80\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15aQHW\x81\x81\x01Q\x83\x82\x01R` \x01aQ0V[PP_\x91\x01RV[_\x81Q\x80\x84RaQg\x81` \x86\x01` \x86\x01aQ.V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\rl` \x83\x01\x84aQPV[_`\xE0\x82\x84\x03\x12\x15aQ\x9DW__\xFD[aQ\xA5aM\xADV[\x90PaQ\xB0\x82aLkV[\x81RaQ\xBE` \x83\x01aLkV[` \x82\x01RaQ\xCF`@\x83\x01aLkV[`@\x82\x01R``\x82\x81\x015\x90\x82\x01RaQ\xEA`\x80\x83\x01aO\xD7V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\x07W__\xFD[aR\x13\x84\x82\x85\x01aNIV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR1W__\xFD[aR=\x84\x82\x85\x01aN\xBCV[`\xC0\x83\x01RP\x92\x91PPV[_` \x82\x84\x03\x12\x15aRYW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aRnW__\xFD[a\x19\xF2\x84\x82\x85\x01aQ\x8DV[_` \x82\x84\x03\x12\x15aR\x8AW__\xFD[\x815`\xFF\x81\x16\x81\x14a\rlW__\xFD[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15aO\xBBW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01aR\xACV[\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\x1E\x90\x85\x01\x82c\xFF\xFF\xFF\xFF\x16\x90RV[P`\xA0\x82\x01Q`\xE0`\xA0\x85\x01RaS8`\xE0\x85\x01\x82aR\x9AV[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01RaC\xDC\x82\x82aO\x8BV[`@\x81R_aSc`@\x83\x01\x85aR\xD3V[\x82\x81\x03` \x84\x01RaC\xDC\x81\x85aO\x8BV[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15aCsW`\x1F\x19\x85\x84\x03\x01\x88RaS\xAD\x83\x83QaO\x8BV[` \x98\x89\x01\x98\x90\x93P\x91\x90\x91\x01\x90`\x01\x01aS\x91V[_`@\x82\x01`@\x83R\x80\x85Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15aT\x1AW`_\x19\x87\x86\x03\x01\x84RaT\x05\x85\x83QaR\xD3V[\x94P` \x93\x84\x01\x93\x91\x90\x91\x01\x90`\x01\x01aS\xE9V[PPPP\x82\x81\x03` \x84\x01RaC\xDC\x81\x85aSuV[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a$VW__\xFD[____`\x80\x85\x87\x03\x12\x15aTWW__\xFD[\x845aTb\x81aLWV[\x93P` \x85\x015aTr\x81aLWV[\x92P`@\x85\x015aT\x82\x81aT0V[\x91P``\x85\x015aT\x92\x81aT0V[\x93\x96\x92\x95P\x90\x93PPV[___``\x84\x86\x03\x12\x15aT\xAFW__\xFD[\x835aT\xBA\x81aLWV[\x92P` \x84\x015\x91P`@\x84\x015aT\xD1\x81aT0V[\x80\x91PP\x92P\x92P\x92V[`@\x81R_aSc`@\x83\x01\x85aR\x9AV[___`@\x84\x86\x03\x12\x15aU\0W__\xFD[\x835aU\x0B\x81aLWV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aU%W__\xFD[aU1\x86\x82\x87\x01aO\xEAV[\x94\x97\x90\x96P\x93\x94PPPPV[__`@\x83\x85\x03\x12\x15aUOW__\xFD[\x825aUZ\x81aLWV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aUtW__\xFD[aU\x80\x85\x82\x86\x01aNIV[\x91PP\x92P\x92\x90PV[______``\x87\x89\x03\x12\x15aU\x9FW__\xFD[\x865`\x01`\x01`@\x1B\x03\x81\x11\x15aU\xB4W__\xFD[aU\xC0\x89\x82\x8A\x01aL\xCDV[\x90\x97P\x95PP` \x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aU\xDEW__\xFD[aU\xEA\x89\x82\x8A\x01aL\xCDV[\x90\x95P\x93PP`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV\x08W__\xFD[aV\x14\x89\x82\x8A\x01aL\xCDV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[` \x81R_a\rl` \x83\x01\x84aR\xD3V[___``\x84\x86\x03\x12\x15aVJW__\xFD[\x835aVU\x81aLWV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aVoW__\xFD[\x84\x01`@\x81\x87\x03\x12\x15aV\x80W__\xFD[aV\x88aM\xD5V[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aV\x9DW__\xFD[\x82\x01`\x1F\x81\x01\x88\x13aV\xADW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aV\xC6WaV\xC6aM\x99V[aV\xD9`\x1F\x82\x01`\x1F\x19\x16` \x01aM\xF7V[\x81\x81R\x89` \x83\x85\x01\x01\x11\x15aV\xEDW__\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\x15aW0W__\xFD[\x825aW;\x81aLWV[\x94` \x93\x90\x93\x015\x93PPPV[`@\x81R_aSc`@\x83\x01\x85aO\x8BV[\x80\x15\x15\x81\x14a$VW__\xFD[____``\x85\x87\x03\x12\x15aW{W__\xFD[\x845`\x01`\x01`@\x1B\x03\x81\x11\x15aW\x90W__\xFD[\x85\x01`\xE0\x81\x88\x03\x12\x15aW\xA1W__\xFD[\x93P` \x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aW\xBBW__\xFD[aW\xC7\x87\x82\x88\x01aL\xCDV[\x90\x94P\x92PP`@\x85\x015aT\x92\x81aW[V[__`@\x83\x85\x03\x12\x15aW\xECW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aX\x01W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13aX\x11W__\xFD[\x805aX\x1FaNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15aX@W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aXkW\x835aXZ\x81aLWV[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90aXGV[\x94PPPP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aUtW__\xFD[` \x81R_a\rl` \x83\x01\x84aSuV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x825`^\x19\x836\x03\x01\x81\x12aX\xC2W__\xFD[\x91\x90\x91\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12aX\xE1W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aX\xFAW__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a 1W__\xFD[_` \x82\x84\x03\x12\x15aY!W__\xFD[\x81Qa\rl\x81aW[V[` \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[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[_` \x82\x84\x03\x12\x15aY\x84W__\xFD[\x81Qa\rl\x81aT0V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19OWa\x19OaY\x8FV[_\x82`\x1F\x83\x01\x12aY\xC5W__\xFD[\x81QaY\xD3aNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aY\xF4W__\xFD[` \x85\x01[\x83\x81\x10\x15aN\xB2W\x80Q\x83R` \x92\x83\x01\x92\x01aY\xF9V[__`@\x83\x85\x03\x12\x15aZ\"W__\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15aZ7W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13aZGW__\xFD[\x80QaZUaNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15aZvW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aZ\xA1W\x83QaZ\x90\x81aLWV[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90aZ}V[\x80\x95PPPPP` \x83\x01Q`\x01`\x01`@\x1B\x03\x81\x11\x15aZ\xC0W__\xFD[aU\x80\x85\x82\x86\x01aY\xB6V[_` \x82\x84\x03\x12\x15aZ\xDCW__\xFD[PQ\x91\x90PV[_\x825`\xDE\x19\x836\x03\x01\x81\x12aX\xC2W__\xFD[_a\x19O6\x83aQ\x8DV[_` \x82\x84\x03\x12\x15a[\x12W__\xFD[\x815a\rl\x81aW[V[_` \x82\x84\x03\x12\x15a[-W__\xFD[\x81Qa\rl\x81aLWV[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R_\x90a\x19\xF2\x90\x83\x01\x84aR\x9AV[_` \x82\x84\x03\x12\x15a[kW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[\x80W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a[\x90W__\xFD[\x80Qa[\x9EaNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a[\xBFW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x08\x9EW\x83Qa[\xD9\x81aT0V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a[\xC6V[`\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\\\x1FWa\\\x1FaY\x8FV[P`\x01\x01\x90V[\x83\x81R``` \x82\x01R_a\\>``\x83\x01\x85aR\xD3V[\x82\x81\x03`@\x84\x01Ra\x08\x9E\x81\x85aO\x8BV[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x19OWa\x19OaY\x8FV[\x81\x81\x03\x81\x81\x11\x15a\x19OWa\x19OaY\x8FV[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x19OWa\x19OaY\x8FV[__`@\x83\x85\x03\x12\x15a\\\xACW__\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R``` \x82\x01\x81\x90R_\x90a\\\xE0\x90\x83\x01\x85aR\x9AV[\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\x19OWa\x19OaY\x8FV[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[\x82\x81R`@` \x82\x01R_a\x19\xF2`@\x83\x01\x84aQPV[_\x82QaX\xC2\x81\x84` \x87\x01aQ.V[_\x82a]\x94WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V\xFE\0\0\0\0\0\0\0\0\0\0\0\0\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\xA2dipfsX\"\x12 \xE1\xC0a;g\xB7\xD2\x91\xDB\xD5\x1E\x9B\x97\xADY&\x81\xC3\x91\xBC^\xA8\x83\xC6k\xC8r\x8E\xBB\xDE\xED\xD4dsolcC\0\x08\x1B\x003",
3095    );
3096    /// The runtime bytecode of the contract, as deployed on the network.
3097    ///
3098    /// ```text
3099    ///0x608060405234801561000f575f5ffd5b50600436106102c3575f3560e01c8063715018a611610177578063bfae3fd2116100d5578063e4cc3f901161008f578063e4cc3f9014610799578063eea9064b146107ac578063f0e0e676146107bf578063f2fde38b146107df578063f698da25146107f2578063fabc1cbc146107fa578063fd8aa88d1461080d575f5ffd5b8063bfae3fd2146106e4578063c448feb8146106f7578063c978f7ac1461072b578063ca8aa7c71461074c578063cd6dc68714610773578063da8be86414610786575f5ffd5b80639104c319116101315780639104c3191461061c5780639435bb431461063057806399f5371b14610643578063a178848414610663578063a33a343314610682578063b7f06ebe14610695578063bb45fef2146106b7575f5ffd5b8063715018a61461058c578063778e55f31461059457806378296ec5146105be578063886f1195146105d15780638da5cb5b146105f85780639004134714610609575f5ffd5b806354fd4d50116102245780635dd68579116101de5780635dd68579146104d6578063601bb36f146104f757806360a0d1ce1461050a57806365da12641461051d57806366d5ba93146105455780636d70f7ae146105665780636e17444814610579575f5ffd5b806354fd4d501461045a578063595c6a671461046f578063597b36da146104775780635ac86ab71461048a5780635c975abb146104ad5780635d975e88146104b5575f5ffd5b806339b70e381161028057806339b70e381461037c5780633c651cf2146103b05780633cdeb5e0146103c35780633e28391d146103d65780634657e26a146103f95780634665bcda1461042057806354b7c96c14610447575f5ffd5b806304a4f979146102c75780630b9f487a146103015780630dd8dd0214610314578063136439dd1461033457806325df922e146103495780632aa6d88814610369575b5f5ffd5b6102ee7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b6102ee61030f366004614c76565b610820565b610327610322366004614d0d565b6108a8565b6040516102f89190614d4b565b610347610342366004614d82565b610b39565b005b61035c610357366004614f17565b610c13565b6040516102f89190614fc5565b610347610377366004615027565b610d73565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b6040516102f89190615085565b6103476103be366004615099565b610eca565b6103a36103d13660046150dc565b61101b565b6103e96103e43660046150dc565b61103b565b60405190151581526020016102f8565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b6103476104553660046150f7565b61105a565b6104626110c8565b6040516102f8919061517b565b6103476110f8565b6102ee610485366004615249565b6111ac565b6103e961049836600461527a565b606654600160ff9092169190911b9081161490565b6066546102ee565b6104c86104c3366004614d82565b6111db565b6040516102f8929190615351565b6104e96104e43660046150dc565b6111f8565b6040516102f89291906153c3565b610347610505366004615444565b611322565b61034761051836600461549d565b61149a565b6103a361052b3660046150dc565b609a6020525f90815260409020546001600160a01b031681565b6105586105533660046150dc565b611630565b6040516102f89291906154dc565b6103e96105743660046150dc565b61191d565b6102ee6105873660046150f7565b611955565b6103476119fa565b6102ee6105a23660046150f7565b609860209081525f928352604080842090915290825290205481565b6103476105cc3660046154ee565b611a0b565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103a3565b61035c61061736600461553e565b611aa1565b6103a35f516020615d9a5f395f51905f5281565b61034761063e36600461558a565b611b77565b610656610651366004614d82565b611c50565b6040516102f89190615626565b6102ee6106713660046150dc565b609f6020525f908152604090205481565b610327610690366004615638565b611d6c565b6103e96106a3366004614d82565b609e6020525f908152604090205460ff1681565b6103e96106c536600461571f565b609c60209081525f928352604080842090915290825290205460ff1681565b6102ee6106f23660046150f7565b611d84565b60405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016102f8565b61073e61073936600461553e565b611dc0565b6040516102f8929190615749565b6103a37f000000000000000000000000000000000000000000000000000000000000000081565b61034761078136600461571f565b612038565b6103276107943660046150dc565b612153565b6103476107a7366004615768565b61227a565b6103476107ba366004615638565b6122d0565b6107d26107cd3660046157db565b61233b565b6040516102f89190615888565b6103476107ed3660046150dc565b6123e0565b6102ee612459565b610347610808366004614d82565b612512565b61032761081b3660046150dc565b612629565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f9061089e9060e0016040516020818303038152906040528051906020012061264c565b9695505050505050565b6066546060906001906002908116036108d45760405163840a48d560e01b815260040160405180910390fd5b6108dc61267a565b5f836001600160401b038111156108f5576108f5614d99565b60405190808252806020026020018201604052801561091e578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b2a578686828181106109585761095861589a565b905060200281019061096a91906158ae565b6109789060208101906158cc565b905087878381811061098c5761098c61589a565b905060200281019061099e91906158ae565b6109a890806158cc565b9050146109c8576040516343714afd60e01b815260040160405180910390fd5b5f610a3233848a8a868181106109e0576109e061589a565b90506020028101906109f291906158ae565b6109fc90806158cc565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506126d392505050565b9050610b0433848a8a86818110610a4b57610a4b61589a565b9050602002810190610a5d91906158ae565b610a6790806158cc565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610aac57610aac61589a565b9050602002810190610abe91906158ae565b610acc9060208101906158cc565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250889250612825915050565b848381518110610b1657610b1661589a565b60209081029190910101525060010161093e565b5050600160c955949350505050565b60405163237dfb4760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906346fbf68e90610b85903390600401615085565b602060405180830381865afa158015610ba0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc49190615911565b610be157604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c065760405163c61dca5d60e01b815260040160405180910390fd5b610c0f82612d94565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610c3c8683876126d3565b90505f85516001600160401b03811115610c5857610c58614d99565b604051908082528060200260200182016040528015610c81578160200160208202803683370190505b5090505f5b8651811015610d66576001600160a01b0388165f90815260a260205260408120885182908a9085908110610cbc57610cbc61589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610d40878381518110610d0e57610d0e61589a565b6020026020010151858481518110610d2857610d2861589a565b602002602001015183612dd19092919063ffffffff16565b838381518110610d5257610d5261589a565b602090810291909101015250600101610c86565b50925050505b9392505050565b610d7b61267a565b610d843361103b565b15610da257604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e0c575f5ffd5b505af1158015610e1e573d5f5f3e3d5ffd5b50505050610e2c3385612def565b610e363333612e51565b336001600160a01b03167fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c185604051610e6f9190615085565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610eb292919061592c565b60405180910390a2610ec4600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f295750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610f465760405163045206a560e21b815260040160405180910390fd5b610f4e61267a565b6001600160a01b038085165f908152609a602052604080822054905163152667d960e31b8152908316927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890610fb1908590899060040161595a565b602060405180830381865afa158015610fcc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff09190615974565b90505f610ffe8787846130f2565b905061100e8388888888866131d5565b505050610ec4600160c955565b6001600160a01b039081165f908152609960205260409020600101541690565b6001600160a01b039081165f908152609a602052604090205416151590565b816110648161331a565b6110815760405163932d94f760e01b815260040160405180910390fd5b61108961267a565b6110928361191d565b6110af576040516325ec6c1f60e01b815260040160405180910390fd5b6110b98383612def565b6110c3600160c955565b505050565b60606110f37f00000000000000000000000000000000000000000000000000000000000000006133c4565b905090565b60405163237dfb4760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906346fbf68e90611144903390600401615085565b602060405180830381865afa15801561115f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111839190615911565b6111a057604051631d77d47760e21b815260040160405180910390fd5b6111aa5f19612d94565b565b5f816040516020016111be9190615626565b604051602081830303815290604052805190602001209050919050565b6111e3614b37565b60606111ee83613401565b9094909350915050565b6060805f61120584612629565b8051909150806001600160401b0381111561122257611222614d99565b60405190808252806020026020018201604052801561125b57816020015b611248614b37565b8152602001906001900390816112405790505b509350806001600160401b0381111561127657611276614d99565b6040519080825280602002602001820160405280156112a957816020015b60608152602001906001900390816112945790505b5092505f5b8181101561131a576112d88382815181106112cb576112cb61589a565b6020026020010151613401565b8683815181106112ea576112ea61589a565b602002602001018684815181106113035761130361589a565b6020908102919091010191909152526001016112ae565b505050915091565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461136b576040516323d871a560e01b815260040160405180910390fd5b61137361267a565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113b1906001600160401b03808616908516613654565b90505f6113c08686868661366c565b90505f6113cd82846159a3565b90506113db875f8886613729565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61142b876137a3565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b158015611476575f5ffd5b505af1158015611488573d5f5f3e3d5ffd5b5050505050505050610ec4600160c955565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114e357604051633213a66160e21b815260040160405180910390fd5b6114eb61267a565b6114f48361103b565b156110b9576001600160a01b038084165f908152609a602052604080822054905163152667d960e31b8152908316927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec8906115699085905f516020615d9a5f395f51905f529060040161595a565b602060405180830381865afa158015611584573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a89190615974565b6001600160a01b0386165f90815260a2602090815260408083205f516020615d9a5f395f51905f52845282528083208151928301909152548152919250611607866115ff6001600160401b0380871690891661380e565b849190613822565b905061162284885f516020615d9a5f395f51905f5284613729565b505050506110c3600160c955565b6060805f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394f649dd866040518263ffffffff1660e01b81526004016116819190615085565b5f60405180830381865afa15801561169b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116c29190810190615a11565b915091505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fe243a17875f516020615d9a5f395f51905f526040518363ffffffff1660e01b815260040161172292919061595a565b602060405180830381865afa15801561173d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117619190615acc565b9050805f0361177557509094909350915050565b5f8351600161178491906159a3565b6001600160401b0381111561179b5761179b614d99565b6040519080825280602002602001820160405280156117c4578160200160208202803683370190505b5090505f845160016117d691906159a3565b6001600160401b038111156117ed576117ed614d99565b604051908082528060200260200182016040528015611816578160200160208202803683370190505b5090505f516020615d9a5f395f51905f528286518151811061183a5761183a61589a565b60200260200101906001600160a01b031690816001600160a01b031681525050828186518151811061186e5761186e61589a565b60209081029190910101525f5b855181101561190f578581815181106118965761189661589a565b60200260200101518382815181106118b0576118b061589a565b60200260200101906001600160a01b031690816001600160a01b0316815250508481815181106118e2576118e261589a565b60200260200101518282815181106118fc576118fc61589a565b602090810291909101015260010161187b565b509097909650945050505050565b5f6001600160a01b0382161580159061194f57506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9333ec885856040518363ffffffff1660e01b81526004016119a592919061595a565b602060405180830381865afa1580156119c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e49190615974565b90506119f28484835f61366c565b949350505050565b611a02613840565b6111aa5f61389a565b82611a158161331a565b611a325760405163932d94f760e01b815260040160405180910390fd5b611a3b8461191d565b611a58576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611a9392919061592c565b60405180910390a250505050565b60605f82516001600160401b03811115611abd57611abd614d99565b604051908082528060200260200182016040528015611ae6578160200160208202803683370190505b5090505f5b8351811015611b6f576001600160a01b0385165f9081526098602052604081208551909190869084908110611b2257611b2261589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611b5c57611b5c61589a565b6020908102919091010152600101611aeb565b509392505050565b606654600290600490811603611ba05760405163840a48d560e01b815260040160405180910390fd5b611ba861267a565b855f5b81811015611c3b57611c33898983818110611bc857611bc861589a565b9050602002810190611bda9190615ae3565b611be390615af7565b888884818110611bf557611bf561589a565b9050602002810190611c0791906158cc565b888886818110611c1957611c1961589a565b9050602002016020810190611c2e9190615b02565b6138eb565b600101611bab565b5050611c47600160c955565b50505050505050565b611c58614b37565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d0657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611ce8575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611d5c57602002820191905f5260205f20905b815481526020019060010190808311611d48575b5050505050815250509050919050565b6060611d7733612153565b9050610d6c8484846122d0565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610d6c90613d2d565b60608082516001600160401b03811115611ddc57611ddc614d99565b604051908082528060200260200182016040528015611e05578160200160208202803683370190505b50915082516001600160401b03811115611e2157611e21614d99565b604051908082528060200260200182016040528015611e4a578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611e758683876126d3565b90505f5b855181101561202d575f611ea5878381518110611e9857611e9861589a565b60200260200101516137a3565b9050806001600160a01b031663fe243a1789898581518110611ec957611ec961589a565b60200260200101516040518363ffffffff1660e01b8152600401611eee92919061595a565b602060405180830381865afa158015611f09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2d9190615acc565b858381518110611f3f57611f3f61589a565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f898581518110611f8257611f8261589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050612006868481518110611fd457611fd461589a565b6020026020010151858581518110611fee57611fee61589a565b6020026020010151836138229092919063ffffffff16565b8784815181106120185761201861589a565b60209081029190910101525050600101611e79565b5050505b9250929050565b5f54610100900460ff161580801561205657505f54600160ff909116105b8061206f5750303b15801561206f57505f5460ff166001145b6120d75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156120f8575f805461ff0019166101001790555b61210182612d94565b61210a8361389a565b80156110c3575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b606061215d61267a565b6121668261103b565b6121835760405163a5c7c44560e01b815260040160405180910390fd5b61218c8261191d565b156121aa576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b03831614612260576001600160a01b038083165f908152609a6020526040902054166121dd8161331a565b8061220157506121ec8161101b565b6001600160a01b0316336001600160a01b0316145b61221e57604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b61226982613d4c565b9050612275600160c955565b919050565b6066546002906004908116036122a35760405163840a48d560e01b815260040160405180910390fd5b6122ab61267a565b6122bf6122b786615af7565b8585856138eb565b6122c9600160c955565b5050505050565b6122d861267a565b6122e13361103b565b156122ff57604051633bf2b50360e11b815260040160405180910390fd5b6123088361191d565b612325576040516325ec6c1f60e01b815260040160405180910390fd5b61233133848484613fab565b6110b93384612e51565b60605f83516001600160401b0381111561235757612357614d99565b60405190808252806020026020018201604052801561238a57816020015b60608152602001906001900390816123755790505b5090505f5b8451811015611b6f576123bb8582815181106123ad576123ad61589a565b602002602001015185611aa1565b8282815181106123cd576123cd61589a565b602090810291909101015260010161238f565b6123e8613840565b6001600160a01b03811661244d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016120ce565b6124568161389a565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea6124c661406a565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561256e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125929190615b1d565b6001600160a01b0316336001600160a01b0316146125c35760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146125ea5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a36020526040902060609061194f90614106565b5f612655612459565b60405161190160f01b60208201526022810191909152604281018390526062016111be565b600260c954036126cc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016120ce565b600260c955565b60605f82516001600160401b038111156126ef576126ef614d99565b604051908082528060200260200182016040528015612718578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b815260040161276a929190615b38565b5f60405180830381865afa158015612784573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127ab9190810190615b5b565b90505f5b845181101561281a576127f5878683815181106127ce576127ce61589a565b60200260200101518484815181106127e8576127e861589a565b60200260200101516130f2565b8382815181106128075761280761589a565b60209081029190910101526001016127af565b509095945050505050565b5f6001600160a01b03861661284d576040516339b190bb60e11b815260040160405180910390fd5b83515f0361286e5760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561288857612888614d99565b6040519080825280602002602001820160405280156128b1578160200160208202803683370190505b5090505f85516001600160401b038111156128ce576128ce614d99565b6040519080825280602002602001820160405280156128f7578160200160208202803683370190505b5090505f5b8651811015612bc7575f61291b888381518110611e9857611e9861589a565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129545761295461589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f8201548152505090506129c08884815181106129a6576129a661589a565b6020026020010151888581518110611fee57611fee61589a565b8484815181106129d2576129d261589a565b602002602001018181525050612a0a8884815181106129f3576129f361589a565b60200260200101518261411290919063ffffffff16565b858481518110612a1c57612a1c61589a565b60209081029190910101526001600160a01b038a1615612ab157612a738a8a8581518110612a4c57612a4c61589a565b6020026020010151878681518110612a6657612a6661589a565b6020026020010151614126565b612ab18a8c8b8681518110612a8a57612a8a61589a565b6020026020010151878781518110612aa457612aa461589a565b6020026020010151613729565b5f826001600160a01b031663724af4238d8c8781518110612ad457612ad461589a565b60200260200101518c8881518110612aee57612aee61589a565b60200260200101516040518463ffffffff1660e01b8152600401612b1493929190615bea565b6020604051808303815f875af1158015612b30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b549190615acc565b9050805f03612bb9576001600160a01b038c165f90815260a2602052604081208b51612bb992908d9088908110612b8d57612b8d61589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f9055565b5050508060010190506128fc565b506001600160a01b0388165f908152609f60205260408120805491829190612bee83615c0e565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612c54826111ac565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612d0a9260058501920190614b90565b5060c08201518051612d26916006840191602090910190614bf3565b5050506001600160a01b038b165f90815260a360205260409020612d4a9082614190565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612d7e93929190615c26565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f6119f282612de9612de287613d2d565b869061419b565b9061419b565b6001600160a01b038281165f818152609960205260409081902060010180546001600160a01b0319169385169390931790925590517f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c69061261d908490615085565b6066545f90600190811603612e795760405163840a48d560e01b815260040160405180910390fd5b5f5f612e8485611630565b915091505f612e945f86856126d3565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611c47575f516020615d9a5f395f51905f526001600160a01b0316848281518110612f2057612f2061589a565b60200260200101516001600160a01b0316036130915760405163a3d75e0960e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a3d75e0990612f84908b90600401615085565b602060405180830381865afa158015612f9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fc39190615974565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f878581518110612ffc57612ffc61589a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061307085848151811061304e5761304e61589a565b6020026020010151836001600160401b0316836138229092919063ffffffff16565b8584815181106130825761308261589a565b60200260200101818152505050505b6130ea86888684815181106130a8576130a861589a565b60200260200101515f8786815181106130c3576130c361589a565b60200260200101518787815181106130dd576130dd61589a565b60200260200101516131d5565b600101612eee565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016131c55760405163a3d75e0960e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a3d75e0990613166908890600401615085565b602060405180830381865afa158015613181573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a59190615974565b90506131bd6001600160401b0384811690831661380e565b915050610d6c565b506001600160401b031692915050565b805f036131f557604051630a33bc6960e21b815260040160405180910390fd5b8115613312576001600160a01b038086165f90815260a26020908152604080832093881683529290522061322b818585856141af565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061326990613d2d565b60405161327893929190615bea565b60405180910390a16132898661103b565b15611c47576001600160a01b038088165f908152609860209081526040808320938916835292905290812080548592906132c49084906159a3565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c87878660405161330893929190615bea565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156133a0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194f9190615911565b60605f6133d08361422a565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b613409614b37565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a086019392908301828280156134bb57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161349d575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561351157602002820191905f5260205f20905b8154815260200190600101908083116134fd575b50505050508152505091508160a00151516001600160401b0381111561353957613539614d99565b604051908082528060200260200182016040528015613562578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516135969190615c50565b90505f4363ffffffff168263ffffffff16106135c7576135c2845f015185602001518660a001516126d3565b6135de565b6135de845f015185602001518660a0015185614251565b90505f5b8460a001515181101561131a5761362f8560c0015182815181106136085761360861589a565b60200260200101518383815181106136225761362261589a565b602002602001015161437f565b8482815181106136415761364161589a565b60209081029190910101526001016135e2565b5f613662848385600161438a565b6119f29085615c6c565b6001600160a01b038085165f90815260a5602090815260408083209387168352929052908120819061369d906143e5565b90505f61370360016136cf7f000000000000000000000000000000000000000000000000000000000000000043615c7f565b6136d99190615c7f565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906143ff565b90505f6137108284615c6c565b905061371d81878761441b565b98975050505050505050565b6001600160a01b038085165f9081526098602090815260408083209386168352929052908120805483929061375f908490615c6c565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611a9393929190615bea565b5f6001600160a01b0382165f516020615d9a5f395f51905f52146137e7577f000000000000000000000000000000000000000000000000000000000000000061194f565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610d6c8383670de0b6b3a7640000614439565b5f6119f28261383a61383387613d2d565b869061380e565b9061380e565b6033546001600160a01b031633146111aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016120ce565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a0840151518214613910576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613946576040516316110d3560e21b815260040160405180910390fd5b5f613950856111ac565b5f818152609e602052604090205490915060ff16613981576040516387c9d21960e01b815260040160405180910390fd5b60605f7f000000000000000000000000000000000000000000000000000000000000000087608001516139b49190615c50565b90508063ffffffff164363ffffffff16116139e2576040516378f67ae160e11b815260040160405180910390fd5b6139f9875f015188602001518960a0015184614251565b87516001600160a01b03165f90815260a360205260409020909250613a1f91508361451e565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613a766005830182614c2c565b613a83600683015f614c2c565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613acc9084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613b069184906126d3565b90505f5b8860a0015151811015613d22575f613b318a60a001518381518110611e9857611e9861589a565b90505f613b678b60c001518481518110613b4d57613b4d61589a565b60200260200101518785815181106136225761362261589a565b9050805f03613b77575050613d1a565b8715613c4557816001600160a01b0316632eae418c8c5f01518d60a001518681518110613ba657613ba661589a565b60200260200101518d8d88818110613bc057613bc061589a565b9050602002016020810190613bd591906150dc565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613c2a575f5ffd5b505af1158015613c3c573d5f5f3e3d5ffd5b50505050613d17565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613c7057613c7061589a565b6020026020010151866040518463ffffffff1660e01b8152600401613c9793929190615bea565b60408051808303815f875af1158015613cb2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cd69190615c9b565b91509150613d14878e5f01518f60a001518881518110613cf857613cf861589a565b602002602001015185858b8b815181106130dd576130dd61589a565b50505b50505b600101613b0a565b505050505050505050565b80515f9015613d3d57815161194f565b670de0b6b3a764000092915050565b606654606090600190600290811603613d785760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613dd786611630565b9150915081515f03613deb57505050613fa5565b81516001600160401b03811115613e0457613e04614d99565b604051908082528060200260200182016040528015613e2d578160200160208202803683370190505b5094505f613e3c8785856126d3565b90505f5b8351811015613f9f576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613ec057613ec061589a565b6020026020010151835f81518110613eda57613eda61589a565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613f0c57613f0c61589a565b6020026020010151825f81518110613f2657613f2661589a565b602002602001018181525050848481518110613f4457613f4461589a565b6020026020010151815f81518110613f5e57613f5e61589a565b602002602001018181525050613f778b89858585612825565b8a8581518110613f8957613f8961589a565b6020908102919091010152505050600101613e40565b50505050505b50919050565b6001600160a01b038084165f908152609960205260409020600101541680613fd35750610ec4565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff161561401757604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff191660011790558301516122c990829061405e908890889084908890610820565b85516020870151614529565b60605f6140967f00000000000000000000000000000000000000000000000000000000000000006133c4565b9050805f815181106140aa576140aa61589a565b602001015160f81c60f81b816001815181106140c8576140c861589a565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610d6c8361457b565b5f610d6c61411f84613d2d565b839061380e565b6001600160a01b038084165f90815260a5602090815260408083209386168352929052908120614155906143e5565b9050610ec44361416584846159a3565b6001600160a01b038088165f90815260a560209081526040808320938a1683529290522091906145d4565b5f610d6c83836145df565b5f610d6c83670de0b6b3a764000084614439565b825f036141db576040805160208101909152845481526141d4908290612de990613d2d565b8455610ec4565b6040805160208101909152845481525f906141f7908584613822565b90505f61420484836159a3565b90505f61421f84612de9614218888a6159a3565b859061419b565b875550505050505050565b5f60ff8216601f81111561194f57604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561426d5761426d614d99565b604051908082528060200260200182016040528015614296578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016142ea93929190615cbd565b5f60405180830381865afa158015614304573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261432b9190810190615b5b565b90505f5b85518110156143735761434e888783815181106127ce576127ce61589a565b8382815181106143605761436061589a565b602090810291909101015260010161432f565b50909695505050505050565b5f610d6c838361380e565b5f5f614397868686614439565b905060018360028111156143ad576143ad615cf6565b1480156143c957505f84806143c4576143c4615d0a565b868809115b156143dc576143d96001826159a3565b90505b95945050505050565b5f6143f0828261462b565b6001600160e01b031692915050565b5f61440b83838361466f565b6001600160e01b03169392505050565b5f6119f26144298385615d1e565b85906001600160401b031661380e565b5f80805f19858709858702925082811083820303915050805f036144705783828161446657614466615d0a565b0492505050610d6c565b8084116144b75760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016120ce565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610d6c83836146b7565b4281101561454a57604051630819bdcd60e01b815260040160405180910390fd5b61455e6001600160a01b038516848461479a565b610ec457604051638baa579f60e01b815260040160405180910390fd5b6060815f018054806020026020016040519081016040528092919081815260200182805480156145c857602002820191905f5260205f20905b8154815260200190600101908083116145b4575b50505050509050919050565b6110c38383836147ee565b5f81815260018301602052604081205461462457508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561194f565b505f61194f565b81545f9080156146675761465184614644600184615c6c565b5f91825260209091200190565b54600160201b90046001600160e01b03166119f2565b509092915050565b82545f9081614680868683856148f1565b905080156146ad5761469786614644600184615c6c565b54600160201b90046001600160e01b031661089e565b5091949350505050565b5f8181526001830160205260408120548015614791575f6146d9600183615c6c565b85549091505f906146ec90600190615c6c565b905081811461474b575f865f01828154811061470a5761470a61589a565b905f5260205f200154905080875f01848154811061472a5761472a61589a565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061475c5761475c615d3d565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061194f565b5f91505061194f565b5f5f5f6147a78585614944565b90925090505f8160048111156147bf576147bf615cf6565b1480156147dd5750856001600160a01b0316826001600160a01b0316145b8061089e575061089e868686614983565b825480156148a4575f61480685614644600185615c6c565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156148585760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036148a2578261487986614644600186615c6c565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f5b81831015611b6f575f6149068484614a6a565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149305780925061493e565b61493b8160016159a3565b93505b506148f3565b5f5f8251604103614978576020830151604084015160608501515f1a61496c87828585614a84565b94509450505050612031565b505f90506002612031565b5f5f5f856001600160a01b0316631626ba7e60e01b86866040516024016149ab929190615d51565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516149e99190615d69565b5f60405180830381855afa9150503d805f8114614a21576040519150601f19603f3d011682016040523d82523d5f602084013e614a26565b606091505b5091509150818015614a3a57506020815110155b801561089e57508051630b135d3f60e11b90614a5f9083016020908101908401615acc565b149695505050505050565b5f614a786002848418615d7a565b610d6c908484166159a3565b5f806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115614aaf57505f90506003614b2e565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614b00573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614b28575f60019250925050614b2e565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614be3579160200282015b82811115614be357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614bae565b50614bef929150614c43565b5090565b828054828255905f5260205f20908101928215614be3579160200282015b82811115614be3578251825591602001919060010190614c11565b5080545f8255905f5260205f209081019061245691905b5b80821115614bef575f8155600101614c44565b6001600160a01b0381168114612456575f5ffd5b803561227581614c57565b5f5f5f5f5f60a08688031215614c8a575f5ffd5b8535614c9581614c57565b94506020860135614ca581614c57565b93506040860135614cb581614c57565b94979396509394606081013594506080013592915050565b5f5f83601f840112614cdd575f5ffd5b5081356001600160401b03811115614cf3575f5ffd5b6020830191508360208260051b8501011115612031575f5ffd5b5f5f60208385031215614d1e575f5ffd5b82356001600160401b03811115614d33575f5ffd5b614d3f85828601614ccd565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561281a578351835260209384019390920191600101614d64565b5f60208284031215614d92575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614dcf57614dcf614d99565b60405290565b604080519081016001600160401b0381118282101715614dcf57614dcf614d99565b604051601f8201601f191681016001600160401b0381118282101715614e1f57614e1f614d99565b604052919050565b5f6001600160401b03821115614e3f57614e3f614d99565b5060051b60200190565b5f82601f830112614e58575f5ffd5b8135614e6b614e6682614e27565b614df7565b8082825260208201915060208360051b860101925085831115614e8c575f5ffd5b602085015b83811015614eb2578035614ea481614c57565b835260209283019201614e91565b5095945050505050565b5f82601f830112614ecb575f5ffd5b8135614ed9614e6682614e27565b8082825260208201915060208360051b860101925085831115614efa575f5ffd5b602085015b83811015614eb2578035835260209283019201614eff565b5f5f5f60608486031215614f29575f5ffd5b8335614f3481614c57565b925060208401356001600160401b03811115614f4e575f5ffd5b614f5a86828701614e49565b92505060408401356001600160401b03811115614f75575f5ffd5b614f8186828701614ebc565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614fbb578151865260209586019590910190600101614f9d565b5093949350505050565b602081525f610d6c6020830184614f8b565b803563ffffffff81168114612275575f5ffd5b5f5f83601f840112614ffa575f5ffd5b5081356001600160401b03811115615010575f5ffd5b602083019150836020828501011115612031575f5ffd5b5f5f5f5f6060858703121561503a575f5ffd5b843561504581614c57565b935061505360208601614fd7565b925060408501356001600160401b0381111561506d575f5ffd5b61507987828801614fea565b95989497509550505050565b6001600160a01b0391909116815260200190565b5f5f5f5f608085870312156150ac575f5ffd5b84356150b781614c57565b935060208501356150c781614c57565b93969395505050506040820135916060013590565b5f602082840312156150ec575f5ffd5b8135610d6c81614c57565b5f5f60408385031215615108575f5ffd5b823561511381614c57565b9150602083013561512381614c57565b809150509250929050565b5f5b83811015615148578181015183820152602001615130565b50505f910152565b5f815180845261516781602086016020860161512e565b601f01601f19169290920160200192915050565b602081525f610d6c6020830184615150565b5f60e0828403121561519d575f5ffd5b6151a5614dad565b90506151b082614c6b565b81526151be60208301614c6b565b60208201526151cf60408301614c6b565b6040820152606082810135908201526151ea60808301614fd7565b608082015260a08201356001600160401b03811115615207575f5ffd5b61521384828501614e49565b60a08301525060c08201356001600160401b03811115615231575f5ffd5b61523d84828501614ebc565b60c08301525092915050565b5f60208284031215615259575f5ffd5b81356001600160401b0381111561526e575f5ffd5b6119f28482850161518d565b5f6020828403121561528a575f5ffd5b813560ff81168114610d6c575f5ffd5b5f8151808452602084019350602083015f5b82811015614fbb5781516001600160a01b03168652602095860195909101906001016152ac565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f9161531e9085018263ffffffff169052565b5060a082015160e060a085015261533860e085018261529a565b905060c083015184820360c08601526143dc8282614f8b565b604081525f61536360408301856152d3565b82810360208401526143dc8185614f8b565b5f82825180855260208501945060208160051b830101602085015f5b8381101561437357601f198584030188526153ad838351614f8b565b6020988901989093509190910190600101615391565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b8281101561541a57605f198786030184526154058583516152d3565b945060209384019391909101906001016153e9565b5050505082810360208401526143dc8185615375565b6001600160401b0381168114612456575f5ffd5b5f5f5f5f60808587031215615457575f5ffd5b843561546281614c57565b9350602085013561547281614c57565b9250604085013561548281615430565b9150606085013561549281615430565b939692955090935050565b5f5f5f606084860312156154af575f5ffd5b83356154ba81614c57565b92506020840135915060408401356154d181615430565b809150509250925092565b604081525f615363604083018561529a565b5f5f5f60408486031215615500575f5ffd5b833561550b81614c57565b925060208401356001600160401b03811115615525575f5ffd5b61553186828701614fea565b9497909650939450505050565b5f5f6040838503121561554f575f5ffd5b823561555a81614c57565b915060208301356001600160401b03811115615574575f5ffd5b61558085828601614e49565b9150509250929050565b5f5f5f5f5f5f6060878903121561559f575f5ffd5b86356001600160401b038111156155b4575f5ffd5b6155c089828a01614ccd565b90975095505060208701356001600160401b038111156155de575f5ffd5b6155ea89828a01614ccd565b90955093505060408701356001600160401b03811115615608575f5ffd5b61561489828a01614ccd565b979a9699509497509295939492505050565b602081525f610d6c60208301846152d3565b5f5f5f6060848603121561564a575f5ffd5b833561565581614c57565b925060208401356001600160401b0381111561566f575f5ffd5b840160408187031215615680575f5ffd5b615688614dd5565b81356001600160401b0381111561569d575f5ffd5b8201601f810188136156ad575f5ffd5b80356001600160401b038111156156c6576156c6614d99565b6156d9601f8201601f1916602001614df7565b8181528960208385010111156156ed575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f60408385031215615730575f5ffd5b823561573b81614c57565b946020939093013593505050565b604081525f6153636040830185614f8b565b8015158114612456575f5ffd5b5f5f5f5f6060858703121561577b575f5ffd5b84356001600160401b03811115615790575f5ffd5b850160e081880312156157a1575f5ffd5b935060208501356001600160401b038111156157bb575f5ffd5b6157c787828801614ccd565b90945092505060408501356154928161575b565b5f5f604083850312156157ec575f5ffd5b82356001600160401b03811115615801575f5ffd5b8301601f81018513615811575f5ffd5b803561581f614e6682614e27565b8082825260208201915060208360051b850101925087831115615840575f5ffd5b6020840193505b8284101561586b57833561585a81614c57565b825260209384019390910190615847565b945050505060208301356001600160401b03811115615574575f5ffd5b602081525f610d6c6020830184615375565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126158c2575f5ffd5b9190910192915050565b5f5f8335601e198436030181126158e1575f5ffd5b8301803591506001600160401b038211156158fa575f5ffd5b6020019150600581901b3603821315612031575f5ffd5b5f60208284031215615921575f5ffd5b8151610d6c8161575b565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b6001600160a01b0392831681529116602082015260400190565b5f60208284031215615984575f5ffd5b8151610d6c81615430565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561194f5761194f61598f565b5f82601f8301126159c5575f5ffd5b81516159d3614e6682614e27565b8082825260208201915060208360051b8601019250858311156159f4575f5ffd5b602085015b83811015614eb25780518352602092830192016159f9565b5f5f60408385031215615a22575f5ffd5b82516001600160401b03811115615a37575f5ffd5b8301601f81018513615a47575f5ffd5b8051615a55614e6682614e27565b8082825260208201915060208360051b850101925087831115615a76575f5ffd5b6020840193505b82841015615aa1578351615a9081614c57565b825260209384019390910190615a7d565b8095505050505060208301516001600160401b03811115615ac0575f5ffd5b615580858286016159b6565b5f60208284031215615adc575f5ffd5b5051919050565b5f823560de198336030181126158c2575f5ffd5b5f61194f368361518d565b5f60208284031215615b12575f5ffd5b8135610d6c8161575b565b5f60208284031215615b2d575f5ffd5b8151610d6c81614c57565b6001600160a01b03831681526040602082018190525f906119f29083018461529a565b5f60208284031215615b6b575f5ffd5b81516001600160401b03811115615b80575f5ffd5b8201601f81018413615b90575f5ffd5b8051615b9e614e6682614e27565b8082825260208201915060208360051b850101925086831115615bbf575f5ffd5b6020840193505b8284101561089e578351615bd981615430565b825260209384019390910190615bc6565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c1f57615c1f61598f565b5060010190565b838152606060208201525f615c3e60608301856152d3565b828103604084015261089e8185614f8b565b63ffffffff818116838216019081111561194f5761194f61598f565b8181038181111561194f5761194f61598f565b63ffffffff828116828216039081111561194f5761194f61598f565b5f5f60408385031215615cac575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615ce09083018561529a565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b03828116828216039081111561194f5761194f61598f565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6119f26040830184615150565b5f82516158c281846020870161512e565b5f82615d9457634e487b7160e01b5f52601260045260245ffd5b50049056fe000000000000000000000000beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0a2646970667358221220e1c0613b67b7d291dbd51e9b97ad592681c391bc5ea883c66bc8728ebbdeedd464736f6c634300081b0033
3100    /// ```
3101    #[rustfmt::skip]
3102    #[allow(clippy::all)]
3103    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3104        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\xC3W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01wW\x80c\xBF\xAE?\xD2\x11a\0\xD5W\x80c\xE4\xCC?\x90\x11a\0\x8FW\x80c\xE4\xCC?\x90\x14a\x07\x99W\x80c\xEE\xA9\x06K\x14a\x07\xACW\x80c\xF0\xE0\xE6v\x14a\x07\xBFW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xDFW\x80c\xF6\x98\xDA%\x14a\x07\xF2W\x80c\xFA\xBC\x1C\xBC\x14a\x07\xFAW\x80c\xFD\x8A\xA8\x8D\x14a\x08\rW__\xFD[\x80c\xBF\xAE?\xD2\x14a\x06\xE4W\x80c\xC4H\xFE\xB8\x14a\x06\xF7W\x80c\xC9x\xF7\xAC\x14a\x07+W\x80c\xCA\x8A\xA7\xC7\x14a\x07LW\x80c\xCDm\xC6\x87\x14a\x07sW\x80c\xDA\x8B\xE8d\x14a\x07\x86W__\xFD[\x80c\x91\x04\xC3\x19\x11a\x011W\x80c\x91\x04\xC3\x19\x14a\x06\x1CW\x80c\x945\xBBC\x14a\x060W\x80c\x99\xF57\x1B\x14a\x06CW\x80c\xA1x\x84\x84\x14a\x06cW\x80c\xA3:43\x14a\x06\x82W\x80c\xB7\xF0n\xBE\x14a\x06\x95W\x80c\xBBE\xFE\xF2\x14a\x06\xB7W__\xFD[\x80cqP\x18\xA6\x14a\x05\x8CW\x80cw\x8EU\xF3\x14a\x05\x94W\x80cx)n\xC5\x14a\x05\xBEW\x80c\x88o\x11\x95\x14a\x05\xD1W\x80c\x8D\xA5\xCB[\x14a\x05\xF8W\x80c\x90\x04\x13G\x14a\x06\tW__\xFD[\x80cT\xFDMP\x11a\x02$W\x80c]\xD6\x85y\x11a\x01\xDEW\x80c]\xD6\x85y\x14a\x04\xD6W\x80c`\x1B\xB3o\x14a\x04\xF7W\x80c`\xA0\xD1\xCE\x14a\x05\nW\x80ce\xDA\x12d\x14a\x05\x1DW\x80cf\xD5\xBA\x93\x14a\x05EW\x80cmp\xF7\xAE\x14a\x05fW\x80cn\x17DH\x14a\x05yW__\xFD[\x80cT\xFDMP\x14a\x04ZW\x80cY\\jg\x14a\x04oW\x80cY{6\xDA\x14a\x04wW\x80cZ\xC8j\xB7\x14a\x04\x8AW\x80c\\\x97Z\xBB\x14a\x04\xADW\x80c]\x97^\x88\x14a\x04\xB5W__\xFD[\x80c9\xB7\x0E8\x11a\x02\x80W\x80c9\xB7\x0E8\x14a\x03|W\x80c<e\x1C\xF2\x14a\x03\xB0W\x80c<\xDE\xB5\xE0\x14a\x03\xC3W\x80c>(9\x1D\x14a\x03\xD6W\x80cFW\xE2j\x14a\x03\xF9W\x80cFe\xBC\xDA\x14a\x04 W\x80cT\xB7\xC9l\x14a\x04GW__\xFD[\x80c\x04\xA4\xF9y\x14a\x02\xC7W\x80c\x0B\x9FHz\x14a\x03\x01W\x80c\r\xD8\xDD\x02\x14a\x03\x14W\x80c\x13d9\xDD\x14a\x034W\x80c%\xDF\x92.\x14a\x03IW\x80c*\xA6\xD8\x88\x14a\x03iW[__\xFD[a\x02\xEE\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\x02\xEEa\x03\x0F6`\x04aLvV[a\x08 V[a\x03'a\x03\"6`\x04aM\rV[a\x08\xA8V[`@Qa\x02\xF8\x91\x90aMKV[a\x03Ga\x03B6`\x04aM\x82V[a\x0B9V[\0[a\x03\\a\x03W6`\x04aO\x17V[a\x0C\x13V[`@Qa\x02\xF8\x91\x90aO\xC5V[a\x03Ga\x03w6`\x04aP'V[a\rsV[a\x03\xA3\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[`@Qa\x02\xF8\x91\x90aP\x85V[a\x03Ga\x03\xBE6`\x04aP\x99V[a\x0E\xCAV[a\x03\xA3a\x03\xD16`\x04aP\xDCV[a\x10\x1BV[a\x03\xE9a\x03\xE46`\x04aP\xDCV[a\x10;V[`@Q\x90\x15\x15\x81R` \x01a\x02\xF8V[a\x03\xA3\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\xA3\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\x03Ga\x04U6`\x04aP\xF7V[a\x10ZV[a\x04ba\x10\xC8V[`@Qa\x02\xF8\x91\x90aQ{V[a\x03Ga\x10\xF8V[a\x02\xEEa\x04\x856`\x04aRIV[a\x11\xACV[a\x03\xE9a\x04\x986`\x04aRzV[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x02\xEEV[a\x04\xC8a\x04\xC36`\x04aM\x82V[a\x11\xDBV[`@Qa\x02\xF8\x92\x91\x90aSQV[a\x04\xE9a\x04\xE46`\x04aP\xDCV[a\x11\xF8V[`@Qa\x02\xF8\x92\x91\x90aS\xC3V[a\x03Ga\x05\x056`\x04aTDV[a\x13\"V[a\x03Ga\x05\x186`\x04aT\x9DV[a\x14\x9AV[a\x03\xA3a\x05+6`\x04aP\xDCV[`\x9A` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05Xa\x05S6`\x04aP\xDCV[a\x160V[`@Qa\x02\xF8\x92\x91\x90aT\xDCV[a\x03\xE9a\x05t6`\x04aP\xDCV[a\x19\x1DV[a\x02\xEEa\x05\x876`\x04aP\xF7V[a\x19UV[a\x03Ga\x19\xFAV[a\x02\xEEa\x05\xA26`\x04aP\xF7V[`\x98` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03Ga\x05\xCC6`\x04aT\xEEV[a\x1A\x0BV[a\x03\xA3\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\xA3V[a\x03\\a\x06\x176`\x04aU>V[a\x1A\xA1V[a\x03\xA3_Q` a]\x9A_9_Q\x90_R\x81V[a\x03Ga\x06>6`\x04aU\x8AV[a\x1BwV[a\x06Va\x06Q6`\x04aM\x82V[a\x1CPV[`@Qa\x02\xF8\x91\x90aV&V[a\x02\xEEa\x06q6`\x04aP\xDCV[`\x9F` R_\x90\x81R`@\x90 T\x81V[a\x03'a\x06\x906`\x04aV8V[a\x1DlV[a\x03\xE9a\x06\xA36`\x04aM\x82V[`\x9E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x03\xE9a\x06\xC56`\x04aW\x1FV[`\x9C` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[a\x02\xEEa\x06\xF26`\x04aP\xF7V[a\x1D\x84V[`@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\x02\xF8V[a\x07>a\x0796`\x04aU>V[a\x1D\xC0V[`@Qa\x02\xF8\x92\x91\x90aWIV[a\x03\xA3\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\x03Ga\x07\x816`\x04aW\x1FV[a 8V[a\x03'a\x07\x946`\x04aP\xDCV[a!SV[a\x03Ga\x07\xA76`\x04aWhV[a\"zV[a\x03Ga\x07\xBA6`\x04aV8V[a\"\xD0V[a\x07\xD2a\x07\xCD6`\x04aW\xDBV[a#;V[`@Qa\x02\xF8\x91\x90aX\x88V[a\x03Ga\x07\xED6`\x04aP\xDCV[a#\xE0V[a\x02\xEEa$YV[a\x03Ga\x08\x086`\x04aM\x82V[a%\x12V[a\x03'a\x08\x1B6`\x04aP\xDCV[a&)V[`@\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\x08\x9E\x90`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a&LV[\x96\x95PPPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x03a\x08\xD4W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08\xDCa&zV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xF5Wa\x08\xF5aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1EW\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*W\x86\x86\x82\x81\x81\x10a\tXWa\tXaX\x9AV[\x90P` \x02\x81\x01\x90a\tj\x91\x90aX\xAEV[a\tx\x90` \x81\x01\x90aX\xCCV[\x90P\x87\x87\x83\x81\x81\x10a\t\x8CWa\t\x8CaX\x9AV[\x90P` \x02\x81\x01\x90a\t\x9E\x91\x90aX\xAEV[a\t\xA8\x90\x80aX\xCCV[\x90P\x14a\t\xC8W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\n23\x84\x8A\x8A\x86\x81\x81\x10a\t\xE0Wa\t\xE0aX\x9AV[\x90P` \x02\x81\x01\x90a\t\xF2\x91\x90aX\xAEV[a\t\xFC\x90\x80aX\xCCV[\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&\xD3\x92PPPV[\x90Pa\x0B\x043\x84\x8A\x8A\x86\x81\x81\x10a\nKWa\nKaX\x9AV[\x90P` \x02\x81\x01\x90a\n]\x91\x90aX\xAEV[a\ng\x90\x80aX\xCCV[\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\n\xACWa\n\xACaX\x9AV[\x90P` \x02\x81\x01\x90a\n\xBE\x91\x90aX\xAEV[a\n\xCC\x90` \x81\x01\x90aX\xCCV[\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(%\x91PPV[\x84\x83\x81Q\x81\x10a\x0B\x16Wa\x0B\x16aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\t>V[PP`\x01`\xC9U\x94\x93PPPPV[`@Qc#}\xFBG`\xE1\x1B\x81R`\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\x90cF\xFB\xF6\x8E\x90a\x0B\x85\x903\x90`\x04\x01aP\x85V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xC4\x91\x90aY\x11V[a\x0B\xE1W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`fT\x81\x81\x16\x81\x14a\x0C\x06W`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x0F\x82a-\x94V[PPV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x9A` R`@\x81 T``\x92\x16\x90a\x0C<\x86\x83\x87a&\xD3V[\x90P_\x85Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0CXWa\x0CXaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\x81W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x86Q\x81\x10\x15a\rfW`\x01`\x01`\xA0\x1B\x03\x88\x16_\x90\x81R`\xA2` R`@\x81 \x88Q\x82\x90\x8A\x90\x85\x90\x81\x10a\x0C\xBCWa\x0C\xBCaX\x9AV[` \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@\x87\x83\x81Q\x81\x10a\r\x0EWa\r\x0EaX\x9AV[` \x02` \x01\x01Q\x85\x84\x81Q\x81\x10a\r(Wa\r(aX\x9AV[` \x02` \x01\x01Q\x83a-\xD1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x83\x83\x81Q\x81\x10a\rRWa\rRaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01RP`\x01\x01a\x0C\x86V[P\x92PPP[\x93\x92PPPV[a\r{a&zV[a\r\x843a\x10;V[\x15a\r\xA2W`@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\x0E\x0CW__\xFD[PZ\xF1\x15\x80\x15a\x0E\x1EW=__>=_\xFD[PPPPa\x0E,3\x85a-\xEFV[a\x0E633a.QV[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\xA4S\xDBa*\xF5\x9EU!\xD6\xAB\x92\x84\xDC>-\x06\xAF(n\xB1\xB1\xB7\xB7q\xFC\xE4ql\x19\xF2\xC1\x85`@Qa\x0Eo\x91\x90aP\x85V[`@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\x0E\xB2\x92\x91\x90aY,V[`@Q\x80\x91\x03\x90\xA2a\x0E\xC4`\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)WP3`\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\x0FFW`@Qc\x04R\x06\xA5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0FNa&zV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x9A` R`@\x80\x82 T\x90Qc\x15&g\xD9`\xE3\x1B\x81R\x90\x83\x16\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\x90a\x0F\xB1\x90\x85\x90\x89\x90`\x04\x01aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\xCCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xF0\x91\x90aYtV[\x90P_a\x0F\xFE\x87\x87\x84a0\xF2V[\x90Pa\x10\x0E\x83\x88\x88\x88\x88\x86a1\xD5V[PPPa\x0E\xC4`\x01`\xC9UV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16_\x90\x81R`\x9A` R`@\x90 T\x16\x15\x15\x90V[\x81a\x10d\x81a3\x1AV[a\x10\x81W`@Qc\x93-\x94\xF7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\x89a&zV[a\x10\x92\x83a\x19\x1DV[a\x10\xAFW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xB9\x83\x83a-\xEFV[a\x10\xC3`\x01`\xC9UV[PPPV[``a\x10\xF3\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\0a3\xC4V[\x90P\x90V[`@Qc#}\xFBG`\xE1\x1B\x81R`\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\x90cF\xFB\xF6\x8E\x90a\x11D\x903\x90`\x04\x01aP\x85V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11_W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x83\x91\x90aY\x11V[a\x11\xA0W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xAA_\x19a-\x94V[V[_\x81`@Q` \x01a\x11\xBE\x91\x90aV&V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x11\xE3aK7V[``a\x11\xEE\x83a4\x01V[\x90\x94\x90\x93P\x91PPV[``\x80_a\x12\x05\x84a&)V[\x80Q\x90\x91P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\"Wa\x12\"aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12[W\x81` \x01[a\x12HaK7V[\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12@W\x90P[P\x93P\x80`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12vWa\x12vaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\xA9W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x12\x94W\x90P[P\x92P_[\x81\x81\x10\x15a\x13\x1AWa\x12\xD8\x83\x82\x81Q\x81\x10a\x12\xCBWa\x12\xCBaX\x9AV[` \x02` \x01\x01Qa4\x01V[\x86\x83\x81Q\x81\x10a\x12\xEAWa\x12\xEAaX\x9AV[` \x02` \x01\x01\x86\x84\x81Q\x81\x10a\x13\x03Wa\x13\x03aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01\x91\x90\x91RR`\x01\x01a\x12\xAEV[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\x13kW`@Qc#\xD8q\xA5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13sa&zV[`\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\xB1\x90`\x01`\x01`@\x1B\x03\x80\x86\x16\x90\x85\x16a6TV[\x90P_a\x13\xC0\x86\x86\x86\x86a6lV[\x90P_a\x13\xCD\x82\x84aY\xA3V[\x90Pa\x13\xDB\x87_\x88\x86a7)V[`@\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\x14+\x87a7\xA3V[`@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\x14vW__\xFD[PZ\xF1\x15\x80\x15a\x14\x88W=__>=_\xFD[PPPPPPPPa\x0E\xC4`\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\x14\xE3W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xEBa&zV[a\x14\xF4\x83a\x10;V[\x15a\x10\xB9W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x9A` R`@\x80\x82 T\x90Qc\x15&g\xD9`\xE3\x1B\x81R\x90\x83\x16\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\x90a\x15i\x90\x85\x90_Q` a]\x9A_9_Q\x90_R\x90`\x04\x01aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x84W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xA8\x91\x90aYtV[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 _Q` a]\x9A_9_Q\x90_R\x84R\x82R\x80\x83 \x81Q\x92\x83\x01\x90\x91RT\x81R\x91\x92Pa\x16\x07\x86a\x15\xFF`\x01`\x01`@\x1B\x03\x80\x87\x16\x90\x89\x16a8\x0EV[\x84\x91\x90a8\"V[\x90Pa\x16\"\x84\x88_Q` a]\x9A_9_Q\x90_R\x84a7)V[PPPPa\x10\xC3`\x01`\xC9UV[``\x80__\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\xF6I\xDD\x86`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x16\x81\x91\x90aP\x85V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x9BW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x16\xC2\x91\x90\x81\x01\x90aZ\x11V[\x91P\x91P_\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\xFE$:\x17\x87_Q` a]\x9A_9_Q\x90_R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\"\x92\x91\x90aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17=W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17a\x91\x90aZ\xCCV[\x90P\x80_\x03a\x17uWP\x90\x94\x90\x93P\x91PPV[_\x83Q`\x01a\x17\x84\x91\x90aY\xA3V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\x9BWa\x17\x9BaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17\xC4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01a\x17\xD6\x91\x90aY\xA3V[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xEDWa\x17\xEDaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18\x16W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_Q` a]\x9A_9_Q\x90_R\x82\x86Q\x81Q\x81\x10a\x18:Wa\x18:aX\x9AV[` \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\x18nWa\x18naX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x85Q\x81\x10\x15a\x19\x0FW\x85\x81\x81Q\x81\x10a\x18\x96Wa\x18\x96aX\x9AV[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x18\xB0Wa\x18\xB0aX\x9AV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81\x81Q\x81\x10a\x18\xE2Wa\x18\xE2aX\x9AV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x18\xFCWa\x18\xFCaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x18{V[P\x90\x97\x90\x96P\x94PPPPPV[_`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x19OWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[__\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\xA93>\xC8\x85\x85`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19\xA5\x92\x91\x90aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x19\xC0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19\xE4\x91\x90aYtV[\x90Pa\x19\xF2\x84\x84\x83_a6lV[\x94\x93PPPPV[a\x1A\x02a8@V[a\x11\xAA_a8\x9AV[\x82a\x1A\x15\x81a3\x1AV[a\x1A2W`@Qc\x93-\x94\xF7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A;\x84a\x19\x1DV[a\x1AXW`@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\x93\x92\x91\x90aY,V[`@Q\x80\x91\x03\x90\xA2PPPPV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1A\xBDWa\x1A\xBDaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\xE6W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1BoW`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x98` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x1B\"Wa\x1B\"aX\x9AV[` \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\\Wa\x1B\\aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\xEBV[P\x93\x92PPPV[`fT`\x02\x90`\x04\x90\x81\x16\x03a\x1B\xA0W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xA8a&zV[\x85_[\x81\x81\x10\x15a\x1C;Wa\x1C3\x89\x89\x83\x81\x81\x10a\x1B\xC8Wa\x1B\xC8aX\x9AV[\x90P` \x02\x81\x01\x90a\x1B\xDA\x91\x90aZ\xE3V[a\x1B\xE3\x90aZ\xF7V[\x88\x88\x84\x81\x81\x10a\x1B\xF5Wa\x1B\xF5aX\x9AV[\x90P` \x02\x81\x01\x90a\x1C\x07\x91\x90aX\xCCV[\x88\x88\x86\x81\x81\x10a\x1C\x19Wa\x1C\x19aX\x9AV[\x90P` \x02\x01` \x81\x01\x90a\x1C.\x91\x90a[\x02V[a8\xEBV[`\x01\x01a\x1B\xABV[PPa\x1CG`\x01`\xC9UV[PPPPPPPV[a\x1CXaK7V[_\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\x1D\x06W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x1C\xE8W[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\\W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\x1DHW[PPPPP\x81RPP\x90P\x91\x90PV[``a\x1Dw3a!SV[\x90Pa\rl\x84\x84\x84a\"\xD0V[`\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\rl\x90a=-V[``\x80\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xDCWa\x1D\xDCaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x05W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E!Wa\x1E!aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EJW\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\x1Eu\x86\x83\x87a&\xD3V[\x90P_[\x85Q\x81\x10\x15a -W_a\x1E\xA5\x87\x83\x81Q\x81\x10a\x1E\x98Wa\x1E\x98aX\x9AV[` \x02` \x01\x01Qa7\xA3V[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16c\xFE$:\x17\x89\x89\x85\x81Q\x81\x10a\x1E\xC9Wa\x1E\xC9aX\x9AV[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\xEE\x92\x91\x90aYZV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1F\tW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F-\x91\x90aZ\xCCV[\x85\x83\x81Q\x81\x10a\x1F?Wa\x1F?aX\x9AV[` \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\x1F\x82Wa\x1F\x82aX\x9AV[` \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 \x06\x86\x84\x81Q\x81\x10a\x1F\xD4Wa\x1F\xD4aX\x9AV[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a\x1F\xEEWa\x1F\xEEaX\x9AV[` \x02` \x01\x01Q\x83a8\"\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x87\x84\x81Q\x81\x10a \x18Wa \x18aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x1EyV[PPP[\x92P\x92\x90PV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a VWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a oWP0;\x15\x80\x15a oWP_T`\xFF\x16`\x01\x14[a \xD7W`@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 \xF8W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a!\x01\x82a-\x94V[a!\n\x83a8\x9AV[\x80\x15a\x10\xC3W_\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!]a&zV[a!f\x82a\x10;V[a!\x83W`@Qc\xA5\xC7\xC4E`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a!\x8C\x82a\x19\x1DV[\x15a!\xAAW`@Qc\x11\xCA35`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3`\x01`\x01`\xA0\x1B\x03\x83\x16\x14a\"`W`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x9A` R`@\x90 T\x16a!\xDD\x81a3\x1AV[\x80a\"\x01WPa!\xEC\x81a\x10\x1BV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14[a\"\x1EW`@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\"i\x82a=LV[\x90Pa\"u`\x01`\xC9UV[\x91\x90PV[`fT`\x02\x90`\x04\x90\x81\x16\x03a\"\xA3W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\"\xABa&zV[a\"\xBFa\"\xB7\x86aZ\xF7V[\x85\x85\x85a8\xEBV[a\"\xC9`\x01`\xC9UV[PPPPPV[a\"\xD8a&zV[a\"\xE13a\x10;V[\x15a\"\xFFW`@Qc;\xF2\xB5\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\x08\x83a\x19\x1DV[a#%W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#13\x84\x84\x84a?\xABV[a\x10\xB93\x84a.QV[``_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#WWa#WaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#\x8AW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a#uW\x90P[P\x90P_[\x84Q\x81\x10\x15a\x1BoWa#\xBB\x85\x82\x81Q\x81\x10a#\xADWa#\xADaX\x9AV[` \x02` \x01\x01Q\x85a\x1A\xA1V[\x82\x82\x81Q\x81\x10a#\xCDWa#\xCDaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a#\x8FV[a#\xE8a8@V[`\x01`\x01`\xA0\x1B\x03\x81\x16a$MW`@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 \xCEV[a$V\x81a8\x9AV[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$\xC6a@jV[\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%nW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a%\x92\x91\x90a[\x1DV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a%\xC3W`@QcyH!\xFF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`fT\x80\x19\x82\x19\x81\x16\x14a%\xEAW`@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\x19O\x90aA\x06V[_a&Ua$YV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01a\x11\xBEV[`\x02`\xC9T\x03a&\xCCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a \xCEV[`\x02`\xC9UV[``_\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xEFWa&\xEFaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a'\x18W\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'j\x92\x91\x90a[8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a'\x84W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra'\xAB\x91\x90\x81\x01\x90a[[V[\x90P_[\x84Q\x81\x10\x15a(\x1AWa'\xF5\x87\x86\x83\x81Q\x81\x10a'\xCEWa'\xCEaX\x9AV[` \x02` \x01\x01Q\x84\x84\x81Q\x81\x10a'\xE8Wa'\xE8aX\x9AV[` \x02` \x01\x01Qa0\xF2V[\x83\x82\x81Q\x81\x10a(\x07Wa(\x07aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a'\xAFV[P\x90\x95\x94PPPPPV[_`\x01`\x01`\xA0\x1B\x03\x86\x16a(MW`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q_\x03a(nW`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x88Wa(\x88aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a(\xB1W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x85Q`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xCEWa(\xCEaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a(\xF7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x86Q\x81\x10\x15a+\xC7W_a)\x1B\x88\x83\x81Q\x81\x10a\x1E\x98Wa\x1E\x98aX\x9AV[\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)TWa)TaX\x9AV[` \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)\xC0\x88\x84\x81Q\x81\x10a)\xA6Wa)\xA6aX\x9AV[` \x02` \x01\x01Q\x88\x85\x81Q\x81\x10a\x1F\xEEWa\x1F\xEEaX\x9AV[\x84\x84\x81Q\x81\x10a)\xD2Wa)\xD2aX\x9AV[` \x02` \x01\x01\x81\x81RPPa*\n\x88\x84\x81Q\x81\x10a)\xF3Wa)\xF3aX\x9AV[` \x02` \x01\x01Q\x82aA\x12\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x85\x84\x81Q\x81\x10a*\x1CWa*\x1CaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01`\x01`\xA0\x1B\x03\x8A\x16\x15a*\xB1Wa*s\x8A\x8A\x85\x81Q\x81\x10a*LWa*LaX\x9AV[` \x02` \x01\x01Q\x87\x86\x81Q\x81\x10a*fWa*faX\x9AV[` \x02` \x01\x01QaA&V[a*\xB1\x8A\x8C\x8B\x86\x81Q\x81\x10a*\x8AWa*\x8AaX\x9AV[` \x02` \x01\x01Q\x87\x87\x81Q\x81\x10a*\xA4Wa*\xA4aX\x9AV[` \x02` \x01\x01Qa7)V[_\x82`\x01`\x01`\xA0\x1B\x03\x16crJ\xF4#\x8D\x8C\x87\x81Q\x81\x10a*\xD4Wa*\xD4aX\x9AV[` \x02` \x01\x01Q\x8C\x88\x81Q\x81\x10a*\xEEWa*\xEEaX\x9AV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+\x14\x93\x92\x91\x90a[\xEAV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a+0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+T\x91\x90aZ\xCCV[\x90P\x80_\x03a+\xB9W`\x01`\x01`\xA0\x1B\x03\x8C\x16_\x90\x81R`\xA2` R`@\x81 \x8BQa+\xB9\x92\x90\x8D\x90\x88\x90\x81\x10a+\x8DWa+\x8DaX\x9AV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x90UV[PPP\x80`\x01\x01\x90Pa(\xFCV[P`\x01`\x01`\xA0\x1B\x03\x88\x16_\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a+\xEE\x83a\\\x0EV[\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,T\x82a\x11\xACV[_\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-\n\x92`\x05\x85\x01\x92\x01\x90aK\x90V[P`\xC0\x82\x01Q\x80Qa-&\x91`\x06\x84\x01\x91` \x90\x91\x01\x90aK\xF3V[PPP`\x01`\x01`\xA0\x1B\x03\x8B\x16_\x90\x81R`\xA3` R`@\x90 a-J\x90\x82aA\x90V[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\\&V[`@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\x19\xF2\x82a-\xE9a-\xE2\x87a=-V[\x86\x90aA\x9BV[\x90aA\x9BV[`\x01`\x01`\xA0\x1B\x03\x82\x81\x16_\x81\x81R`\x99` R`@\x90\x81\x90 `\x01\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x93\x85\x16\x93\x90\x93\x17\x90\x92U\x90Q\x7Fw;T\xC0Muo\xCC^g\x81\x11\xF7\xD70\xDE;\xE9\x81\x92\0\x07\x99\xEE\xE3\xD67\x16\x05Z\x87\xC6\x90a&\x1D\x90\x84\x90aP\x85V[`fT_\x90`\x01\x90\x81\x16\x03a.yW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__a.\x84\x85a\x160V[\x91P\x91P_a.\x94_\x86\x85a&\xD3V[`\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\x1CGW_Q` a]\x9A_9_Q\x90_R`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a/ Wa/ aX\x9AV[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x03a0\x91W`@Qc\xA3\xD7^\t`\xE0\x1B\x81R_\x90`\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\x90c\xA3\xD7^\t\x90a/\x84\x90\x8B\x90`\x04\x01aP\x85V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a/\x9FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a/\xC3\x91\x90aYtV[\x90P_`\xA2_\x8A`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x87\x85\x81Q\x81\x10a/\xFCWa/\xFCaX\x9AV[` \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\x90Pa0p\x85\x84\x81Q\x81\x10a0NWa0NaX\x9AV[` \x02` \x01\x01Q\x83`\x01`\x01`@\x1B\x03\x16\x83a8\"\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x85\x84\x81Q\x81\x10a0\x82Wa0\x82aX\x9AV[` \x02` \x01\x01\x81\x81RPPPP[a0\xEA\x86\x88\x86\x84\x81Q\x81\x10a0\xA8Wa0\xA8aX\x9AV[` \x02` \x01\x01Q_\x87\x86\x81Q\x81\x10a0\xC3Wa0\xC3aX\x9AV[` \x02` \x01\x01Q\x87\x87\x81Q\x81\x10a0\xDDWa0\xDDaX\x9AV[` \x02` \x01\x01Qa1\xD5V[`\x01\x01a.\xEEV[_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\x01a1\xC5W`@Qc\xA3\xD7^\t`\xE0\x1B\x81R_\x90`\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\x90c\xA3\xD7^\t\x90a1f\x90\x88\x90`\x04\x01aP\x85V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a1\x81W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a1\xA5\x91\x90aYtV[\x90Pa1\xBD`\x01`\x01`@\x1B\x03\x84\x81\x16\x90\x83\x16a8\x0EV[\x91PPa\rlV[P`\x01`\x01`@\x1B\x03\x16\x92\x91PPV[\x80_\x03a1\xF5W`@Qc\n3\xBCi`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81\x15a3\x12W`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xA2` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R a2+\x81\x85\x85\x85aA\xAFV[`@\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\x90a2i\x90a=-V[`@Qa2x\x93\x92\x91\x90a[\xEAV[`@Q\x80\x91\x03\x90\xA1a2\x89\x86a\x10;V[\x15a\x1CGW`\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\x90a2\xC4\x90\x84\x90aY\xA3V[\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\x08\x93\x92\x91\x90a[\xEAV[`@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\x15a3\xA0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x19O\x91\x90aY\x11V[``_a3\xD0\x83aB*V[`@\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\taK7V[_\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\x15a4\xBBW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a4\x9DW[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\x11W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a4\xFDW[PPPPP\x81RPP\x91P\x81`\xA0\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a59Wa59aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a5bW\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\x01Qa5\x96\x91\x90a\\PV[\x90P_Cc\xFF\xFF\xFF\xFF\x16\x82c\xFF\xFF\xFF\xFF\x16\x10a5\xC7Wa5\xC2\x84_\x01Q\x85` \x01Q\x86`\xA0\x01Qa&\xD3V[a5\xDEV[a5\xDE\x84_\x01Q\x85` \x01Q\x86`\xA0\x01Q\x85aBQV[\x90P_[\x84`\xA0\x01QQ\x81\x10\x15a\x13\x1AWa6/\x85`\xC0\x01Q\x82\x81Q\x81\x10a6\x08Wa6\x08aX\x9AV[` \x02` \x01\x01Q\x83\x83\x81Q\x81\x10a6\"Wa6\"aX\x9AV[` \x02` \x01\x01QaC\x7FV[\x84\x82\x81Q\x81\x10a6AWa6AaX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a5\xE2V[_a6b\x84\x83\x85`\x01aC\x8AV[a\x19\xF2\x90\x85a\\lV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R\x90\x81 \x81\x90a6\x9D\x90aC\xE5V[\x90P_a7\x03`\x01a6\xCF\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\\\x7FV[a6\xD9\x91\x90a\\\x7FV[`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x8C\x16\x83R\x92\x90R \x90aC\xFFV[\x90P_a7\x10\x82\x84a\\lV[\x90Pa7\x1D\x81\x87\x87aD\x1BV[\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\x90a7_\x90\x84\x90a\\lV[\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\x93\x93\x92\x91\x90a[\xEAV[_`\x01`\x01`\xA0\x1B\x03\x82\x16_Q` a]\x9A_9_Q\x90_R\x14a7\xE7W\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\x19OV[\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\rl\x83\x83g\r\xE0\xB6\xB3\xA7d\0\0aD9V[_a\x19\xF2\x82a8:a83\x87a=-V[\x86\x90a8\x0EV[\x90a8\x0EV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11\xAAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a \xCEV[`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\x10W`@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\x14a9FW`@Qc\x16\x11\r5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a9P\x85a\x11\xACV[_\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a9\x81W`@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\x01Qa9\xB4\x91\x90a\\PV[\x90P\x80c\xFF\xFF\xFF\xFF\x16Cc\xFF\xFF\xFF\xFF\x16\x11a9\xE2W`@Qcx\xF6z\xE1`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a9\xF9\x87_\x01Q\x88` \x01Q\x89`\xA0\x01Q\x84aBQV[\x87Q`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\xA3` R`@\x90 \x90\x92Pa:\x1F\x91P\x83aE\x1EV[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:v`\x05\x83\x01\x82aL,V[a:\x83`\x06\x83\x01_aL,V[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:\xCC\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;\x06\x91\x84\x90a&\xD3V[\x90P_[\x88`\xA0\x01QQ\x81\x10\x15a=\"W_a;1\x8A`\xA0\x01Q\x83\x81Q\x81\x10a\x1E\x98Wa\x1E\x98aX\x9AV[\x90P_a;g\x8B`\xC0\x01Q\x84\x81Q\x81\x10a;MWa;MaX\x9AV[` \x02` \x01\x01Q\x87\x85\x81Q\x81\x10a6\"Wa6\"aX\x9AV[\x90P\x80_\x03a;wWPPa=\x1AV[\x87\x15a<EW\x81`\x01`\x01`\xA0\x1B\x03\x16c.\xAEA\x8C\x8C_\x01Q\x8D`\xA0\x01Q\x86\x81Q\x81\x10a;\xA6Wa;\xA6aX\x9AV[` \x02` \x01\x01Q\x8D\x8D\x88\x81\x81\x10a;\xC0Wa;\xC0aX\x9AV[\x90P` \x02\x01` \x81\x01\x90a;\xD5\x91\x90aP\xDCV[`@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<*W__\xFD[PZ\xF1\x15\x80\x15a<<W=__>=_\xFD[PPPPa=\x17V[__\x83`\x01`\x01`\xA0\x1B\x03\x16cP\xFFr%\x8E_\x01Q\x8F`\xA0\x01Q\x88\x81Q\x81\x10a<pWa<paX\x9AV[` \x02` \x01\x01Q\x86`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a<\x97\x93\x92\x91\x90a[\xEAV[`@\x80Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a<\xB2W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a<\xD6\x91\x90a\\\x9BV[\x91P\x91Pa=\x14\x87\x8E_\x01Q\x8F`\xA0\x01Q\x88\x81Q\x81\x10a<\xF8Wa<\xF8aX\x9AV[` \x02` \x01\x01Q\x85\x85\x8B\x8B\x81Q\x81\x10a0\xDDWa0\xDDaX\x9AV[PP[PP[`\x01\x01a;\nV[PPPPPPPPPV[\x80Q_\x90\x15a==W\x81Qa\x19OV[g\r\xE0\xB6\xB3\xA7d\0\0\x92\x91PPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x03a=xW`@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=\xD7\x86a\x160V[\x91P\x91P\x81Q_\x03a=\xEBWPPPa?\xA5V[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a>\x04Wa>\x04aM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a>-W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P_a><\x87\x85\x85a&\xD3V[\x90P_[\x83Q\x81\x10\x15a?\x9FW`@\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>\xC0Wa>\xC0aX\x9AV[` \x02` \x01\x01Q\x83_\x81Q\x81\x10a>\xDAWa>\xDAaX\x9AV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x85\x84\x81Q\x81\x10a?\x0CWa?\x0CaX\x9AV[` \x02` \x01\x01Q\x82_\x81Q\x81\x10a?&Wa?&aX\x9AV[` \x02` \x01\x01\x81\x81RPP\x84\x84\x81Q\x81\x10a?DWa?DaX\x9AV[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a?^Wa?^aX\x9AV[` \x02` \x01\x01\x81\x81RPPa?w\x8B\x89\x85\x85\x85a(%V[\x8A\x85\x81Q\x81\x10a?\x89Wa?\x89aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01RPPP`\x01\x01a>@V[PPPPP[P\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80a?\xD3WPa\x0E\xC4V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x90 T`\xFF\x16\x15a@\x17W`@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\"\xC9\x90\x82\x90a@^\x90\x88\x90\x88\x90\x84\x90\x88\x90a\x08 V[\x85Q` \x87\x01QaE)V[``_a@\x96\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\0a3\xC4V[\x90P\x80_\x81Q\x81\x10a@\xAAWa@\xAAaX\x9AV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10a@\xC8Wa@\xC8aX\x9AV[\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\rl\x83aE{V[_a\rlaA\x1F\x84a=-V[\x83\x90a8\x0EV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 aAU\x90aC\xE5V[\x90Pa\x0E\xC4CaAe\x84\x84aY\xA3V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xA5` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R \x91\x90aE\xD4V[_a\rl\x83\x83aE\xDFV[_a\rl\x83g\r\xE0\xB6\xB3\xA7d\0\0\x84aD9V[\x82_\x03aA\xDBW`@\x80Q` \x81\x01\x90\x91R\x84T\x81RaA\xD4\x90\x82\x90a-\xE9\x90a=-V[\x84Ua\x0E\xC4V[`@\x80Q` \x81\x01\x90\x91R\x84T\x81R_\x90aA\xF7\x90\x85\x84a8\"V[\x90P_aB\x04\x84\x83aY\xA3V[\x90P_aB\x1F\x84a-\xE9aB\x18\x88\x8AaY\xA3V[\x85\x90aA\x9BV[\x87UPPPPPPPV[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x19OW`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15aBmWaBmaM\x99V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15aB\x96W\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\x01aB\xEA\x93\x92\x91\x90a\\\xBDV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aC\x04W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@RaC+\x91\x90\x81\x01\x90a[[V[\x90P_[\x85Q\x81\x10\x15aCsWaCN\x88\x87\x83\x81Q\x81\x10a'\xCEWa'\xCEaX\x9AV[\x83\x82\x81Q\x81\x10aC`WaC`aX\x9AV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01aC/V[P\x90\x96\x95PPPPPPV[_a\rl\x83\x83a8\x0EV[__aC\x97\x86\x86\x86aD9V[\x90P`\x01\x83`\x02\x81\x11\x15aC\xADWaC\xADa\\\xF6V[\x14\x80\x15aC\xC9WP_\x84\x80aC\xC4WaC\xC4a]\nV[\x86\x88\t\x11[\x15aC\xDCWaC\xD9`\x01\x82aY\xA3V[\x90P[\x95\x94PPPPPV[_aC\xF0\x82\x82aF+V[`\x01`\x01`\xE0\x1B\x03\x16\x92\x91PPV[_aD\x0B\x83\x83\x83aFoV[`\x01`\x01`\xE0\x1B\x03\x16\x93\x92PPPV[_a\x19\xF2aD)\x83\x85a]\x1EV[\x85\x90`\x01`\x01`@\x1B\x03\x16a8\x0EV[_\x80\x80_\x19\x85\x87\t\x85\x87\x02\x92P\x82\x81\x10\x83\x82\x03\x03\x91PP\x80_\x03aDpW\x83\x82\x81aDfWaDfa]\nV[\x04\x92PPPa\rlV[\x80\x84\x11aD\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01RtMath: mulDiv overflow`X\x1B`D\x82\x01R`d\x01a \xCEV[_\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\rl\x83\x83aF\xB7V[B\x81\x10\x15aEJW`@Qc\x08\x19\xBD\xCD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[aE^`\x01`\x01`\xA0\x1B\x03\x85\x16\x84\x84aG\x9AV[a\x0E\xC4W`@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\x15aE\xC8W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11aE\xB4W[PPPPP\x90P\x91\x90PV[a\x10\xC3\x83\x83\x83aG\xEEV[_\x81\x81R`\x01\x83\x01` R`@\x81 TaF$WP\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\x19OV[P_a\x19OV[\x81T_\x90\x80\x15aFgWaFQ\x84aFD`\x01\x84a\\lV[_\x91\x82R` \x90\x91 \x01\x90V[T`\x01` \x1B\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x19\xF2V[P\x90\x92\x91PPV[\x82T_\x90\x81aF\x80\x86\x86\x83\x85aH\xF1V[\x90P\x80\x15aF\xADWaF\x97\x86aFD`\x01\x84a\\lV[T`\x01` \x1B\x90\x04`\x01`\x01`\xE0\x1B\x03\x16a\x08\x9EV[P\x91\x94\x93PPPPV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x80\x15aG\x91W_aF\xD9`\x01\x83a\\lV[\x85T\x90\x91P_\x90aF\xEC\x90`\x01\x90a\\lV[\x90P\x81\x81\x14aGKW_\x86_\x01\x82\x81T\x81\x10aG\nWaG\naX\x9AV[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10aG*WaG*aX\x9AV[_\x91\x82R` \x80\x83 \x90\x91\x01\x92\x90\x92U\x91\x82R`\x01\x88\x01\x90R`@\x90 \x83\x90U[\x85T\x86\x90\x80aG\\WaG\\a]=V[`\x01\x90\x03\x81\x81\x90_R` _ \x01_\x90U\x90U\x85`\x01\x01_\x86\x81R` \x01\x90\x81R` \x01_ _\x90U`\x01\x93PPPPa\x19OV[_\x91PPa\x19OV[___aG\xA7\x85\x85aIDV[\x90\x92P\x90P_\x81`\x04\x81\x11\x15aG\xBFWaG\xBFa\\\xF6V[\x14\x80\x15aG\xDDWP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x80a\x08\x9EWPa\x08\x9E\x86\x86\x86aI\x83V[\x82T\x80\x15aH\xA4W_aH\x06\x85aFD`\x01\x85a\\lV[`@\x80Q\x80\x82\x01\x90\x91R\x90Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x80\x84R`\x01` \x1B\x90\x92\x04`\x01`\x01`\xE0\x1B\x03\x16` \x84\x01R\x91\x92P\x90\x85\x16\x10\x15aHXW`@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\x03aH\xA2W\x82aHy\x86aFD`\x01\x86a\\lV[\x80T`\x01`\x01`\xE0\x1B\x03\x92\x90\x92\x16`\x01` \x1B\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\x16`\x01` \x1B\x02\x91\x90\x92\x16\x17\x91\x01UV[_[\x81\x83\x10\x15a\x1BoW_aI\x06\x84\x84aJjV[_\x87\x81R` \x90 \x90\x91Pc\xFF\xFF\xFF\xFF\x86\x16\x90\x82\x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15aI0W\x80\x92PaI>V[aI;\x81`\x01aY\xA3V[\x93P[PaH\xF3V[__\x82Q`A\x03aIxW` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1AaIl\x87\x82\x85\x85aJ\x84V[\x94P\x94PPPPa 1V[P_\x90P`\x02a 1V[___\x85`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x86\x86`@Q`$\x01aI\xAB\x92\x91\x90a]QV[`@\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\x90QaI\xE9\x91\x90a]iV[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14aJ!W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>aJ&V[``\x91P[P\x91P\x91P\x81\x80\x15aJ:WP` \x81Q\x10\x15[\x80\x15a\x08\x9EWP\x80Qc\x0B\x13]?`\xE1\x1B\x90aJ_\x90\x83\x01` \x90\x81\x01\x90\x84\x01aZ\xCCV[\x14\x96\x95PPPPPPV[_aJx`\x02\x84\x84\x18a]zV[a\rl\x90\x84\x84\x16aY\xA3V[_\x80o\xA2\xA8\x91\x8C\xA8[\xAF\xE2 \x16\xD0\xB9\x97\xE4\xDF``\x01`\xFF\x1B\x03\x83\x11\x15aJ\xAFWP_\x90P`\x03aK.V[`@\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\0W=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aK(W_`\x01\x92P\x92PPaK.V[\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\x15aK\xE3W\x91` \x02\x82\x01[\x82\x81\x11\x15aK\xE3W\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\x90aK\xAEV[PaK\xEF\x92\x91PaLCV[P\x90V[\x82\x80T\x82\x82U\x90_R` _ \x90\x81\x01\x92\x82\x15aK\xE3W\x91` \x02\x82\x01[\x82\x81\x11\x15aK\xE3W\x82Q\x82U\x91` \x01\x91\x90`\x01\x01\x90aL\x11V[P\x80T_\x82U\x90_R` _ \x90\x81\x01\x90a$V\x91\x90[[\x80\x82\x11\x15aK\xEFW_\x81U`\x01\x01aLDV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a$VW__\xFD[\x805a\"u\x81aLWV[_____`\xA0\x86\x88\x03\x12\x15aL\x8AW__\xFD[\x855aL\x95\x81aLWV[\x94P` \x86\x015aL\xA5\x81aLWV[\x93P`@\x86\x015aL\xB5\x81aLWV[\x94\x97\x93\x96P\x93\x94``\x81\x015\x94P`\x80\x015\x92\x91PPV[__\x83`\x1F\x84\x01\x12aL\xDDW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aL\xF3W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a 1W__\xFD[__` \x83\x85\x03\x12\x15aM\x1EW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aM3W__\xFD[aM?\x85\x82\x86\x01aL\xCDV[\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(\x1AW\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01aMdV[_` \x82\x84\x03\x12\x15aM\x92W__\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\x15aM\xCFWaM\xCFaM\x99V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aM\xCFWaM\xCFaM\x99V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aN\x1FWaN\x1FaM\x99V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15aN?WaN?aM\x99V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12aNXW__\xFD[\x815aNkaNf\x82aN'V[aM\xF7V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aN\x8CW__\xFD[` \x85\x01[\x83\x81\x10\x15aN\xB2W\x805aN\xA4\x81aLWV[\x83R` \x92\x83\x01\x92\x01aN\x91V[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12aN\xCBW__\xFD[\x815aN\xD9aNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aN\xFAW__\xFD[` \x85\x01[\x83\x81\x10\x15aN\xB2W\x805\x83R` \x92\x83\x01\x92\x01aN\xFFV[___``\x84\x86\x03\x12\x15aO)W__\xFD[\x835aO4\x81aLWV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aONW__\xFD[aOZ\x86\x82\x87\x01aNIV[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aOuW__\xFD[aO\x81\x86\x82\x87\x01aN\xBCV[\x91PP\x92P\x92P\x92V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15aO\xBBW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01aO\x9DV[P\x93\x94\x93PPPPV[` \x81R_a\rl` \x83\x01\x84aO\x8BV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\"uW__\xFD[__\x83`\x1F\x84\x01\x12aO\xFAW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aP\x10W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a 1W__\xFD[____``\x85\x87\x03\x12\x15aP:W__\xFD[\x845aPE\x81aLWV[\x93PaPS` \x86\x01aO\xD7V[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aPmW__\xFD[aPy\x87\x82\x88\x01aO\xEAV[\x95\x98\x94\x97P\x95PPPPV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[____`\x80\x85\x87\x03\x12\x15aP\xACW__\xFD[\x845aP\xB7\x81aLWV[\x93P` \x85\x015aP\xC7\x81aLWV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[_` \x82\x84\x03\x12\x15aP\xECW__\xFD[\x815a\rl\x81aLWV[__`@\x83\x85\x03\x12\x15aQ\x08W__\xFD[\x825aQ\x13\x81aLWV[\x91P` \x83\x015aQ#\x81aLWV[\x80\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15aQHW\x81\x81\x01Q\x83\x82\x01R` \x01aQ0V[PP_\x91\x01RV[_\x81Q\x80\x84RaQg\x81` \x86\x01` \x86\x01aQ.V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\rl` \x83\x01\x84aQPV[_`\xE0\x82\x84\x03\x12\x15aQ\x9DW__\xFD[aQ\xA5aM\xADV[\x90PaQ\xB0\x82aLkV[\x81RaQ\xBE` \x83\x01aLkV[` \x82\x01RaQ\xCF`@\x83\x01aLkV[`@\x82\x01R``\x82\x81\x015\x90\x82\x01RaQ\xEA`\x80\x83\x01aO\xD7V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\x07W__\xFD[aR\x13\x84\x82\x85\x01aNIV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR1W__\xFD[aR=\x84\x82\x85\x01aN\xBCV[`\xC0\x83\x01RP\x92\x91PPV[_` \x82\x84\x03\x12\x15aRYW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aRnW__\xFD[a\x19\xF2\x84\x82\x85\x01aQ\x8DV[_` \x82\x84\x03\x12\x15aR\x8AW__\xFD[\x815`\xFF\x81\x16\x81\x14a\rlW__\xFD[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15aO\xBBW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01aR\xACV[\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\x1E\x90\x85\x01\x82c\xFF\xFF\xFF\xFF\x16\x90RV[P`\xA0\x82\x01Q`\xE0`\xA0\x85\x01RaS8`\xE0\x85\x01\x82aR\x9AV[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01RaC\xDC\x82\x82aO\x8BV[`@\x81R_aSc`@\x83\x01\x85aR\xD3V[\x82\x81\x03` \x84\x01RaC\xDC\x81\x85aO\x8BV[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15aCsW`\x1F\x19\x85\x84\x03\x01\x88RaS\xAD\x83\x83QaO\x8BV[` \x98\x89\x01\x98\x90\x93P\x91\x90\x91\x01\x90`\x01\x01aS\x91V[_`@\x82\x01`@\x83R\x80\x85Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15aT\x1AW`_\x19\x87\x86\x03\x01\x84RaT\x05\x85\x83QaR\xD3V[\x94P` \x93\x84\x01\x93\x91\x90\x91\x01\x90`\x01\x01aS\xE9V[PPPP\x82\x81\x03` \x84\x01RaC\xDC\x81\x85aSuV[`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a$VW__\xFD[____`\x80\x85\x87\x03\x12\x15aTWW__\xFD[\x845aTb\x81aLWV[\x93P` \x85\x015aTr\x81aLWV[\x92P`@\x85\x015aT\x82\x81aT0V[\x91P``\x85\x015aT\x92\x81aT0V[\x93\x96\x92\x95P\x90\x93PPV[___``\x84\x86\x03\x12\x15aT\xAFW__\xFD[\x835aT\xBA\x81aLWV[\x92P` \x84\x015\x91P`@\x84\x015aT\xD1\x81aT0V[\x80\x91PP\x92P\x92P\x92V[`@\x81R_aSc`@\x83\x01\x85aR\x9AV[___`@\x84\x86\x03\x12\x15aU\0W__\xFD[\x835aU\x0B\x81aLWV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aU%W__\xFD[aU1\x86\x82\x87\x01aO\xEAV[\x94\x97\x90\x96P\x93\x94PPPPV[__`@\x83\x85\x03\x12\x15aUOW__\xFD[\x825aUZ\x81aLWV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aUtW__\xFD[aU\x80\x85\x82\x86\x01aNIV[\x91PP\x92P\x92\x90PV[______``\x87\x89\x03\x12\x15aU\x9FW__\xFD[\x865`\x01`\x01`@\x1B\x03\x81\x11\x15aU\xB4W__\xFD[aU\xC0\x89\x82\x8A\x01aL\xCDV[\x90\x97P\x95PP` \x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aU\xDEW__\xFD[aU\xEA\x89\x82\x8A\x01aL\xCDV[\x90\x95P\x93PP`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aV\x08W__\xFD[aV\x14\x89\x82\x8A\x01aL\xCDV[\x97\x9A\x96\x99P\x94\x97P\x92\x95\x93\x94\x92PPPV[` \x81R_a\rl` \x83\x01\x84aR\xD3V[___``\x84\x86\x03\x12\x15aVJW__\xFD[\x835aVU\x81aLWV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aVoW__\xFD[\x84\x01`@\x81\x87\x03\x12\x15aV\x80W__\xFD[aV\x88aM\xD5V[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aV\x9DW__\xFD[\x82\x01`\x1F\x81\x01\x88\x13aV\xADW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15aV\xC6WaV\xC6aM\x99V[aV\xD9`\x1F\x82\x01`\x1F\x19\x16` \x01aM\xF7V[\x81\x81R\x89` \x83\x85\x01\x01\x11\x15aV\xEDW__\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\x15aW0W__\xFD[\x825aW;\x81aLWV[\x94` \x93\x90\x93\x015\x93PPPV[`@\x81R_aSc`@\x83\x01\x85aO\x8BV[\x80\x15\x15\x81\x14a$VW__\xFD[____``\x85\x87\x03\x12\x15aW{W__\xFD[\x845`\x01`\x01`@\x1B\x03\x81\x11\x15aW\x90W__\xFD[\x85\x01`\xE0\x81\x88\x03\x12\x15aW\xA1W__\xFD[\x93P` \x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aW\xBBW__\xFD[aW\xC7\x87\x82\x88\x01aL\xCDV[\x90\x94P\x92PP`@\x85\x015aT\x92\x81aW[V[__`@\x83\x85\x03\x12\x15aW\xECW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aX\x01W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13aX\x11W__\xFD[\x805aX\x1FaNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15aX@W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aXkW\x835aXZ\x81aLWV[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90aXGV[\x94PPPP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aUtW__\xFD[` \x81R_a\rl` \x83\x01\x84aSuV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x825`^\x19\x836\x03\x01\x81\x12aX\xC2W__\xFD[\x91\x90\x91\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12aX\xE1W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aX\xFAW__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a 1W__\xFD[_` \x82\x84\x03\x12\x15aY!W__\xFD[\x81Qa\rl\x81aW[V[` \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[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[_` \x82\x84\x03\x12\x15aY\x84W__\xFD[\x81Qa\rl\x81aT0V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19OWa\x19OaY\x8FV[_\x82`\x1F\x83\x01\x12aY\xC5W__\xFD[\x81QaY\xD3aNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15aY\xF4W__\xFD[` \x85\x01[\x83\x81\x10\x15aN\xB2W\x80Q\x83R` \x92\x83\x01\x92\x01aY\xF9V[__`@\x83\x85\x03\x12\x15aZ\"W__\xFD[\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15aZ7W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13aZGW__\xFD[\x80QaZUaNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15aZvW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15aZ\xA1W\x83QaZ\x90\x81aLWV[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90aZ}V[\x80\x95PPPPP` \x83\x01Q`\x01`\x01`@\x1B\x03\x81\x11\x15aZ\xC0W__\xFD[aU\x80\x85\x82\x86\x01aY\xB6V[_` \x82\x84\x03\x12\x15aZ\xDCW__\xFD[PQ\x91\x90PV[_\x825`\xDE\x19\x836\x03\x01\x81\x12aX\xC2W__\xFD[_a\x19O6\x83aQ\x8DV[_` \x82\x84\x03\x12\x15a[\x12W__\xFD[\x815a\rl\x81aW[V[_` \x82\x84\x03\x12\x15a[-W__\xFD[\x81Qa\rl\x81aLWV[`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01\x81\x90R_\x90a\x19\xF2\x90\x83\x01\x84aR\x9AV[_` \x82\x84\x03\x12\x15a[kW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a[\x80W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a[\x90W__\xFD[\x80Qa[\x9EaNf\x82aN'V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a[\xBFW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x08\x9EW\x83Qa[\xD9\x81aT0V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a[\xC6V[`\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\\\x1FWa\\\x1FaY\x8FV[P`\x01\x01\x90V[\x83\x81R``` \x82\x01R_a\\>``\x83\x01\x85aR\xD3V[\x82\x81\x03`@\x84\x01Ra\x08\x9E\x81\x85aO\x8BV[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x19OWa\x19OaY\x8FV[\x81\x81\x03\x81\x81\x11\x15a\x19OWa\x19OaY\x8FV[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x19OWa\x19OaY\x8FV[__`@\x83\x85\x03\x12\x15a\\\xACW__\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R``` \x82\x01\x81\x90R_\x90a\\\xE0\x90\x83\x01\x85aR\x9AV[\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\x19OWa\x19OaY\x8FV[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[\x82\x81R`@` \x82\x01R_a\x19\xF2`@\x83\x01\x84aQPV[_\x82QaX\xC2\x81\x84` \x87\x01aQ.V[_\x82a]\x94WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V\xFE\0\0\0\0\0\0\0\0\0\0\0\0\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\xA2dipfsX\"\x12 \xE1\xC0a;g\xB7\xD2\x91\xDB\xD5\x1E\x9B\x97\xADY&\x81\xC3\x91\xBC^\xA8\x83\xC6k\xC8r\x8E\xBB\xDE\xED\xD4dsolcC\0\x08\x1B\x003",
3105    );
3106    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3107    /**Custom error with signature `ActivelyDelegated()` and selector `0x77e56a06`.
3108```solidity
3109error ActivelyDelegated();
3110```*/
3111    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3112    #[derive(Clone)]
3113    pub struct ActivelyDelegated {}
3114    #[allow(
3115        non_camel_case_types,
3116        non_snake_case,
3117        clippy::pub_underscore_fields,
3118        clippy::style
3119    )]
3120    const _: () = {
3121        use alloy::sol_types as alloy_sol_types;
3122        #[doc(hidden)]
3123        type UnderlyingSolTuple<'a> = ();
3124        #[doc(hidden)]
3125        type UnderlyingRustTuple<'a> = ();
3126        #[cfg(test)]
3127        #[allow(dead_code, unreachable_patterns)]
3128        fn _type_assertion(
3129            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3130        ) {
3131            match _t {
3132                alloy_sol_types::private::AssertTypeEq::<
3133                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3134                >(_) => {}
3135            }
3136        }
3137        #[automatically_derived]
3138        #[doc(hidden)]
3139        impl ::core::convert::From<ActivelyDelegated> for UnderlyingRustTuple<'_> {
3140            fn from(value: ActivelyDelegated) -> Self {
3141                ()
3142            }
3143        }
3144        #[automatically_derived]
3145        #[doc(hidden)]
3146        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ActivelyDelegated {
3147            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3148                Self {}
3149            }
3150        }
3151        #[automatically_derived]
3152        impl alloy_sol_types::SolError for ActivelyDelegated {
3153            type Parameters<'a> = UnderlyingSolTuple<'a>;
3154            type Token<'a> = <Self::Parameters<
3155                'a,
3156            > as alloy_sol_types::SolType>::Token<'a>;
3157            const SIGNATURE: &'static str = "ActivelyDelegated()";
3158            const SELECTOR: [u8; 4] = [119u8, 229u8, 106u8, 6u8];
3159            #[inline]
3160            fn new<'a>(
3161                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3162            ) -> Self {
3163                tuple.into()
3164            }
3165            #[inline]
3166            fn tokenize(&self) -> Self::Token<'_> {
3167                ()
3168            }
3169        }
3170    };
3171    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3172    /**Custom error with signature `CallerCannotUndelegate()` and selector `0x3c933446`.
3173```solidity
3174error CallerCannotUndelegate();
3175```*/
3176    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3177    #[derive(Clone)]
3178    pub struct CallerCannotUndelegate {}
3179    #[allow(
3180        non_camel_case_types,
3181        non_snake_case,
3182        clippy::pub_underscore_fields,
3183        clippy::style
3184    )]
3185    const _: () = {
3186        use alloy::sol_types as alloy_sol_types;
3187        #[doc(hidden)]
3188        type UnderlyingSolTuple<'a> = ();
3189        #[doc(hidden)]
3190        type UnderlyingRustTuple<'a> = ();
3191        #[cfg(test)]
3192        #[allow(dead_code, unreachable_patterns)]
3193        fn _type_assertion(
3194            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3195        ) {
3196            match _t {
3197                alloy_sol_types::private::AssertTypeEq::<
3198                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3199                >(_) => {}
3200            }
3201        }
3202        #[automatically_derived]
3203        #[doc(hidden)]
3204        impl ::core::convert::From<CallerCannotUndelegate> for UnderlyingRustTuple<'_> {
3205            fn from(value: CallerCannotUndelegate) -> Self {
3206                ()
3207            }
3208        }
3209        #[automatically_derived]
3210        #[doc(hidden)]
3211        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CallerCannotUndelegate {
3212            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3213                Self {}
3214            }
3215        }
3216        #[automatically_derived]
3217        impl alloy_sol_types::SolError for CallerCannotUndelegate {
3218            type Parameters<'a> = UnderlyingSolTuple<'a>;
3219            type Token<'a> = <Self::Parameters<
3220                'a,
3221            > as alloy_sol_types::SolType>::Token<'a>;
3222            const SIGNATURE: &'static str = "CallerCannotUndelegate()";
3223            const SELECTOR: [u8; 4] = [60u8, 147u8, 52u8, 70u8];
3224            #[inline]
3225            fn new<'a>(
3226                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3227            ) -> Self {
3228                tuple.into()
3229            }
3230            #[inline]
3231            fn tokenize(&self) -> Self::Token<'_> {
3232                ()
3233            }
3234        }
3235    };
3236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3237    /**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`.
3238```solidity
3239error CurrentlyPaused();
3240```*/
3241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3242    #[derive(Clone)]
3243    pub struct CurrentlyPaused {}
3244    #[allow(
3245        non_camel_case_types,
3246        non_snake_case,
3247        clippy::pub_underscore_fields,
3248        clippy::style
3249    )]
3250    const _: () = {
3251        use alloy::sol_types as alloy_sol_types;
3252        #[doc(hidden)]
3253        type UnderlyingSolTuple<'a> = ();
3254        #[doc(hidden)]
3255        type UnderlyingRustTuple<'a> = ();
3256        #[cfg(test)]
3257        #[allow(dead_code, unreachable_patterns)]
3258        fn _type_assertion(
3259            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3260        ) {
3261            match _t {
3262                alloy_sol_types::private::AssertTypeEq::<
3263                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3264                >(_) => {}
3265            }
3266        }
3267        #[automatically_derived]
3268        #[doc(hidden)]
3269        impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> {
3270            fn from(value: CurrentlyPaused) -> Self {
3271                ()
3272            }
3273        }
3274        #[automatically_derived]
3275        #[doc(hidden)]
3276        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused {
3277            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3278                Self {}
3279            }
3280        }
3281        #[automatically_derived]
3282        impl alloy_sol_types::SolError for CurrentlyPaused {
3283            type Parameters<'a> = UnderlyingSolTuple<'a>;
3284            type Token<'a> = <Self::Parameters<
3285                'a,
3286            > as alloy_sol_types::SolType>::Token<'a>;
3287            const SIGNATURE: &'static str = "CurrentlyPaused()";
3288            const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8];
3289            #[inline]
3290            fn new<'a>(
3291                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3292            ) -> Self {
3293                tuple.into()
3294            }
3295            #[inline]
3296            fn tokenize(&self) -> Self::Token<'_> {
3297                ()
3298            }
3299        }
3300    };
3301    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3302    /**Custom error with signature `FullySlashed()` and selector `0x28cef1a4`.
3303```solidity
3304error FullySlashed();
3305```*/
3306    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3307    #[derive(Clone)]
3308    pub struct FullySlashed {}
3309    #[allow(
3310        non_camel_case_types,
3311        non_snake_case,
3312        clippy::pub_underscore_fields,
3313        clippy::style
3314    )]
3315    const _: () = {
3316        use alloy::sol_types as alloy_sol_types;
3317        #[doc(hidden)]
3318        type UnderlyingSolTuple<'a> = ();
3319        #[doc(hidden)]
3320        type UnderlyingRustTuple<'a> = ();
3321        #[cfg(test)]
3322        #[allow(dead_code, unreachable_patterns)]
3323        fn _type_assertion(
3324            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3325        ) {
3326            match _t {
3327                alloy_sol_types::private::AssertTypeEq::<
3328                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3329                >(_) => {}
3330            }
3331        }
3332        #[automatically_derived]
3333        #[doc(hidden)]
3334        impl ::core::convert::From<FullySlashed> for UnderlyingRustTuple<'_> {
3335            fn from(value: FullySlashed) -> Self {
3336                ()
3337            }
3338        }
3339        #[automatically_derived]
3340        #[doc(hidden)]
3341        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FullySlashed {
3342            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3343                Self {}
3344            }
3345        }
3346        #[automatically_derived]
3347        impl alloy_sol_types::SolError for FullySlashed {
3348            type Parameters<'a> = UnderlyingSolTuple<'a>;
3349            type Token<'a> = <Self::Parameters<
3350                'a,
3351            > as alloy_sol_types::SolType>::Token<'a>;
3352            const SIGNATURE: &'static str = "FullySlashed()";
3353            const SELECTOR: [u8; 4] = [40u8, 206u8, 241u8, 164u8];
3354            #[inline]
3355            fn new<'a>(
3356                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3357            ) -> Self {
3358                tuple.into()
3359            }
3360            #[inline]
3361            fn tokenize(&self) -> Self::Token<'_> {
3362                ()
3363            }
3364        }
3365    };
3366    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3367    /**Custom error with signature `InputAddressZero()` and selector `0x73632176`.
3368```solidity
3369error InputAddressZero();
3370```*/
3371    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3372    #[derive(Clone)]
3373    pub struct InputAddressZero {}
3374    #[allow(
3375        non_camel_case_types,
3376        non_snake_case,
3377        clippy::pub_underscore_fields,
3378        clippy::style
3379    )]
3380    const _: () = {
3381        use alloy::sol_types as alloy_sol_types;
3382        #[doc(hidden)]
3383        type UnderlyingSolTuple<'a> = ();
3384        #[doc(hidden)]
3385        type UnderlyingRustTuple<'a> = ();
3386        #[cfg(test)]
3387        #[allow(dead_code, unreachable_patterns)]
3388        fn _type_assertion(
3389            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3390        ) {
3391            match _t {
3392                alloy_sol_types::private::AssertTypeEq::<
3393                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3394                >(_) => {}
3395            }
3396        }
3397        #[automatically_derived]
3398        #[doc(hidden)]
3399        impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> {
3400            fn from(value: InputAddressZero) -> Self {
3401                ()
3402            }
3403        }
3404        #[automatically_derived]
3405        #[doc(hidden)]
3406        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero {
3407            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3408                Self {}
3409            }
3410        }
3411        #[automatically_derived]
3412        impl alloy_sol_types::SolError for InputAddressZero {
3413            type Parameters<'a> = UnderlyingSolTuple<'a>;
3414            type Token<'a> = <Self::Parameters<
3415                'a,
3416            > as alloy_sol_types::SolType>::Token<'a>;
3417            const SIGNATURE: &'static str = "InputAddressZero()";
3418            const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8];
3419            #[inline]
3420            fn new<'a>(
3421                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3422            ) -> Self {
3423                tuple.into()
3424            }
3425            #[inline]
3426            fn tokenize(&self) -> Self::Token<'_> {
3427                ()
3428            }
3429        }
3430    };
3431    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3432    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
3433```solidity
3434error InputArrayLengthMismatch();
3435```*/
3436    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3437    #[derive(Clone)]
3438    pub struct InputArrayLengthMismatch {}
3439    #[allow(
3440        non_camel_case_types,
3441        non_snake_case,
3442        clippy::pub_underscore_fields,
3443        clippy::style
3444    )]
3445    const _: () = {
3446        use alloy::sol_types as alloy_sol_types;
3447        #[doc(hidden)]
3448        type UnderlyingSolTuple<'a> = ();
3449        #[doc(hidden)]
3450        type UnderlyingRustTuple<'a> = ();
3451        #[cfg(test)]
3452        #[allow(dead_code, unreachable_patterns)]
3453        fn _type_assertion(
3454            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3455        ) {
3456            match _t {
3457                alloy_sol_types::private::AssertTypeEq::<
3458                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3459                >(_) => {}
3460            }
3461        }
3462        #[automatically_derived]
3463        #[doc(hidden)]
3464        impl ::core::convert::From<InputArrayLengthMismatch>
3465        for UnderlyingRustTuple<'_> {
3466            fn from(value: InputArrayLengthMismatch) -> Self {
3467                ()
3468            }
3469        }
3470        #[automatically_derived]
3471        #[doc(hidden)]
3472        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3473        for InputArrayLengthMismatch {
3474            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3475                Self {}
3476            }
3477        }
3478        #[automatically_derived]
3479        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
3480            type Parameters<'a> = UnderlyingSolTuple<'a>;
3481            type Token<'a> = <Self::Parameters<
3482                'a,
3483            > as alloy_sol_types::SolType>::Token<'a>;
3484            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
3485            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
3486            #[inline]
3487            fn new<'a>(
3488                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3489            ) -> Self {
3490                tuple.into()
3491            }
3492            #[inline]
3493            fn tokenize(&self) -> Self::Token<'_> {
3494                ()
3495            }
3496        }
3497    };
3498    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3499    /**Custom error with signature `InputArrayLengthZero()` and selector `0x796cc525`.
3500```solidity
3501error InputArrayLengthZero();
3502```*/
3503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3504    #[derive(Clone)]
3505    pub struct InputArrayLengthZero {}
3506    #[allow(
3507        non_camel_case_types,
3508        non_snake_case,
3509        clippy::pub_underscore_fields,
3510        clippy::style
3511    )]
3512    const _: () = {
3513        use alloy::sol_types as alloy_sol_types;
3514        #[doc(hidden)]
3515        type UnderlyingSolTuple<'a> = ();
3516        #[doc(hidden)]
3517        type UnderlyingRustTuple<'a> = ();
3518        #[cfg(test)]
3519        #[allow(dead_code, unreachable_patterns)]
3520        fn _type_assertion(
3521            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3522        ) {
3523            match _t {
3524                alloy_sol_types::private::AssertTypeEq::<
3525                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3526                >(_) => {}
3527            }
3528        }
3529        #[automatically_derived]
3530        #[doc(hidden)]
3531        impl ::core::convert::From<InputArrayLengthZero> for UnderlyingRustTuple<'_> {
3532            fn from(value: InputArrayLengthZero) -> Self {
3533                ()
3534            }
3535        }
3536        #[automatically_derived]
3537        #[doc(hidden)]
3538        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputArrayLengthZero {
3539            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3540                Self {}
3541            }
3542        }
3543        #[automatically_derived]
3544        impl alloy_sol_types::SolError for InputArrayLengthZero {
3545            type Parameters<'a> = UnderlyingSolTuple<'a>;
3546            type Token<'a> = <Self::Parameters<
3547                'a,
3548            > as alloy_sol_types::SolType>::Token<'a>;
3549            const SIGNATURE: &'static str = "InputArrayLengthZero()";
3550            const SELECTOR: [u8; 4] = [121u8, 108u8, 197u8, 37u8];
3551            #[inline]
3552            fn new<'a>(
3553                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3554            ) -> Self {
3555                tuple.into()
3556            }
3557            #[inline]
3558            fn tokenize(&self) -> Self::Token<'_> {
3559                ()
3560            }
3561        }
3562    };
3563    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3564    /**Custom error with signature `InvalidNewPausedStatus()` and selector `0xc61dca5d`.
3565```solidity
3566error InvalidNewPausedStatus();
3567```*/
3568    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3569    #[derive(Clone)]
3570    pub struct InvalidNewPausedStatus {}
3571    #[allow(
3572        non_camel_case_types,
3573        non_snake_case,
3574        clippy::pub_underscore_fields,
3575        clippy::style
3576    )]
3577    const _: () = {
3578        use alloy::sol_types as alloy_sol_types;
3579        #[doc(hidden)]
3580        type UnderlyingSolTuple<'a> = ();
3581        #[doc(hidden)]
3582        type UnderlyingRustTuple<'a> = ();
3583        #[cfg(test)]
3584        #[allow(dead_code, unreachable_patterns)]
3585        fn _type_assertion(
3586            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3587        ) {
3588            match _t {
3589                alloy_sol_types::private::AssertTypeEq::<
3590                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3591                >(_) => {}
3592            }
3593        }
3594        #[automatically_derived]
3595        #[doc(hidden)]
3596        impl ::core::convert::From<InvalidNewPausedStatus> for UnderlyingRustTuple<'_> {
3597            fn from(value: InvalidNewPausedStatus) -> Self {
3598                ()
3599            }
3600        }
3601        #[automatically_derived]
3602        #[doc(hidden)]
3603        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidNewPausedStatus {
3604            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3605                Self {}
3606            }
3607        }
3608        #[automatically_derived]
3609        impl alloy_sol_types::SolError for InvalidNewPausedStatus {
3610            type Parameters<'a> = UnderlyingSolTuple<'a>;
3611            type Token<'a> = <Self::Parameters<
3612                'a,
3613            > as alloy_sol_types::SolType>::Token<'a>;
3614            const SIGNATURE: &'static str = "InvalidNewPausedStatus()";
3615            const SELECTOR: [u8; 4] = [198u8, 29u8, 202u8, 93u8];
3616            #[inline]
3617            fn new<'a>(
3618                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3619            ) -> Self {
3620                tuple.into()
3621            }
3622            #[inline]
3623            fn tokenize(&self) -> Self::Token<'_> {
3624                ()
3625            }
3626        }
3627    };
3628    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3629    /**Custom error with signature `InvalidPermissions()` and selector `0x932d94f7`.
3630```solidity
3631error InvalidPermissions();
3632```*/
3633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3634    #[derive(Clone)]
3635    pub struct InvalidPermissions {}
3636    #[allow(
3637        non_camel_case_types,
3638        non_snake_case,
3639        clippy::pub_underscore_fields,
3640        clippy::style
3641    )]
3642    const _: () = {
3643        use alloy::sol_types as alloy_sol_types;
3644        #[doc(hidden)]
3645        type UnderlyingSolTuple<'a> = ();
3646        #[doc(hidden)]
3647        type UnderlyingRustTuple<'a> = ();
3648        #[cfg(test)]
3649        #[allow(dead_code, unreachable_patterns)]
3650        fn _type_assertion(
3651            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3652        ) {
3653            match _t {
3654                alloy_sol_types::private::AssertTypeEq::<
3655                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3656                >(_) => {}
3657            }
3658        }
3659        #[automatically_derived]
3660        #[doc(hidden)]
3661        impl ::core::convert::From<InvalidPermissions> for UnderlyingRustTuple<'_> {
3662            fn from(value: InvalidPermissions) -> Self {
3663                ()
3664            }
3665        }
3666        #[automatically_derived]
3667        #[doc(hidden)]
3668        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPermissions {
3669            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3670                Self {}
3671            }
3672        }
3673        #[automatically_derived]
3674        impl alloy_sol_types::SolError for InvalidPermissions {
3675            type Parameters<'a> = UnderlyingSolTuple<'a>;
3676            type Token<'a> = <Self::Parameters<
3677                'a,
3678            > as alloy_sol_types::SolType>::Token<'a>;
3679            const SIGNATURE: &'static str = "InvalidPermissions()";
3680            const SELECTOR: [u8; 4] = [147u8, 45u8, 148u8, 247u8];
3681            #[inline]
3682            fn new<'a>(
3683                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3684            ) -> Self {
3685                tuple.into()
3686            }
3687            #[inline]
3688            fn tokenize(&self) -> Self::Token<'_> {
3689                ()
3690            }
3691        }
3692    };
3693    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3694    /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`.
3695```solidity
3696error InvalidShortString();
3697```*/
3698    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3699    #[derive(Clone)]
3700    pub struct InvalidShortString {}
3701    #[allow(
3702        non_camel_case_types,
3703        non_snake_case,
3704        clippy::pub_underscore_fields,
3705        clippy::style
3706    )]
3707    const _: () = {
3708        use alloy::sol_types as alloy_sol_types;
3709        #[doc(hidden)]
3710        type UnderlyingSolTuple<'a> = ();
3711        #[doc(hidden)]
3712        type UnderlyingRustTuple<'a> = ();
3713        #[cfg(test)]
3714        #[allow(dead_code, unreachable_patterns)]
3715        fn _type_assertion(
3716            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3717        ) {
3718            match _t {
3719                alloy_sol_types::private::AssertTypeEq::<
3720                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3721                >(_) => {}
3722            }
3723        }
3724        #[automatically_derived]
3725        #[doc(hidden)]
3726        impl ::core::convert::From<InvalidShortString> for UnderlyingRustTuple<'_> {
3727            fn from(value: InvalidShortString) -> Self {
3728                ()
3729            }
3730        }
3731        #[automatically_derived]
3732        #[doc(hidden)]
3733        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidShortString {
3734            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3735                Self {}
3736            }
3737        }
3738        #[automatically_derived]
3739        impl alloy_sol_types::SolError for InvalidShortString {
3740            type Parameters<'a> = UnderlyingSolTuple<'a>;
3741            type Token<'a> = <Self::Parameters<
3742                'a,
3743            > as alloy_sol_types::SolType>::Token<'a>;
3744            const SIGNATURE: &'static str = "InvalidShortString()";
3745            const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8];
3746            #[inline]
3747            fn new<'a>(
3748                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3749            ) -> Self {
3750                tuple.into()
3751            }
3752            #[inline]
3753            fn tokenize(&self) -> Self::Token<'_> {
3754                ()
3755            }
3756        }
3757    };
3758    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3759    /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`.
3760```solidity
3761error InvalidSignature();
3762```*/
3763    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3764    #[derive(Clone)]
3765    pub struct InvalidSignature {}
3766    #[allow(
3767        non_camel_case_types,
3768        non_snake_case,
3769        clippy::pub_underscore_fields,
3770        clippy::style
3771    )]
3772    const _: () = {
3773        use alloy::sol_types as alloy_sol_types;
3774        #[doc(hidden)]
3775        type UnderlyingSolTuple<'a> = ();
3776        #[doc(hidden)]
3777        type UnderlyingRustTuple<'a> = ();
3778        #[cfg(test)]
3779        #[allow(dead_code, unreachable_patterns)]
3780        fn _type_assertion(
3781            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3782        ) {
3783            match _t {
3784                alloy_sol_types::private::AssertTypeEq::<
3785                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3786                >(_) => {}
3787            }
3788        }
3789        #[automatically_derived]
3790        #[doc(hidden)]
3791        impl ::core::convert::From<InvalidSignature> for UnderlyingRustTuple<'_> {
3792            fn from(value: InvalidSignature) -> Self {
3793                ()
3794            }
3795        }
3796        #[automatically_derived]
3797        #[doc(hidden)]
3798        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSignature {
3799            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3800                Self {}
3801            }
3802        }
3803        #[automatically_derived]
3804        impl alloy_sol_types::SolError for InvalidSignature {
3805            type Parameters<'a> = UnderlyingSolTuple<'a>;
3806            type Token<'a> = <Self::Parameters<
3807                'a,
3808            > as alloy_sol_types::SolType>::Token<'a>;
3809            const SIGNATURE: &'static str = "InvalidSignature()";
3810            const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8];
3811            #[inline]
3812            fn new<'a>(
3813                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3814            ) -> Self {
3815                tuple.into()
3816            }
3817            #[inline]
3818            fn tokenize(&self) -> Self::Token<'_> {
3819                ()
3820            }
3821        }
3822    };
3823    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3824    /**Custom error with signature `InvalidSnapshotOrdering()` and selector `0x2a371c7e`.
3825```solidity
3826error InvalidSnapshotOrdering();
3827```*/
3828    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3829    #[derive(Clone)]
3830    pub struct InvalidSnapshotOrdering {}
3831    #[allow(
3832        non_camel_case_types,
3833        non_snake_case,
3834        clippy::pub_underscore_fields,
3835        clippy::style
3836    )]
3837    const _: () = {
3838        use alloy::sol_types as alloy_sol_types;
3839        #[doc(hidden)]
3840        type UnderlyingSolTuple<'a> = ();
3841        #[doc(hidden)]
3842        type UnderlyingRustTuple<'a> = ();
3843        #[cfg(test)]
3844        #[allow(dead_code, unreachable_patterns)]
3845        fn _type_assertion(
3846            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3847        ) {
3848            match _t {
3849                alloy_sol_types::private::AssertTypeEq::<
3850                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3851                >(_) => {}
3852            }
3853        }
3854        #[automatically_derived]
3855        #[doc(hidden)]
3856        impl ::core::convert::From<InvalidSnapshotOrdering> for UnderlyingRustTuple<'_> {
3857            fn from(value: InvalidSnapshotOrdering) -> Self {
3858                ()
3859            }
3860        }
3861        #[automatically_derived]
3862        #[doc(hidden)]
3863        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSnapshotOrdering {
3864            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3865                Self {}
3866            }
3867        }
3868        #[automatically_derived]
3869        impl alloy_sol_types::SolError for InvalidSnapshotOrdering {
3870            type Parameters<'a> = UnderlyingSolTuple<'a>;
3871            type Token<'a> = <Self::Parameters<
3872                'a,
3873            > as alloy_sol_types::SolType>::Token<'a>;
3874            const SIGNATURE: &'static str = "InvalidSnapshotOrdering()";
3875            const SELECTOR: [u8; 4] = [42u8, 55u8, 28u8, 126u8];
3876            #[inline]
3877            fn new<'a>(
3878                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3879            ) -> Self {
3880                tuple.into()
3881            }
3882            #[inline]
3883            fn tokenize(&self) -> Self::Token<'_> {
3884                ()
3885            }
3886        }
3887    };
3888    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3889    /**Custom error with signature `NotActivelyDelegated()` and selector `0xa5c7c445`.
3890```solidity
3891error NotActivelyDelegated();
3892```*/
3893    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3894    #[derive(Clone)]
3895    pub struct NotActivelyDelegated {}
3896    #[allow(
3897        non_camel_case_types,
3898        non_snake_case,
3899        clippy::pub_underscore_fields,
3900        clippy::style
3901    )]
3902    const _: () = {
3903        use alloy::sol_types as alloy_sol_types;
3904        #[doc(hidden)]
3905        type UnderlyingSolTuple<'a> = ();
3906        #[doc(hidden)]
3907        type UnderlyingRustTuple<'a> = ();
3908        #[cfg(test)]
3909        #[allow(dead_code, unreachable_patterns)]
3910        fn _type_assertion(
3911            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3912        ) {
3913            match _t {
3914                alloy_sol_types::private::AssertTypeEq::<
3915                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3916                >(_) => {}
3917            }
3918        }
3919        #[automatically_derived]
3920        #[doc(hidden)]
3921        impl ::core::convert::From<NotActivelyDelegated> for UnderlyingRustTuple<'_> {
3922            fn from(value: NotActivelyDelegated) -> Self {
3923                ()
3924            }
3925        }
3926        #[automatically_derived]
3927        #[doc(hidden)]
3928        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotActivelyDelegated {
3929            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3930                Self {}
3931            }
3932        }
3933        #[automatically_derived]
3934        impl alloy_sol_types::SolError for NotActivelyDelegated {
3935            type Parameters<'a> = UnderlyingSolTuple<'a>;
3936            type Token<'a> = <Self::Parameters<
3937                'a,
3938            > as alloy_sol_types::SolType>::Token<'a>;
3939            const SIGNATURE: &'static str = "NotActivelyDelegated()";
3940            const SELECTOR: [u8; 4] = [165u8, 199u8, 196u8, 69u8];
3941            #[inline]
3942            fn new<'a>(
3943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3944            ) -> Self {
3945                tuple.into()
3946            }
3947            #[inline]
3948            fn tokenize(&self) -> Self::Token<'_> {
3949                ()
3950            }
3951        }
3952    };
3953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3954    /**Custom error with signature `OnlyAllocationManager()` and selector `0x23d871a5`.
3955```solidity
3956error OnlyAllocationManager();
3957```*/
3958    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3959    #[derive(Clone)]
3960    pub struct OnlyAllocationManager {}
3961    #[allow(
3962        non_camel_case_types,
3963        non_snake_case,
3964        clippy::pub_underscore_fields,
3965        clippy::style
3966    )]
3967    const _: () = {
3968        use alloy::sol_types as alloy_sol_types;
3969        #[doc(hidden)]
3970        type UnderlyingSolTuple<'a> = ();
3971        #[doc(hidden)]
3972        type UnderlyingRustTuple<'a> = ();
3973        #[cfg(test)]
3974        #[allow(dead_code, unreachable_patterns)]
3975        fn _type_assertion(
3976            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3977        ) {
3978            match _t {
3979                alloy_sol_types::private::AssertTypeEq::<
3980                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3981                >(_) => {}
3982            }
3983        }
3984        #[automatically_derived]
3985        #[doc(hidden)]
3986        impl ::core::convert::From<OnlyAllocationManager> for UnderlyingRustTuple<'_> {
3987            fn from(value: OnlyAllocationManager) -> Self {
3988                ()
3989            }
3990        }
3991        #[automatically_derived]
3992        #[doc(hidden)]
3993        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyAllocationManager {
3994            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3995                Self {}
3996            }
3997        }
3998        #[automatically_derived]
3999        impl alloy_sol_types::SolError for OnlyAllocationManager {
4000            type Parameters<'a> = UnderlyingSolTuple<'a>;
4001            type Token<'a> = <Self::Parameters<
4002                'a,
4003            > as alloy_sol_types::SolType>::Token<'a>;
4004            const SIGNATURE: &'static str = "OnlyAllocationManager()";
4005            const SELECTOR: [u8; 4] = [35u8, 216u8, 113u8, 165u8];
4006            #[inline]
4007            fn new<'a>(
4008                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4009            ) -> Self {
4010                tuple.into()
4011            }
4012            #[inline]
4013            fn tokenize(&self) -> Self::Token<'_> {
4014                ()
4015            }
4016        }
4017    };
4018    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4019    /**Custom error with signature `OnlyEigenPodManager()` and selector `0xc84e9984`.
4020```solidity
4021error OnlyEigenPodManager();
4022```*/
4023    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4024    #[derive(Clone)]
4025    pub struct OnlyEigenPodManager {}
4026    #[allow(
4027        non_camel_case_types,
4028        non_snake_case,
4029        clippy::pub_underscore_fields,
4030        clippy::style
4031    )]
4032    const _: () = {
4033        use alloy::sol_types as alloy_sol_types;
4034        #[doc(hidden)]
4035        type UnderlyingSolTuple<'a> = ();
4036        #[doc(hidden)]
4037        type UnderlyingRustTuple<'a> = ();
4038        #[cfg(test)]
4039        #[allow(dead_code, unreachable_patterns)]
4040        fn _type_assertion(
4041            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4042        ) {
4043            match _t {
4044                alloy_sol_types::private::AssertTypeEq::<
4045                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4046                >(_) => {}
4047            }
4048        }
4049        #[automatically_derived]
4050        #[doc(hidden)]
4051        impl ::core::convert::From<OnlyEigenPodManager> for UnderlyingRustTuple<'_> {
4052            fn from(value: OnlyEigenPodManager) -> Self {
4053                ()
4054            }
4055        }
4056        #[automatically_derived]
4057        #[doc(hidden)]
4058        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyEigenPodManager {
4059            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4060                Self {}
4061            }
4062        }
4063        #[automatically_derived]
4064        impl alloy_sol_types::SolError for OnlyEigenPodManager {
4065            type Parameters<'a> = UnderlyingSolTuple<'a>;
4066            type Token<'a> = <Self::Parameters<
4067                'a,
4068            > as alloy_sol_types::SolType>::Token<'a>;
4069            const SIGNATURE: &'static str = "OnlyEigenPodManager()";
4070            const SELECTOR: [u8; 4] = [200u8, 78u8, 153u8, 132u8];
4071            #[inline]
4072            fn new<'a>(
4073                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4074            ) -> Self {
4075                tuple.into()
4076            }
4077            #[inline]
4078            fn tokenize(&self) -> Self::Token<'_> {
4079                ()
4080            }
4081        }
4082    };
4083    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4084    /**Custom error with signature `OnlyPauser()` and selector `0x75df51dc`.
4085```solidity
4086error OnlyPauser();
4087```*/
4088    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4089    #[derive(Clone)]
4090    pub struct OnlyPauser {}
4091    #[allow(
4092        non_camel_case_types,
4093        non_snake_case,
4094        clippy::pub_underscore_fields,
4095        clippy::style
4096    )]
4097    const _: () = {
4098        use alloy::sol_types as alloy_sol_types;
4099        #[doc(hidden)]
4100        type UnderlyingSolTuple<'a> = ();
4101        #[doc(hidden)]
4102        type UnderlyingRustTuple<'a> = ();
4103        #[cfg(test)]
4104        #[allow(dead_code, unreachable_patterns)]
4105        fn _type_assertion(
4106            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4107        ) {
4108            match _t {
4109                alloy_sol_types::private::AssertTypeEq::<
4110                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4111                >(_) => {}
4112            }
4113        }
4114        #[automatically_derived]
4115        #[doc(hidden)]
4116        impl ::core::convert::From<OnlyPauser> for UnderlyingRustTuple<'_> {
4117            fn from(value: OnlyPauser) -> Self {
4118                ()
4119            }
4120        }
4121        #[automatically_derived]
4122        #[doc(hidden)]
4123        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyPauser {
4124            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4125                Self {}
4126            }
4127        }
4128        #[automatically_derived]
4129        impl alloy_sol_types::SolError for OnlyPauser {
4130            type Parameters<'a> = UnderlyingSolTuple<'a>;
4131            type Token<'a> = <Self::Parameters<
4132                'a,
4133            > as alloy_sol_types::SolType>::Token<'a>;
4134            const SIGNATURE: &'static str = "OnlyPauser()";
4135            const SELECTOR: [u8; 4] = [117u8, 223u8, 81u8, 220u8];
4136            #[inline]
4137            fn new<'a>(
4138                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4139            ) -> Self {
4140                tuple.into()
4141            }
4142            #[inline]
4143            fn tokenize(&self) -> Self::Token<'_> {
4144                ()
4145            }
4146        }
4147    };
4148    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4149    /**Custom error with signature `OnlyStrategyManagerOrEigenPodManager()` and selector `0x11481a94`.
4150```solidity
4151error OnlyStrategyManagerOrEigenPodManager();
4152```*/
4153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4154    #[derive(Clone)]
4155    pub struct OnlyStrategyManagerOrEigenPodManager {}
4156    #[allow(
4157        non_camel_case_types,
4158        non_snake_case,
4159        clippy::pub_underscore_fields,
4160        clippy::style
4161    )]
4162    const _: () = {
4163        use alloy::sol_types as alloy_sol_types;
4164        #[doc(hidden)]
4165        type UnderlyingSolTuple<'a> = ();
4166        #[doc(hidden)]
4167        type UnderlyingRustTuple<'a> = ();
4168        #[cfg(test)]
4169        #[allow(dead_code, unreachable_patterns)]
4170        fn _type_assertion(
4171            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4172        ) {
4173            match _t {
4174                alloy_sol_types::private::AssertTypeEq::<
4175                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4176                >(_) => {}
4177            }
4178        }
4179        #[automatically_derived]
4180        #[doc(hidden)]
4181        impl ::core::convert::From<OnlyStrategyManagerOrEigenPodManager>
4182        for UnderlyingRustTuple<'_> {
4183            fn from(value: OnlyStrategyManagerOrEigenPodManager) -> Self {
4184                ()
4185            }
4186        }
4187        #[automatically_derived]
4188        #[doc(hidden)]
4189        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4190        for OnlyStrategyManagerOrEigenPodManager {
4191            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4192                Self {}
4193            }
4194        }
4195        #[automatically_derived]
4196        impl alloy_sol_types::SolError for OnlyStrategyManagerOrEigenPodManager {
4197            type Parameters<'a> = UnderlyingSolTuple<'a>;
4198            type Token<'a> = <Self::Parameters<
4199                'a,
4200            > as alloy_sol_types::SolType>::Token<'a>;
4201            const SIGNATURE: &'static str = "OnlyStrategyManagerOrEigenPodManager()";
4202            const SELECTOR: [u8; 4] = [17u8, 72u8, 26u8, 148u8];
4203            #[inline]
4204            fn new<'a>(
4205                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4206            ) -> Self {
4207                tuple.into()
4208            }
4209            #[inline]
4210            fn tokenize(&self) -> Self::Token<'_> {
4211                ()
4212            }
4213        }
4214    };
4215    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4216    /**Custom error with signature `OnlyUnpauser()` and selector `0x794821ff`.
4217```solidity
4218error OnlyUnpauser();
4219```*/
4220    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4221    #[derive(Clone)]
4222    pub struct OnlyUnpauser {}
4223    #[allow(
4224        non_camel_case_types,
4225        non_snake_case,
4226        clippy::pub_underscore_fields,
4227        clippy::style
4228    )]
4229    const _: () = {
4230        use alloy::sol_types as alloy_sol_types;
4231        #[doc(hidden)]
4232        type UnderlyingSolTuple<'a> = ();
4233        #[doc(hidden)]
4234        type UnderlyingRustTuple<'a> = ();
4235        #[cfg(test)]
4236        #[allow(dead_code, unreachable_patterns)]
4237        fn _type_assertion(
4238            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4239        ) {
4240            match _t {
4241                alloy_sol_types::private::AssertTypeEq::<
4242                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4243                >(_) => {}
4244            }
4245        }
4246        #[automatically_derived]
4247        #[doc(hidden)]
4248        impl ::core::convert::From<OnlyUnpauser> for UnderlyingRustTuple<'_> {
4249            fn from(value: OnlyUnpauser) -> Self {
4250                ()
4251            }
4252        }
4253        #[automatically_derived]
4254        #[doc(hidden)]
4255        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyUnpauser {
4256            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4257                Self {}
4258            }
4259        }
4260        #[automatically_derived]
4261        impl alloy_sol_types::SolError for OnlyUnpauser {
4262            type Parameters<'a> = UnderlyingSolTuple<'a>;
4263            type Token<'a> = <Self::Parameters<
4264                'a,
4265            > as alloy_sol_types::SolType>::Token<'a>;
4266            const SIGNATURE: &'static str = "OnlyUnpauser()";
4267            const SELECTOR: [u8; 4] = [121u8, 72u8, 33u8, 255u8];
4268            #[inline]
4269            fn new<'a>(
4270                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4271            ) -> Self {
4272                tuple.into()
4273            }
4274            #[inline]
4275            fn tokenize(&self) -> Self::Token<'_> {
4276                ()
4277            }
4278        }
4279    };
4280    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4281    /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`.
4282```solidity
4283error OperatorNotRegistered();
4284```*/
4285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4286    #[derive(Clone)]
4287    pub struct OperatorNotRegistered {}
4288    #[allow(
4289        non_camel_case_types,
4290        non_snake_case,
4291        clippy::pub_underscore_fields,
4292        clippy::style
4293    )]
4294    const _: () = {
4295        use alloy::sol_types as alloy_sol_types;
4296        #[doc(hidden)]
4297        type UnderlyingSolTuple<'a> = ();
4298        #[doc(hidden)]
4299        type UnderlyingRustTuple<'a> = ();
4300        #[cfg(test)]
4301        #[allow(dead_code, unreachable_patterns)]
4302        fn _type_assertion(
4303            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4304        ) {
4305            match _t {
4306                alloy_sol_types::private::AssertTypeEq::<
4307                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4308                >(_) => {}
4309            }
4310        }
4311        #[automatically_derived]
4312        #[doc(hidden)]
4313        impl ::core::convert::From<OperatorNotRegistered> for UnderlyingRustTuple<'_> {
4314            fn from(value: OperatorNotRegistered) -> Self {
4315                ()
4316            }
4317        }
4318        #[automatically_derived]
4319        #[doc(hidden)]
4320        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorNotRegistered {
4321            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4322                Self {}
4323            }
4324        }
4325        #[automatically_derived]
4326        impl alloy_sol_types::SolError for OperatorNotRegistered {
4327            type Parameters<'a> = UnderlyingSolTuple<'a>;
4328            type Token<'a> = <Self::Parameters<
4329                'a,
4330            > as alloy_sol_types::SolType>::Token<'a>;
4331            const SIGNATURE: &'static str = "OperatorNotRegistered()";
4332            const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8];
4333            #[inline]
4334            fn new<'a>(
4335                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4336            ) -> Self {
4337                tuple.into()
4338            }
4339            #[inline]
4340            fn tokenize(&self) -> Self::Token<'_> {
4341                ()
4342            }
4343        }
4344    };
4345    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4346    /**Custom error with signature `OperatorsCannotUndelegate()` and selector `0x8e5199a8`.
4347```solidity
4348error OperatorsCannotUndelegate();
4349```*/
4350    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4351    #[derive(Clone)]
4352    pub struct OperatorsCannotUndelegate {}
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<OperatorsCannotUndelegate>
4379        for UnderlyingRustTuple<'_> {
4380            fn from(value: OperatorsCannotUndelegate) -> Self {
4381                ()
4382            }
4383        }
4384        #[automatically_derived]
4385        #[doc(hidden)]
4386        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4387        for OperatorsCannotUndelegate {
4388            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4389                Self {}
4390            }
4391        }
4392        #[automatically_derived]
4393        impl alloy_sol_types::SolError for OperatorsCannotUndelegate {
4394            type Parameters<'a> = UnderlyingSolTuple<'a>;
4395            type Token<'a> = <Self::Parameters<
4396                'a,
4397            > as alloy_sol_types::SolType>::Token<'a>;
4398            const SIGNATURE: &'static str = "OperatorsCannotUndelegate()";
4399            const SELECTOR: [u8; 4] = [142u8, 81u8, 153u8, 168u8];
4400            #[inline]
4401            fn new<'a>(
4402                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4403            ) -> Self {
4404                tuple.into()
4405            }
4406            #[inline]
4407            fn tokenize(&self) -> Self::Token<'_> {
4408                ()
4409            }
4410        }
4411    };
4412    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4413    /**Custom error with signature `SaltSpent()` and selector `0x35313244`.
4414```solidity
4415error SaltSpent();
4416```*/
4417    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4418    #[derive(Clone)]
4419    pub struct SaltSpent {}
4420    #[allow(
4421        non_camel_case_types,
4422        non_snake_case,
4423        clippy::pub_underscore_fields,
4424        clippy::style
4425    )]
4426    const _: () = {
4427        use alloy::sol_types as alloy_sol_types;
4428        #[doc(hidden)]
4429        type UnderlyingSolTuple<'a> = ();
4430        #[doc(hidden)]
4431        type UnderlyingRustTuple<'a> = ();
4432        #[cfg(test)]
4433        #[allow(dead_code, unreachable_patterns)]
4434        fn _type_assertion(
4435            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4436        ) {
4437            match _t {
4438                alloy_sol_types::private::AssertTypeEq::<
4439                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4440                >(_) => {}
4441            }
4442        }
4443        #[automatically_derived]
4444        #[doc(hidden)]
4445        impl ::core::convert::From<SaltSpent> for UnderlyingRustTuple<'_> {
4446            fn from(value: SaltSpent) -> Self {
4447                ()
4448            }
4449        }
4450        #[automatically_derived]
4451        #[doc(hidden)]
4452        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SaltSpent {
4453            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4454                Self {}
4455            }
4456        }
4457        #[automatically_derived]
4458        impl alloy_sol_types::SolError for SaltSpent {
4459            type Parameters<'a> = UnderlyingSolTuple<'a>;
4460            type Token<'a> = <Self::Parameters<
4461                'a,
4462            > as alloy_sol_types::SolType>::Token<'a>;
4463            const SIGNATURE: &'static str = "SaltSpent()";
4464            const SELECTOR: [u8; 4] = [53u8, 49u8, 50u8, 68u8];
4465            #[inline]
4466            fn new<'a>(
4467                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4468            ) -> Self {
4469                tuple.into()
4470            }
4471            #[inline]
4472            fn tokenize(&self) -> Self::Token<'_> {
4473                ()
4474            }
4475        }
4476    };
4477    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4478    /**Custom error with signature `SignatureExpired()` and selector `0x0819bdcd`.
4479```solidity
4480error SignatureExpired();
4481```*/
4482    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4483    #[derive(Clone)]
4484    pub struct SignatureExpired {}
4485    #[allow(
4486        non_camel_case_types,
4487        non_snake_case,
4488        clippy::pub_underscore_fields,
4489        clippy::style
4490    )]
4491    const _: () = {
4492        use alloy::sol_types as alloy_sol_types;
4493        #[doc(hidden)]
4494        type UnderlyingSolTuple<'a> = ();
4495        #[doc(hidden)]
4496        type UnderlyingRustTuple<'a> = ();
4497        #[cfg(test)]
4498        #[allow(dead_code, unreachable_patterns)]
4499        fn _type_assertion(
4500            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4501        ) {
4502            match _t {
4503                alloy_sol_types::private::AssertTypeEq::<
4504                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4505                >(_) => {}
4506            }
4507        }
4508        #[automatically_derived]
4509        #[doc(hidden)]
4510        impl ::core::convert::From<SignatureExpired> for UnderlyingRustTuple<'_> {
4511            fn from(value: SignatureExpired) -> Self {
4512                ()
4513            }
4514        }
4515        #[automatically_derived]
4516        #[doc(hidden)]
4517        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SignatureExpired {
4518            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4519                Self {}
4520            }
4521        }
4522        #[automatically_derived]
4523        impl alloy_sol_types::SolError for SignatureExpired {
4524            type Parameters<'a> = UnderlyingSolTuple<'a>;
4525            type Token<'a> = <Self::Parameters<
4526                'a,
4527            > as alloy_sol_types::SolType>::Token<'a>;
4528            const SIGNATURE: &'static str = "SignatureExpired()";
4529            const SELECTOR: [u8; 4] = [8u8, 25u8, 189u8, 205u8];
4530            #[inline]
4531            fn new<'a>(
4532                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4533            ) -> Self {
4534                tuple.into()
4535            }
4536            #[inline]
4537            fn tokenize(&self) -> Self::Token<'_> {
4538                ()
4539            }
4540        }
4541    };
4542    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4543    /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`.
4544```solidity
4545error StringTooLong(string str);
4546```*/
4547    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4548    #[derive(Clone)]
4549    pub struct StringTooLong {
4550        #[allow(missing_docs)]
4551        pub str: alloy::sol_types::private::String,
4552    }
4553    #[allow(
4554        non_camel_case_types,
4555        non_snake_case,
4556        clippy::pub_underscore_fields,
4557        clippy::style
4558    )]
4559    const _: () = {
4560        use alloy::sol_types as alloy_sol_types;
4561        #[doc(hidden)]
4562        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
4563        #[doc(hidden)]
4564        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
4565        #[cfg(test)]
4566        #[allow(dead_code, unreachable_patterns)]
4567        fn _type_assertion(
4568            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4569        ) {
4570            match _t {
4571                alloy_sol_types::private::AssertTypeEq::<
4572                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4573                >(_) => {}
4574            }
4575        }
4576        #[automatically_derived]
4577        #[doc(hidden)]
4578        impl ::core::convert::From<StringTooLong> for UnderlyingRustTuple<'_> {
4579            fn from(value: StringTooLong) -> Self {
4580                (value.str,)
4581            }
4582        }
4583        #[automatically_derived]
4584        #[doc(hidden)]
4585        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StringTooLong {
4586            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4587                Self { str: tuple.0 }
4588            }
4589        }
4590        #[automatically_derived]
4591        impl alloy_sol_types::SolError for StringTooLong {
4592            type Parameters<'a> = UnderlyingSolTuple<'a>;
4593            type Token<'a> = <Self::Parameters<
4594                'a,
4595            > as alloy_sol_types::SolType>::Token<'a>;
4596            const SIGNATURE: &'static str = "StringTooLong(string)";
4597            const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8];
4598            #[inline]
4599            fn new<'a>(
4600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4601            ) -> Self {
4602                tuple.into()
4603            }
4604            #[inline]
4605            fn tokenize(&self) -> Self::Token<'_> {
4606                (
4607                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
4608                        &self.str,
4609                    ),
4610                )
4611            }
4612        }
4613    };
4614    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4615    /**Custom error with signature `WithdrawalDelayNotElapsed()` and selector `0xf1ecf5c2`.
4616```solidity
4617error WithdrawalDelayNotElapsed();
4618```*/
4619    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4620    #[derive(Clone)]
4621    pub struct WithdrawalDelayNotElapsed {}
4622    #[allow(
4623        non_camel_case_types,
4624        non_snake_case,
4625        clippy::pub_underscore_fields,
4626        clippy::style
4627    )]
4628    const _: () = {
4629        use alloy::sol_types as alloy_sol_types;
4630        #[doc(hidden)]
4631        type UnderlyingSolTuple<'a> = ();
4632        #[doc(hidden)]
4633        type UnderlyingRustTuple<'a> = ();
4634        #[cfg(test)]
4635        #[allow(dead_code, unreachable_patterns)]
4636        fn _type_assertion(
4637            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4638        ) {
4639            match _t {
4640                alloy_sol_types::private::AssertTypeEq::<
4641                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4642                >(_) => {}
4643            }
4644        }
4645        #[automatically_derived]
4646        #[doc(hidden)]
4647        impl ::core::convert::From<WithdrawalDelayNotElapsed>
4648        for UnderlyingRustTuple<'_> {
4649            fn from(value: WithdrawalDelayNotElapsed) -> Self {
4650                ()
4651            }
4652        }
4653        #[automatically_derived]
4654        #[doc(hidden)]
4655        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4656        for WithdrawalDelayNotElapsed {
4657            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4658                Self {}
4659            }
4660        }
4661        #[automatically_derived]
4662        impl alloy_sol_types::SolError for WithdrawalDelayNotElapsed {
4663            type Parameters<'a> = UnderlyingSolTuple<'a>;
4664            type Token<'a> = <Self::Parameters<
4665                'a,
4666            > as alloy_sol_types::SolType>::Token<'a>;
4667            const SIGNATURE: &'static str = "WithdrawalDelayNotElapsed()";
4668            const SELECTOR: [u8; 4] = [241u8, 236u8, 245u8, 194u8];
4669            #[inline]
4670            fn new<'a>(
4671                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4672            ) -> Self {
4673                tuple.into()
4674            }
4675            #[inline]
4676            fn tokenize(&self) -> Self::Token<'_> {
4677                ()
4678            }
4679        }
4680    };
4681    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4682    /**Custom error with signature `WithdrawalNotQueued()` and selector `0x87c9d219`.
4683```solidity
4684error WithdrawalNotQueued();
4685```*/
4686    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4687    #[derive(Clone)]
4688    pub struct WithdrawalNotQueued {}
4689    #[allow(
4690        non_camel_case_types,
4691        non_snake_case,
4692        clippy::pub_underscore_fields,
4693        clippy::style
4694    )]
4695    const _: () = {
4696        use alloy::sol_types as alloy_sol_types;
4697        #[doc(hidden)]
4698        type UnderlyingSolTuple<'a> = ();
4699        #[doc(hidden)]
4700        type UnderlyingRustTuple<'a> = ();
4701        #[cfg(test)]
4702        #[allow(dead_code, unreachable_patterns)]
4703        fn _type_assertion(
4704            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4705        ) {
4706            match _t {
4707                alloy_sol_types::private::AssertTypeEq::<
4708                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4709                >(_) => {}
4710            }
4711        }
4712        #[automatically_derived]
4713        #[doc(hidden)]
4714        impl ::core::convert::From<WithdrawalNotQueued> for UnderlyingRustTuple<'_> {
4715            fn from(value: WithdrawalNotQueued) -> Self {
4716                ()
4717            }
4718        }
4719        #[automatically_derived]
4720        #[doc(hidden)]
4721        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WithdrawalNotQueued {
4722            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4723                Self {}
4724            }
4725        }
4726        #[automatically_derived]
4727        impl alloy_sol_types::SolError for WithdrawalNotQueued {
4728            type Parameters<'a> = UnderlyingSolTuple<'a>;
4729            type Token<'a> = <Self::Parameters<
4730                'a,
4731            > as alloy_sol_types::SolType>::Token<'a>;
4732            const SIGNATURE: &'static str = "WithdrawalNotQueued()";
4733            const SELECTOR: [u8; 4] = [135u8, 201u8, 210u8, 25u8];
4734            #[inline]
4735            fn new<'a>(
4736                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4737            ) -> Self {
4738                tuple.into()
4739            }
4740            #[inline]
4741            fn tokenize(&self) -> Self::Token<'_> {
4742                ()
4743            }
4744        }
4745    };
4746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4747    /**Custom error with signature `WithdrawerNotCaller()` and selector `0x584434d4`.
4748```solidity
4749error WithdrawerNotCaller();
4750```*/
4751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4752    #[derive(Clone)]
4753    pub struct WithdrawerNotCaller {}
4754    #[allow(
4755        non_camel_case_types,
4756        non_snake_case,
4757        clippy::pub_underscore_fields,
4758        clippy::style
4759    )]
4760    const _: () = {
4761        use alloy::sol_types as alloy_sol_types;
4762        #[doc(hidden)]
4763        type UnderlyingSolTuple<'a> = ();
4764        #[doc(hidden)]
4765        type UnderlyingRustTuple<'a> = ();
4766        #[cfg(test)]
4767        #[allow(dead_code, unreachable_patterns)]
4768        fn _type_assertion(
4769            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4770        ) {
4771            match _t {
4772                alloy_sol_types::private::AssertTypeEq::<
4773                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4774                >(_) => {}
4775            }
4776        }
4777        #[automatically_derived]
4778        #[doc(hidden)]
4779        impl ::core::convert::From<WithdrawerNotCaller> for UnderlyingRustTuple<'_> {
4780            fn from(value: WithdrawerNotCaller) -> Self {
4781                ()
4782            }
4783        }
4784        #[automatically_derived]
4785        #[doc(hidden)]
4786        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WithdrawerNotCaller {
4787            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4788                Self {}
4789            }
4790        }
4791        #[automatically_derived]
4792        impl alloy_sol_types::SolError for WithdrawerNotCaller {
4793            type Parameters<'a> = UnderlyingSolTuple<'a>;
4794            type Token<'a> = <Self::Parameters<
4795                'a,
4796            > as alloy_sol_types::SolType>::Token<'a>;
4797            const SIGNATURE: &'static str = "WithdrawerNotCaller()";
4798            const SELECTOR: [u8; 4] = [88u8, 68u8, 52u8, 212u8];
4799            #[inline]
4800            fn new<'a>(
4801                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4802            ) -> Self {
4803                tuple.into()
4804            }
4805            #[inline]
4806            fn tokenize(&self) -> Self::Token<'_> {
4807                ()
4808            }
4809        }
4810    };
4811    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4812    /**Event with signature `DelegationApproverUpdated(address,address)` and selector `0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6`.
4813```solidity
4814event DelegationApproverUpdated(address indexed operator, address newDelegationApprover);
4815```*/
4816    #[allow(
4817        non_camel_case_types,
4818        non_snake_case,
4819        clippy::pub_underscore_fields,
4820        clippy::style
4821    )]
4822    #[derive(Clone)]
4823    pub struct DelegationApproverUpdated {
4824        #[allow(missing_docs)]
4825        pub operator: alloy::sol_types::private::Address,
4826        #[allow(missing_docs)]
4827        pub newDelegationApprover: alloy::sol_types::private::Address,
4828    }
4829    #[allow(
4830        non_camel_case_types,
4831        non_snake_case,
4832        clippy::pub_underscore_fields,
4833        clippy::style
4834    )]
4835    const _: () = {
4836        use alloy::sol_types as alloy_sol_types;
4837        #[automatically_derived]
4838        impl alloy_sol_types::SolEvent for DelegationApproverUpdated {
4839            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
4840            type DataToken<'a> = <Self::DataTuple<
4841                'a,
4842            > as alloy_sol_types::SolType>::Token<'a>;
4843            type TopicList = (
4844                alloy_sol_types::sol_data::FixedBytes<32>,
4845                alloy::sol_types::sol_data::Address,
4846            );
4847            const SIGNATURE: &'static str = "DelegationApproverUpdated(address,address)";
4848            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4849                119u8, 59u8, 84u8, 192u8, 77u8, 117u8, 111u8, 204u8, 94u8, 103u8, 129u8,
4850                17u8, 247u8, 215u8, 48u8, 222u8, 59u8, 233u8, 129u8, 146u8, 0u8, 7u8,
4851                153u8, 238u8, 227u8, 214u8, 55u8, 22u8, 5u8, 90u8, 135u8, 198u8,
4852            ]);
4853            const ANONYMOUS: bool = false;
4854            #[allow(unused_variables)]
4855            #[inline]
4856            fn new(
4857                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4858                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4859            ) -> Self {
4860                Self {
4861                    operator: topics.1,
4862                    newDelegationApprover: data.0,
4863                }
4864            }
4865            #[inline]
4866            fn check_signature(
4867                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4868            ) -> alloy_sol_types::Result<()> {
4869                if topics.0 != Self::SIGNATURE_HASH {
4870                    return Err(
4871                        alloy_sol_types::Error::invalid_event_signature_hash(
4872                            Self::SIGNATURE,
4873                            topics.0,
4874                            Self::SIGNATURE_HASH,
4875                        ),
4876                    );
4877                }
4878                Ok(())
4879            }
4880            #[inline]
4881            fn tokenize_body(&self) -> Self::DataToken<'_> {
4882                (
4883                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4884                        &self.newDelegationApprover,
4885                    ),
4886                )
4887            }
4888            #[inline]
4889            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4890                (Self::SIGNATURE_HASH.into(), self.operator.clone())
4891            }
4892            #[inline]
4893            fn encode_topics_raw(
4894                &self,
4895                out: &mut [alloy_sol_types::abi::token::WordToken],
4896            ) -> alloy_sol_types::Result<()> {
4897                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4898                    return Err(alloy_sol_types::Error::Overrun);
4899                }
4900                out[0usize] = alloy_sol_types::abi::token::WordToken(
4901                    Self::SIGNATURE_HASH,
4902                );
4903                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4904                    &self.operator,
4905                );
4906                Ok(())
4907            }
4908        }
4909        #[automatically_derived]
4910        impl alloy_sol_types::private::IntoLogData for DelegationApproverUpdated {
4911            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4912                From::from(self)
4913            }
4914            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4915                From::from(&self)
4916            }
4917        }
4918        #[automatically_derived]
4919        impl From<&DelegationApproverUpdated> for alloy_sol_types::private::LogData {
4920            #[inline]
4921            fn from(
4922                this: &DelegationApproverUpdated,
4923            ) -> alloy_sol_types::private::LogData {
4924                alloy_sol_types::SolEvent::encode_log_data(this)
4925            }
4926        }
4927    };
4928    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4929    /**Event with signature `DepositScalingFactorUpdated(address,address,uint256)` and selector `0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f`.
4930```solidity
4931event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor);
4932```*/
4933    #[allow(
4934        non_camel_case_types,
4935        non_snake_case,
4936        clippy::pub_underscore_fields,
4937        clippy::style
4938    )]
4939    #[derive(Clone)]
4940    pub struct DepositScalingFactorUpdated {
4941        #[allow(missing_docs)]
4942        pub staker: alloy::sol_types::private::Address,
4943        #[allow(missing_docs)]
4944        pub strategy: alloy::sol_types::private::Address,
4945        #[allow(missing_docs)]
4946        pub newDepositScalingFactor: alloy::sol_types::private::primitives::aliases::U256,
4947    }
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        #[automatically_derived]
4957        impl alloy_sol_types::SolEvent for DepositScalingFactorUpdated {
4958            type DataTuple<'a> = (
4959                alloy::sol_types::sol_data::Address,
4960                alloy::sol_types::sol_data::Address,
4961                alloy::sol_types::sol_data::Uint<256>,
4962            );
4963            type DataToken<'a> = <Self::DataTuple<
4964                'a,
4965            > as alloy_sol_types::SolType>::Token<'a>;
4966            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
4967            const SIGNATURE: &'static str = "DepositScalingFactorUpdated(address,address,uint256)";
4968            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4969                139u8, 233u8, 50u8, 186u8, 197u8, 69u8, 97u8, 242u8, 114u8, 96u8, 249u8,
4970                84u8, 99u8, 217u8, 184u8, 171u8, 55u8, 224u8, 107u8, 40u8, 66u8, 229u8,
4971                238u8, 36u8, 4u8, 21u8, 124u8, 193u8, 61u8, 246u8, 235u8, 143u8,
4972            ]);
4973            const ANONYMOUS: bool = false;
4974            #[allow(unused_variables)]
4975            #[inline]
4976            fn new(
4977                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4978                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4979            ) -> Self {
4980                Self {
4981                    staker: data.0,
4982                    strategy: data.1,
4983                    newDepositScalingFactor: data.2,
4984                }
4985            }
4986            #[inline]
4987            fn check_signature(
4988                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4989            ) -> alloy_sol_types::Result<()> {
4990                if topics.0 != Self::SIGNATURE_HASH {
4991                    return Err(
4992                        alloy_sol_types::Error::invalid_event_signature_hash(
4993                            Self::SIGNATURE,
4994                            topics.0,
4995                            Self::SIGNATURE_HASH,
4996                        ),
4997                    );
4998                }
4999                Ok(())
5000            }
5001            #[inline]
5002            fn tokenize_body(&self) -> Self::DataToken<'_> {
5003                (
5004                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5005                        &self.staker,
5006                    ),
5007                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5008                        &self.strategy,
5009                    ),
5010                    <alloy::sol_types::sol_data::Uint<
5011                        256,
5012                    > as alloy_sol_types::SolType>::tokenize(
5013                        &self.newDepositScalingFactor,
5014                    ),
5015                )
5016            }
5017            #[inline]
5018            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5019                (Self::SIGNATURE_HASH.into(),)
5020            }
5021            #[inline]
5022            fn encode_topics_raw(
5023                &self,
5024                out: &mut [alloy_sol_types::abi::token::WordToken],
5025            ) -> alloy_sol_types::Result<()> {
5026                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5027                    return Err(alloy_sol_types::Error::Overrun);
5028                }
5029                out[0usize] = alloy_sol_types::abi::token::WordToken(
5030                    Self::SIGNATURE_HASH,
5031                );
5032                Ok(())
5033            }
5034        }
5035        #[automatically_derived]
5036        impl alloy_sol_types::private::IntoLogData for DepositScalingFactorUpdated {
5037            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5038                From::from(self)
5039            }
5040            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5041                From::from(&self)
5042            }
5043        }
5044        #[automatically_derived]
5045        impl From<&DepositScalingFactorUpdated> for alloy_sol_types::private::LogData {
5046            #[inline]
5047            fn from(
5048                this: &DepositScalingFactorUpdated,
5049            ) -> alloy_sol_types::private::LogData {
5050                alloy_sol_types::SolEvent::encode_log_data(this)
5051            }
5052        }
5053    };
5054    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5055    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
5056```solidity
5057event Initialized(uint8 version);
5058```*/
5059    #[allow(
5060        non_camel_case_types,
5061        non_snake_case,
5062        clippy::pub_underscore_fields,
5063        clippy::style
5064    )]
5065    #[derive(Clone)]
5066    pub struct Initialized {
5067        #[allow(missing_docs)]
5068        pub version: u8,
5069    }
5070    #[allow(
5071        non_camel_case_types,
5072        non_snake_case,
5073        clippy::pub_underscore_fields,
5074        clippy::style
5075    )]
5076    const _: () = {
5077        use alloy::sol_types as alloy_sol_types;
5078        #[automatically_derived]
5079        impl alloy_sol_types::SolEvent for Initialized {
5080            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5081            type DataToken<'a> = <Self::DataTuple<
5082                'a,
5083            > as alloy_sol_types::SolType>::Token<'a>;
5084            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5085            const SIGNATURE: &'static str = "Initialized(uint8)";
5086            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5087                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
5088                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
5089                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
5090            ]);
5091            const ANONYMOUS: bool = false;
5092            #[allow(unused_variables)]
5093            #[inline]
5094            fn new(
5095                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5096                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5097            ) -> Self {
5098                Self { version: data.0 }
5099            }
5100            #[inline]
5101            fn check_signature(
5102                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5103            ) -> alloy_sol_types::Result<()> {
5104                if topics.0 != Self::SIGNATURE_HASH {
5105                    return Err(
5106                        alloy_sol_types::Error::invalid_event_signature_hash(
5107                            Self::SIGNATURE,
5108                            topics.0,
5109                            Self::SIGNATURE_HASH,
5110                        ),
5111                    );
5112                }
5113                Ok(())
5114            }
5115            #[inline]
5116            fn tokenize_body(&self) -> Self::DataToken<'_> {
5117                (
5118                    <alloy::sol_types::sol_data::Uint<
5119                        8,
5120                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5121                )
5122            }
5123            #[inline]
5124            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5125                (Self::SIGNATURE_HASH.into(),)
5126            }
5127            #[inline]
5128            fn encode_topics_raw(
5129                &self,
5130                out: &mut [alloy_sol_types::abi::token::WordToken],
5131            ) -> alloy_sol_types::Result<()> {
5132                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5133                    return Err(alloy_sol_types::Error::Overrun);
5134                }
5135                out[0usize] = alloy_sol_types::abi::token::WordToken(
5136                    Self::SIGNATURE_HASH,
5137                );
5138                Ok(())
5139            }
5140        }
5141        #[automatically_derived]
5142        impl alloy_sol_types::private::IntoLogData for Initialized {
5143            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5144                From::from(self)
5145            }
5146            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5147                From::from(&self)
5148            }
5149        }
5150        #[automatically_derived]
5151        impl From<&Initialized> for alloy_sol_types::private::LogData {
5152            #[inline]
5153            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5154                alloy_sol_types::SolEvent::encode_log_data(this)
5155            }
5156        }
5157    };
5158    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5159    /**Event with signature `OperatorMetadataURIUpdated(address,string)` and selector `0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090`.
5160```solidity
5161event OperatorMetadataURIUpdated(address indexed operator, string metadataURI);
5162```*/
5163    #[allow(
5164        non_camel_case_types,
5165        non_snake_case,
5166        clippy::pub_underscore_fields,
5167        clippy::style
5168    )]
5169    #[derive(Clone)]
5170    pub struct OperatorMetadataURIUpdated {
5171        #[allow(missing_docs)]
5172        pub operator: alloy::sol_types::private::Address,
5173        #[allow(missing_docs)]
5174        pub metadataURI: alloy::sol_types::private::String,
5175    }
5176    #[allow(
5177        non_camel_case_types,
5178        non_snake_case,
5179        clippy::pub_underscore_fields,
5180        clippy::style
5181    )]
5182    const _: () = {
5183        use alloy::sol_types as alloy_sol_types;
5184        #[automatically_derived]
5185        impl alloy_sol_types::SolEvent for OperatorMetadataURIUpdated {
5186            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
5187            type DataToken<'a> = <Self::DataTuple<
5188                'a,
5189            > as alloy_sol_types::SolType>::Token<'a>;
5190            type TopicList = (
5191                alloy_sol_types::sol_data::FixedBytes<32>,
5192                alloy::sol_types::sol_data::Address,
5193            );
5194            const SIGNATURE: &'static str = "OperatorMetadataURIUpdated(address,string)";
5195            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5196                2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8,
5197                126u8, 242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8,
5198                3u8, 74u8, 133u8, 49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8,
5199            ]);
5200            const ANONYMOUS: bool = false;
5201            #[allow(unused_variables)]
5202            #[inline]
5203            fn new(
5204                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5205                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5206            ) -> Self {
5207                Self {
5208                    operator: topics.1,
5209                    metadataURI: data.0,
5210                }
5211            }
5212            #[inline]
5213            fn check_signature(
5214                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5215            ) -> alloy_sol_types::Result<()> {
5216                if topics.0 != Self::SIGNATURE_HASH {
5217                    return Err(
5218                        alloy_sol_types::Error::invalid_event_signature_hash(
5219                            Self::SIGNATURE,
5220                            topics.0,
5221                            Self::SIGNATURE_HASH,
5222                        ),
5223                    );
5224                }
5225                Ok(())
5226            }
5227            #[inline]
5228            fn tokenize_body(&self) -> Self::DataToken<'_> {
5229                (
5230                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
5231                        &self.metadataURI,
5232                    ),
5233                )
5234            }
5235            #[inline]
5236            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5237                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5238            }
5239            #[inline]
5240            fn encode_topics_raw(
5241                &self,
5242                out: &mut [alloy_sol_types::abi::token::WordToken],
5243            ) -> alloy_sol_types::Result<()> {
5244                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5245                    return Err(alloy_sol_types::Error::Overrun);
5246                }
5247                out[0usize] = alloy_sol_types::abi::token::WordToken(
5248                    Self::SIGNATURE_HASH,
5249                );
5250                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5251                    &self.operator,
5252                );
5253                Ok(())
5254            }
5255        }
5256        #[automatically_derived]
5257        impl alloy_sol_types::private::IntoLogData for OperatorMetadataURIUpdated {
5258            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5259                From::from(self)
5260            }
5261            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5262                From::from(&self)
5263            }
5264        }
5265        #[automatically_derived]
5266        impl From<&OperatorMetadataURIUpdated> for alloy_sol_types::private::LogData {
5267            #[inline]
5268            fn from(
5269                this: &OperatorMetadataURIUpdated,
5270            ) -> alloy_sol_types::private::LogData {
5271                alloy_sol_types::SolEvent::encode_log_data(this)
5272            }
5273        }
5274    };
5275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5276    /**Event with signature `OperatorRegistered(address,address)` and selector `0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1`.
5277```solidity
5278event OperatorRegistered(address indexed operator, address delegationApprover);
5279```*/
5280    #[allow(
5281        non_camel_case_types,
5282        non_snake_case,
5283        clippy::pub_underscore_fields,
5284        clippy::style
5285    )]
5286    #[derive(Clone)]
5287    pub struct OperatorRegistered {
5288        #[allow(missing_docs)]
5289        pub operator: alloy::sol_types::private::Address,
5290        #[allow(missing_docs)]
5291        pub delegationApprover: alloy::sol_types::private::Address,
5292    }
5293    #[allow(
5294        non_camel_case_types,
5295        non_snake_case,
5296        clippy::pub_underscore_fields,
5297        clippy::style
5298    )]
5299    const _: () = {
5300        use alloy::sol_types as alloy_sol_types;
5301        #[automatically_derived]
5302        impl alloy_sol_types::SolEvent for OperatorRegistered {
5303            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
5304            type DataToken<'a> = <Self::DataTuple<
5305                'a,
5306            > as alloy_sol_types::SolType>::Token<'a>;
5307            type TopicList = (
5308                alloy_sol_types::sol_data::FixedBytes<32>,
5309                alloy::sol_types::sol_data::Address,
5310            );
5311            const SIGNATURE: &'static str = "OperatorRegistered(address,address)";
5312            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5313                164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8,
5314                146u8, 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8,
5315                183u8, 183u8, 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8,
5316            ]);
5317            const ANONYMOUS: bool = false;
5318            #[allow(unused_variables)]
5319            #[inline]
5320            fn new(
5321                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5322                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5323            ) -> Self {
5324                Self {
5325                    operator: topics.1,
5326                    delegationApprover: data.0,
5327                }
5328            }
5329            #[inline]
5330            fn check_signature(
5331                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5332            ) -> alloy_sol_types::Result<()> {
5333                if topics.0 != Self::SIGNATURE_HASH {
5334                    return Err(
5335                        alloy_sol_types::Error::invalid_event_signature_hash(
5336                            Self::SIGNATURE,
5337                            topics.0,
5338                            Self::SIGNATURE_HASH,
5339                        ),
5340                    );
5341                }
5342                Ok(())
5343            }
5344            #[inline]
5345            fn tokenize_body(&self) -> Self::DataToken<'_> {
5346                (
5347                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5348                        &self.delegationApprover,
5349                    ),
5350                )
5351            }
5352            #[inline]
5353            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5354                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5355            }
5356            #[inline]
5357            fn encode_topics_raw(
5358                &self,
5359                out: &mut [alloy_sol_types::abi::token::WordToken],
5360            ) -> alloy_sol_types::Result<()> {
5361                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5362                    return Err(alloy_sol_types::Error::Overrun);
5363                }
5364                out[0usize] = alloy_sol_types::abi::token::WordToken(
5365                    Self::SIGNATURE_HASH,
5366                );
5367                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5368                    &self.operator,
5369                );
5370                Ok(())
5371            }
5372        }
5373        #[automatically_derived]
5374        impl alloy_sol_types::private::IntoLogData for OperatorRegistered {
5375            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5376                From::from(self)
5377            }
5378            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5379                From::from(&self)
5380            }
5381        }
5382        #[automatically_derived]
5383        impl From<&OperatorRegistered> for alloy_sol_types::private::LogData {
5384            #[inline]
5385            fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData {
5386                alloy_sol_types::SolEvent::encode_log_data(this)
5387            }
5388        }
5389    };
5390    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5391    /**Event with signature `OperatorSharesDecreased(address,address,address,uint256)` and selector `0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd`.
5392```solidity
5393event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares);
5394```*/
5395    #[allow(
5396        non_camel_case_types,
5397        non_snake_case,
5398        clippy::pub_underscore_fields,
5399        clippy::style
5400    )]
5401    #[derive(Clone)]
5402    pub struct OperatorSharesDecreased {
5403        #[allow(missing_docs)]
5404        pub operator: alloy::sol_types::private::Address,
5405        #[allow(missing_docs)]
5406        pub staker: alloy::sol_types::private::Address,
5407        #[allow(missing_docs)]
5408        pub strategy: alloy::sol_types::private::Address,
5409        #[allow(missing_docs)]
5410        pub shares: alloy::sol_types::private::primitives::aliases::U256,
5411    }
5412    #[allow(
5413        non_camel_case_types,
5414        non_snake_case,
5415        clippy::pub_underscore_fields,
5416        clippy::style
5417    )]
5418    const _: () = {
5419        use alloy::sol_types as alloy_sol_types;
5420        #[automatically_derived]
5421        impl alloy_sol_types::SolEvent for OperatorSharesDecreased {
5422            type DataTuple<'a> = (
5423                alloy::sol_types::sol_data::Address,
5424                alloy::sol_types::sol_data::Address,
5425                alloy::sol_types::sol_data::Uint<256>,
5426            );
5427            type DataToken<'a> = <Self::DataTuple<
5428                'a,
5429            > as alloy_sol_types::SolType>::Token<'a>;
5430            type TopicList = (
5431                alloy_sol_types::sol_data::FixedBytes<32>,
5432                alloy::sol_types::sol_data::Address,
5433            );
5434            const SIGNATURE: &'static str = "OperatorSharesDecreased(address,address,address,uint256)";
5435            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5436                105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8,
5437                221u8, 129u8, 84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8,
5438                200u8, 50u8, 170u8, 255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8,
5439            ]);
5440            const ANONYMOUS: bool = false;
5441            #[allow(unused_variables)]
5442            #[inline]
5443            fn new(
5444                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5445                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5446            ) -> Self {
5447                Self {
5448                    operator: topics.1,
5449                    staker: data.0,
5450                    strategy: data.1,
5451                    shares: data.2,
5452                }
5453            }
5454            #[inline]
5455            fn check_signature(
5456                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5457            ) -> alloy_sol_types::Result<()> {
5458                if topics.0 != Self::SIGNATURE_HASH {
5459                    return Err(
5460                        alloy_sol_types::Error::invalid_event_signature_hash(
5461                            Self::SIGNATURE,
5462                            topics.0,
5463                            Self::SIGNATURE_HASH,
5464                        ),
5465                    );
5466                }
5467                Ok(())
5468            }
5469            #[inline]
5470            fn tokenize_body(&self) -> Self::DataToken<'_> {
5471                (
5472                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5473                        &self.staker,
5474                    ),
5475                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5476                        &self.strategy,
5477                    ),
5478                    <alloy::sol_types::sol_data::Uint<
5479                        256,
5480                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
5481                )
5482            }
5483            #[inline]
5484            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5485                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5486            }
5487            #[inline]
5488            fn encode_topics_raw(
5489                &self,
5490                out: &mut [alloy_sol_types::abi::token::WordToken],
5491            ) -> alloy_sol_types::Result<()> {
5492                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5493                    return Err(alloy_sol_types::Error::Overrun);
5494                }
5495                out[0usize] = alloy_sol_types::abi::token::WordToken(
5496                    Self::SIGNATURE_HASH,
5497                );
5498                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5499                    &self.operator,
5500                );
5501                Ok(())
5502            }
5503        }
5504        #[automatically_derived]
5505        impl alloy_sol_types::private::IntoLogData for OperatorSharesDecreased {
5506            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5507                From::from(self)
5508            }
5509            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5510                From::from(&self)
5511            }
5512        }
5513        #[automatically_derived]
5514        impl From<&OperatorSharesDecreased> for alloy_sol_types::private::LogData {
5515            #[inline]
5516            fn from(
5517                this: &OperatorSharesDecreased,
5518            ) -> alloy_sol_types::private::LogData {
5519                alloy_sol_types::SolEvent::encode_log_data(this)
5520            }
5521        }
5522    };
5523    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5524    /**Event with signature `OperatorSharesIncreased(address,address,address,uint256)` and selector `0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c`.
5525```solidity
5526event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares);
5527```*/
5528    #[allow(
5529        non_camel_case_types,
5530        non_snake_case,
5531        clippy::pub_underscore_fields,
5532        clippy::style
5533    )]
5534    #[derive(Clone)]
5535    pub struct OperatorSharesIncreased {
5536        #[allow(missing_docs)]
5537        pub operator: alloy::sol_types::private::Address,
5538        #[allow(missing_docs)]
5539        pub staker: alloy::sol_types::private::Address,
5540        #[allow(missing_docs)]
5541        pub strategy: alloy::sol_types::private::Address,
5542        #[allow(missing_docs)]
5543        pub shares: alloy::sol_types::private::primitives::aliases::U256,
5544    }
5545    #[allow(
5546        non_camel_case_types,
5547        non_snake_case,
5548        clippy::pub_underscore_fields,
5549        clippy::style
5550    )]
5551    const _: () = {
5552        use alloy::sol_types as alloy_sol_types;
5553        #[automatically_derived]
5554        impl alloy_sol_types::SolEvent for OperatorSharesIncreased {
5555            type DataTuple<'a> = (
5556                alloy::sol_types::sol_data::Address,
5557                alloy::sol_types::sol_data::Address,
5558                alloy::sol_types::sol_data::Uint<256>,
5559            );
5560            type DataToken<'a> = <Self::DataTuple<
5561                'a,
5562            > as alloy_sol_types::SolType>::Token<'a>;
5563            type TopicList = (
5564                alloy_sol_types::sol_data::FixedBytes<32>,
5565                alloy::sol_types::sol_data::Address,
5566            );
5567            const SIGNATURE: &'static str = "OperatorSharesIncreased(address,address,address,uint256)";
5568            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5569                30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8,
5570                24u8, 142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8,
5571                171u8, 58u8, 157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8,
5572            ]);
5573            const ANONYMOUS: bool = false;
5574            #[allow(unused_variables)]
5575            #[inline]
5576            fn new(
5577                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5578                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5579            ) -> Self {
5580                Self {
5581                    operator: topics.1,
5582                    staker: data.0,
5583                    strategy: data.1,
5584                    shares: data.2,
5585                }
5586            }
5587            #[inline]
5588            fn check_signature(
5589                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5590            ) -> alloy_sol_types::Result<()> {
5591                if topics.0 != Self::SIGNATURE_HASH {
5592                    return Err(
5593                        alloy_sol_types::Error::invalid_event_signature_hash(
5594                            Self::SIGNATURE,
5595                            topics.0,
5596                            Self::SIGNATURE_HASH,
5597                        ),
5598                    );
5599                }
5600                Ok(())
5601            }
5602            #[inline]
5603            fn tokenize_body(&self) -> Self::DataToken<'_> {
5604                (
5605                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5606                        &self.staker,
5607                    ),
5608                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5609                        &self.strategy,
5610                    ),
5611                    <alloy::sol_types::sol_data::Uint<
5612                        256,
5613                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
5614                )
5615            }
5616            #[inline]
5617            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5618                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5619            }
5620            #[inline]
5621            fn encode_topics_raw(
5622                &self,
5623                out: &mut [alloy_sol_types::abi::token::WordToken],
5624            ) -> alloy_sol_types::Result<()> {
5625                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5626                    return Err(alloy_sol_types::Error::Overrun);
5627                }
5628                out[0usize] = alloy_sol_types::abi::token::WordToken(
5629                    Self::SIGNATURE_HASH,
5630                );
5631                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5632                    &self.operator,
5633                );
5634                Ok(())
5635            }
5636        }
5637        #[automatically_derived]
5638        impl alloy_sol_types::private::IntoLogData for OperatorSharesIncreased {
5639            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5640                From::from(self)
5641            }
5642            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5643                From::from(&self)
5644            }
5645        }
5646        #[automatically_derived]
5647        impl From<&OperatorSharesIncreased> for alloy_sol_types::private::LogData {
5648            #[inline]
5649            fn from(
5650                this: &OperatorSharesIncreased,
5651            ) -> alloy_sol_types::private::LogData {
5652                alloy_sol_types::SolEvent::encode_log_data(this)
5653            }
5654        }
5655    };
5656    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5657    /**Event with signature `OperatorSharesSlashed(address,address,uint256)` and selector `0xdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30`.
5658```solidity
5659event OperatorSharesSlashed(address indexed operator, address strategy, uint256 totalSlashedShares);
5660```*/
5661    #[allow(
5662        non_camel_case_types,
5663        non_snake_case,
5664        clippy::pub_underscore_fields,
5665        clippy::style
5666    )]
5667    #[derive(Clone)]
5668    pub struct OperatorSharesSlashed {
5669        #[allow(missing_docs)]
5670        pub operator: alloy::sol_types::private::Address,
5671        #[allow(missing_docs)]
5672        pub strategy: alloy::sol_types::private::Address,
5673        #[allow(missing_docs)]
5674        pub totalSlashedShares: alloy::sol_types::private::primitives::aliases::U256,
5675    }
5676    #[allow(
5677        non_camel_case_types,
5678        non_snake_case,
5679        clippy::pub_underscore_fields,
5680        clippy::style
5681    )]
5682    const _: () = {
5683        use alloy::sol_types as alloy_sol_types;
5684        #[automatically_derived]
5685        impl alloy_sol_types::SolEvent for OperatorSharesSlashed {
5686            type DataTuple<'a> = (
5687                alloy::sol_types::sol_data::Address,
5688                alloy::sol_types::sol_data::Uint<256>,
5689            );
5690            type DataToken<'a> = <Self::DataTuple<
5691                'a,
5692            > as alloy_sol_types::SolType>::Token<'a>;
5693            type TopicList = (
5694                alloy_sol_types::sol_data::FixedBytes<32>,
5695                alloy::sol_types::sol_data::Address,
5696            );
5697            const SIGNATURE: &'static str = "OperatorSharesSlashed(address,address,uint256)";
5698            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5699                221u8, 97u8, 31u8, 78u8, 246u8, 63u8, 67u8, 133u8, 241u8, 117u8, 108u8,
5700                134u8, 206u8, 31u8, 31u8, 56u8, 154u8, 144u8, 19u8, 186u8, 111u8, 160u8,
5701                125u8, 171u8, 168u8, 82u8, 130u8, 145u8, 188u8, 45u8, 60u8, 48u8,
5702            ]);
5703            const ANONYMOUS: bool = false;
5704            #[allow(unused_variables)]
5705            #[inline]
5706            fn new(
5707                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5708                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5709            ) -> Self {
5710                Self {
5711                    operator: topics.1,
5712                    strategy: data.0,
5713                    totalSlashedShares: data.1,
5714                }
5715            }
5716            #[inline]
5717            fn check_signature(
5718                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5719            ) -> alloy_sol_types::Result<()> {
5720                if topics.0 != Self::SIGNATURE_HASH {
5721                    return Err(
5722                        alloy_sol_types::Error::invalid_event_signature_hash(
5723                            Self::SIGNATURE,
5724                            topics.0,
5725                            Self::SIGNATURE_HASH,
5726                        ),
5727                    );
5728                }
5729                Ok(())
5730            }
5731            #[inline]
5732            fn tokenize_body(&self) -> Self::DataToken<'_> {
5733                (
5734                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5735                        &self.strategy,
5736                    ),
5737                    <alloy::sol_types::sol_data::Uint<
5738                        256,
5739                    > as alloy_sol_types::SolType>::tokenize(&self.totalSlashedShares),
5740                )
5741            }
5742            #[inline]
5743            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5744                (Self::SIGNATURE_HASH.into(), self.operator.clone())
5745            }
5746            #[inline]
5747            fn encode_topics_raw(
5748                &self,
5749                out: &mut [alloy_sol_types::abi::token::WordToken],
5750            ) -> alloy_sol_types::Result<()> {
5751                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5752                    return Err(alloy_sol_types::Error::Overrun);
5753                }
5754                out[0usize] = alloy_sol_types::abi::token::WordToken(
5755                    Self::SIGNATURE_HASH,
5756                );
5757                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5758                    &self.operator,
5759                );
5760                Ok(())
5761            }
5762        }
5763        #[automatically_derived]
5764        impl alloy_sol_types::private::IntoLogData for OperatorSharesSlashed {
5765            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5766                From::from(self)
5767            }
5768            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5769                From::from(&self)
5770            }
5771        }
5772        #[automatically_derived]
5773        impl From<&OperatorSharesSlashed> for alloy_sol_types::private::LogData {
5774            #[inline]
5775            fn from(this: &OperatorSharesSlashed) -> alloy_sol_types::private::LogData {
5776                alloy_sol_types::SolEvent::encode_log_data(this)
5777            }
5778        }
5779    };
5780    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5781    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5782```solidity
5783event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5784```*/
5785    #[allow(
5786        non_camel_case_types,
5787        non_snake_case,
5788        clippy::pub_underscore_fields,
5789        clippy::style
5790    )]
5791    #[derive(Clone)]
5792    pub struct OwnershipTransferred {
5793        #[allow(missing_docs)]
5794        pub previousOwner: alloy::sol_types::private::Address,
5795        #[allow(missing_docs)]
5796        pub newOwner: alloy::sol_types::private::Address,
5797    }
5798    #[allow(
5799        non_camel_case_types,
5800        non_snake_case,
5801        clippy::pub_underscore_fields,
5802        clippy::style
5803    )]
5804    const _: () = {
5805        use alloy::sol_types as alloy_sol_types;
5806        #[automatically_derived]
5807        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5808            type DataTuple<'a> = ();
5809            type DataToken<'a> = <Self::DataTuple<
5810                'a,
5811            > as alloy_sol_types::SolType>::Token<'a>;
5812            type TopicList = (
5813                alloy_sol_types::sol_data::FixedBytes<32>,
5814                alloy::sol_types::sol_data::Address,
5815                alloy::sol_types::sol_data::Address,
5816            );
5817            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5818            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5819                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
5820                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
5821                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5822            ]);
5823            const ANONYMOUS: bool = false;
5824            #[allow(unused_variables)]
5825            #[inline]
5826            fn new(
5827                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5828                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5829            ) -> Self {
5830                Self {
5831                    previousOwner: topics.1,
5832                    newOwner: topics.2,
5833                }
5834            }
5835            #[inline]
5836            fn check_signature(
5837                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5838            ) -> alloy_sol_types::Result<()> {
5839                if topics.0 != Self::SIGNATURE_HASH {
5840                    return Err(
5841                        alloy_sol_types::Error::invalid_event_signature_hash(
5842                            Self::SIGNATURE,
5843                            topics.0,
5844                            Self::SIGNATURE_HASH,
5845                        ),
5846                    );
5847                }
5848                Ok(())
5849            }
5850            #[inline]
5851            fn tokenize_body(&self) -> Self::DataToken<'_> {
5852                ()
5853            }
5854            #[inline]
5855            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5856                (
5857                    Self::SIGNATURE_HASH.into(),
5858                    self.previousOwner.clone(),
5859                    self.newOwner.clone(),
5860                )
5861            }
5862            #[inline]
5863            fn encode_topics_raw(
5864                &self,
5865                out: &mut [alloy_sol_types::abi::token::WordToken],
5866            ) -> alloy_sol_types::Result<()> {
5867                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5868                    return Err(alloy_sol_types::Error::Overrun);
5869                }
5870                out[0usize] = alloy_sol_types::abi::token::WordToken(
5871                    Self::SIGNATURE_HASH,
5872                );
5873                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5874                    &self.previousOwner,
5875                );
5876                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5877                    &self.newOwner,
5878                );
5879                Ok(())
5880            }
5881        }
5882        #[automatically_derived]
5883        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5884            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5885                From::from(self)
5886            }
5887            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5888                From::from(&self)
5889            }
5890        }
5891        #[automatically_derived]
5892        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5893            #[inline]
5894            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5895                alloy_sol_types::SolEvent::encode_log_data(this)
5896            }
5897        }
5898    };
5899    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5900    /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`.
5901```solidity
5902event Paused(address indexed account, uint256 newPausedStatus);
5903```*/
5904    #[allow(
5905        non_camel_case_types,
5906        non_snake_case,
5907        clippy::pub_underscore_fields,
5908        clippy::style
5909    )]
5910    #[derive(Clone)]
5911    pub struct Paused {
5912        #[allow(missing_docs)]
5913        pub account: alloy::sol_types::private::Address,
5914        #[allow(missing_docs)]
5915        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
5916    }
5917    #[allow(
5918        non_camel_case_types,
5919        non_snake_case,
5920        clippy::pub_underscore_fields,
5921        clippy::style
5922    )]
5923    const _: () = {
5924        use alloy::sol_types as alloy_sol_types;
5925        #[automatically_derived]
5926        impl alloy_sol_types::SolEvent for Paused {
5927            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5928            type DataToken<'a> = <Self::DataTuple<
5929                'a,
5930            > as alloy_sol_types::SolType>::Token<'a>;
5931            type TopicList = (
5932                alloy_sol_types::sol_data::FixedBytes<32>,
5933                alloy::sol_types::sol_data::Address,
5934            );
5935            const SIGNATURE: &'static str = "Paused(address,uint256)";
5936            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5937                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8,
5938                188u8, 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8,
5939                11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
5940            ]);
5941            const ANONYMOUS: bool = false;
5942            #[allow(unused_variables)]
5943            #[inline]
5944            fn new(
5945                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5946                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5947            ) -> Self {
5948                Self {
5949                    account: topics.1,
5950                    newPausedStatus: data.0,
5951                }
5952            }
5953            #[inline]
5954            fn check_signature(
5955                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5956            ) -> alloy_sol_types::Result<()> {
5957                if topics.0 != Self::SIGNATURE_HASH {
5958                    return Err(
5959                        alloy_sol_types::Error::invalid_event_signature_hash(
5960                            Self::SIGNATURE,
5961                            topics.0,
5962                            Self::SIGNATURE_HASH,
5963                        ),
5964                    );
5965                }
5966                Ok(())
5967            }
5968            #[inline]
5969            fn tokenize_body(&self) -> Self::DataToken<'_> {
5970                (
5971                    <alloy::sol_types::sol_data::Uint<
5972                        256,
5973                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
5974                )
5975            }
5976            #[inline]
5977            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5978                (Self::SIGNATURE_HASH.into(), self.account.clone())
5979            }
5980            #[inline]
5981            fn encode_topics_raw(
5982                &self,
5983                out: &mut [alloy_sol_types::abi::token::WordToken],
5984            ) -> alloy_sol_types::Result<()> {
5985                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5986                    return Err(alloy_sol_types::Error::Overrun);
5987                }
5988                out[0usize] = alloy_sol_types::abi::token::WordToken(
5989                    Self::SIGNATURE_HASH,
5990                );
5991                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5992                    &self.account,
5993                );
5994                Ok(())
5995            }
5996        }
5997        #[automatically_derived]
5998        impl alloy_sol_types::private::IntoLogData for Paused {
5999            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6000                From::from(self)
6001            }
6002            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6003                From::from(&self)
6004            }
6005        }
6006        #[automatically_derived]
6007        impl From<&Paused> for alloy_sol_types::private::LogData {
6008            #[inline]
6009            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
6010                alloy_sol_types::SolEvent::encode_log_data(this)
6011            }
6012        }
6013    };
6014    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6015    /**Event with signature `SlashingWithdrawalCompleted(bytes32)` and selector `0x1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00`.
6016```solidity
6017event SlashingWithdrawalCompleted(bytes32 withdrawalRoot);
6018```*/
6019    #[allow(
6020        non_camel_case_types,
6021        non_snake_case,
6022        clippy::pub_underscore_fields,
6023        clippy::style
6024    )]
6025    #[derive(Clone)]
6026    pub struct SlashingWithdrawalCompleted {
6027        #[allow(missing_docs)]
6028        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
6029    }
6030    #[allow(
6031        non_camel_case_types,
6032        non_snake_case,
6033        clippy::pub_underscore_fields,
6034        clippy::style
6035    )]
6036    const _: () = {
6037        use alloy::sol_types as alloy_sol_types;
6038        #[automatically_derived]
6039        impl alloy_sol_types::SolEvent for SlashingWithdrawalCompleted {
6040            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6041            type DataToken<'a> = <Self::DataTuple<
6042                'a,
6043            > as alloy_sol_types::SolType>::Token<'a>;
6044            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6045            const SIGNATURE: &'static str = "SlashingWithdrawalCompleted(bytes32)";
6046            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6047                31u8, 64u8, 64u8, 8u8, 137u8, 39u8, 78u8, 208u8, 123u8, 36u8, 132u8,
6048                94u8, 80u8, 84u8, 168u8, 122u8, 12u8, 171u8, 150u8, 158u8, 177u8, 39u8,
6049                122u8, 175u8, 230u8, 26u8, 227u8, 82u8, 231u8, 195u8, 42u8, 0u8,
6050            ]);
6051            const ANONYMOUS: bool = false;
6052            #[allow(unused_variables)]
6053            #[inline]
6054            fn new(
6055                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6056                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6057            ) -> Self {
6058                Self { withdrawalRoot: data.0 }
6059            }
6060            #[inline]
6061            fn check_signature(
6062                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6063            ) -> alloy_sol_types::Result<()> {
6064                if topics.0 != Self::SIGNATURE_HASH {
6065                    return Err(
6066                        alloy_sol_types::Error::invalid_event_signature_hash(
6067                            Self::SIGNATURE,
6068                            topics.0,
6069                            Self::SIGNATURE_HASH,
6070                        ),
6071                    );
6072                }
6073                Ok(())
6074            }
6075            #[inline]
6076            fn tokenize_body(&self) -> Self::DataToken<'_> {
6077                (
6078                    <alloy::sol_types::sol_data::FixedBytes<
6079                        32,
6080                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
6081                )
6082            }
6083            #[inline]
6084            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6085                (Self::SIGNATURE_HASH.into(),)
6086            }
6087            #[inline]
6088            fn encode_topics_raw(
6089                &self,
6090                out: &mut [alloy_sol_types::abi::token::WordToken],
6091            ) -> alloy_sol_types::Result<()> {
6092                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6093                    return Err(alloy_sol_types::Error::Overrun);
6094                }
6095                out[0usize] = alloy_sol_types::abi::token::WordToken(
6096                    Self::SIGNATURE_HASH,
6097                );
6098                Ok(())
6099            }
6100        }
6101        #[automatically_derived]
6102        impl alloy_sol_types::private::IntoLogData for SlashingWithdrawalCompleted {
6103            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6104                From::from(self)
6105            }
6106            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6107                From::from(&self)
6108            }
6109        }
6110        #[automatically_derived]
6111        impl From<&SlashingWithdrawalCompleted> for alloy_sol_types::private::LogData {
6112            #[inline]
6113            fn from(
6114                this: &SlashingWithdrawalCompleted,
6115            ) -> alloy_sol_types::private::LogData {
6116                alloy_sol_types::SolEvent::encode_log_data(this)
6117            }
6118        }
6119    };
6120    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6121    /**Event with signature `SlashingWithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]),uint256[])` and selector `0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30`.
6122```solidity
6123event SlashingWithdrawalQueued(bytes32 withdrawalRoot, IDelegationManagerTypes.Withdrawal withdrawal, uint256[] sharesToWithdraw);
6124```*/
6125    #[allow(
6126        non_camel_case_types,
6127        non_snake_case,
6128        clippy::pub_underscore_fields,
6129        clippy::style
6130    )]
6131    #[derive(Clone)]
6132    pub struct SlashingWithdrawalQueued {
6133        #[allow(missing_docs)]
6134        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
6135        #[allow(missing_docs)]
6136        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
6137        #[allow(missing_docs)]
6138        pub sharesToWithdraw: alloy::sol_types::private::Vec<
6139            alloy::sol_types::private::primitives::aliases::U256,
6140        >,
6141    }
6142    #[allow(
6143        non_camel_case_types,
6144        non_snake_case,
6145        clippy::pub_underscore_fields,
6146        clippy::style
6147    )]
6148    const _: () = {
6149        use alloy::sol_types as alloy_sol_types;
6150        #[automatically_derived]
6151        impl alloy_sol_types::SolEvent for SlashingWithdrawalQueued {
6152            type DataTuple<'a> = (
6153                alloy::sol_types::sol_data::FixedBytes<32>,
6154                IDelegationManagerTypes::Withdrawal,
6155                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6156            );
6157            type DataToken<'a> = <Self::DataTuple<
6158                'a,
6159            > as alloy_sol_types::SolType>::Token<'a>;
6160            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6161            const SIGNATURE: &'static str = "SlashingWithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]),uint256[])";
6162            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6163                38u8, 178u8, 170u8, 226u8, 101u8, 22u8, 232u8, 113u8, 158u8, 245u8, 14u8,
6164                162u8, 246u8, 131u8, 26u8, 46u8, 251u8, 212u8, 227u8, 125u8, 204u8,
6165                223u8, 15u8, 105u8, 54u8, 178u8, 123u8, 192u8, 142u8, 121u8, 62u8, 48u8,
6166            ]);
6167            const ANONYMOUS: bool = false;
6168            #[allow(unused_variables)]
6169            #[inline]
6170            fn new(
6171                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6172                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6173            ) -> Self {
6174                Self {
6175                    withdrawalRoot: data.0,
6176                    withdrawal: data.1,
6177                    sharesToWithdraw: data.2,
6178                }
6179            }
6180            #[inline]
6181            fn check_signature(
6182                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6183            ) -> alloy_sol_types::Result<()> {
6184                if topics.0 != Self::SIGNATURE_HASH {
6185                    return Err(
6186                        alloy_sol_types::Error::invalid_event_signature_hash(
6187                            Self::SIGNATURE,
6188                            topics.0,
6189                            Self::SIGNATURE_HASH,
6190                        ),
6191                    );
6192                }
6193                Ok(())
6194            }
6195            #[inline]
6196            fn tokenize_body(&self) -> Self::DataToken<'_> {
6197                (
6198                    <alloy::sol_types::sol_data::FixedBytes<
6199                        32,
6200                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
6201                    <IDelegationManagerTypes::Withdrawal as alloy_sol_types::SolType>::tokenize(
6202                        &self.withdrawal,
6203                    ),
6204                    <alloy::sol_types::sol_data::Array<
6205                        alloy::sol_types::sol_data::Uint<256>,
6206                    > as alloy_sol_types::SolType>::tokenize(&self.sharesToWithdraw),
6207                )
6208            }
6209            #[inline]
6210            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6211                (Self::SIGNATURE_HASH.into(),)
6212            }
6213            #[inline]
6214            fn encode_topics_raw(
6215                &self,
6216                out: &mut [alloy_sol_types::abi::token::WordToken],
6217            ) -> alloy_sol_types::Result<()> {
6218                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6219                    return Err(alloy_sol_types::Error::Overrun);
6220                }
6221                out[0usize] = alloy_sol_types::abi::token::WordToken(
6222                    Self::SIGNATURE_HASH,
6223                );
6224                Ok(())
6225            }
6226        }
6227        #[automatically_derived]
6228        impl alloy_sol_types::private::IntoLogData for SlashingWithdrawalQueued {
6229            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6230                From::from(self)
6231            }
6232            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6233                From::from(&self)
6234            }
6235        }
6236        #[automatically_derived]
6237        impl From<&SlashingWithdrawalQueued> for alloy_sol_types::private::LogData {
6238            #[inline]
6239            fn from(
6240                this: &SlashingWithdrawalQueued,
6241            ) -> alloy_sol_types::private::LogData {
6242                alloy_sol_types::SolEvent::encode_log_data(this)
6243            }
6244        }
6245    };
6246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6247    /**Event with signature `StakerDelegated(address,address)` and selector `0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304`.
6248```solidity
6249event StakerDelegated(address indexed staker, address indexed operator);
6250```*/
6251    #[allow(
6252        non_camel_case_types,
6253        non_snake_case,
6254        clippy::pub_underscore_fields,
6255        clippy::style
6256    )]
6257    #[derive(Clone)]
6258    pub struct StakerDelegated {
6259        #[allow(missing_docs)]
6260        pub staker: alloy::sol_types::private::Address,
6261        #[allow(missing_docs)]
6262        pub operator: alloy::sol_types::private::Address,
6263    }
6264    #[allow(
6265        non_camel_case_types,
6266        non_snake_case,
6267        clippy::pub_underscore_fields,
6268        clippy::style
6269    )]
6270    const _: () = {
6271        use alloy::sol_types as alloy_sol_types;
6272        #[automatically_derived]
6273        impl alloy_sol_types::SolEvent for StakerDelegated {
6274            type DataTuple<'a> = ();
6275            type DataToken<'a> = <Self::DataTuple<
6276                'a,
6277            > as alloy_sol_types::SolType>::Token<'a>;
6278            type TopicList = (
6279                alloy_sol_types::sol_data::FixedBytes<32>,
6280                alloy::sol_types::sol_data::Address,
6281                alloy::sol_types::sol_data::Address,
6282            );
6283            const SIGNATURE: &'static str = "StakerDelegated(address,address)";
6284            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6285                195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8,
6286                116u8, 91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8,
6287                85u8, 156u8, 210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8,
6288            ]);
6289            const ANONYMOUS: bool = false;
6290            #[allow(unused_variables)]
6291            #[inline]
6292            fn new(
6293                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6294                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6295            ) -> Self {
6296                Self {
6297                    staker: topics.1,
6298                    operator: topics.2,
6299                }
6300            }
6301            #[inline]
6302            fn check_signature(
6303                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6304            ) -> alloy_sol_types::Result<()> {
6305                if topics.0 != Self::SIGNATURE_HASH {
6306                    return Err(
6307                        alloy_sol_types::Error::invalid_event_signature_hash(
6308                            Self::SIGNATURE,
6309                            topics.0,
6310                            Self::SIGNATURE_HASH,
6311                        ),
6312                    );
6313                }
6314                Ok(())
6315            }
6316            #[inline]
6317            fn tokenize_body(&self) -> Self::DataToken<'_> {
6318                ()
6319            }
6320            #[inline]
6321            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6322                (Self::SIGNATURE_HASH.into(), self.staker.clone(), self.operator.clone())
6323            }
6324            #[inline]
6325            fn encode_topics_raw(
6326                &self,
6327                out: &mut [alloy_sol_types::abi::token::WordToken],
6328            ) -> alloy_sol_types::Result<()> {
6329                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6330                    return Err(alloy_sol_types::Error::Overrun);
6331                }
6332                out[0usize] = alloy_sol_types::abi::token::WordToken(
6333                    Self::SIGNATURE_HASH,
6334                );
6335                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6336                    &self.staker,
6337                );
6338                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6339                    &self.operator,
6340                );
6341                Ok(())
6342            }
6343        }
6344        #[automatically_derived]
6345        impl alloy_sol_types::private::IntoLogData for StakerDelegated {
6346            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6347                From::from(self)
6348            }
6349            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6350                From::from(&self)
6351            }
6352        }
6353        #[automatically_derived]
6354        impl From<&StakerDelegated> for alloy_sol_types::private::LogData {
6355            #[inline]
6356            fn from(this: &StakerDelegated) -> alloy_sol_types::private::LogData {
6357                alloy_sol_types::SolEvent::encode_log_data(this)
6358            }
6359        }
6360    };
6361    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6362    /**Event with signature `StakerForceUndelegated(address,address)` and selector `0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a`.
6363```solidity
6364event StakerForceUndelegated(address indexed staker, address indexed operator);
6365```*/
6366    #[allow(
6367        non_camel_case_types,
6368        non_snake_case,
6369        clippy::pub_underscore_fields,
6370        clippy::style
6371    )]
6372    #[derive(Clone)]
6373    pub struct StakerForceUndelegated {
6374        #[allow(missing_docs)]
6375        pub staker: alloy::sol_types::private::Address,
6376        #[allow(missing_docs)]
6377        pub operator: alloy::sol_types::private::Address,
6378    }
6379    #[allow(
6380        non_camel_case_types,
6381        non_snake_case,
6382        clippy::pub_underscore_fields,
6383        clippy::style
6384    )]
6385    const _: () = {
6386        use alloy::sol_types as alloy_sol_types;
6387        #[automatically_derived]
6388        impl alloy_sol_types::SolEvent for StakerForceUndelegated {
6389            type DataTuple<'a> = ();
6390            type DataToken<'a> = <Self::DataTuple<
6391                'a,
6392            > as alloy_sol_types::SolType>::Token<'a>;
6393            type TopicList = (
6394                alloy_sol_types::sol_data::FixedBytes<32>,
6395                alloy::sol_types::sol_data::Address,
6396                alloy::sol_types::sol_data::Address,
6397            );
6398            const SIGNATURE: &'static str = "StakerForceUndelegated(address,address)";
6399            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6400                240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8,
6401                30u8, 148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8,
6402                113u8, 19u8, 14u8, 15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8,
6403            ]);
6404            const ANONYMOUS: bool = false;
6405            #[allow(unused_variables)]
6406            #[inline]
6407            fn new(
6408                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6409                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6410            ) -> Self {
6411                Self {
6412                    staker: topics.1,
6413                    operator: topics.2,
6414                }
6415            }
6416            #[inline]
6417            fn check_signature(
6418                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6419            ) -> alloy_sol_types::Result<()> {
6420                if topics.0 != Self::SIGNATURE_HASH {
6421                    return Err(
6422                        alloy_sol_types::Error::invalid_event_signature_hash(
6423                            Self::SIGNATURE,
6424                            topics.0,
6425                            Self::SIGNATURE_HASH,
6426                        ),
6427                    );
6428                }
6429                Ok(())
6430            }
6431            #[inline]
6432            fn tokenize_body(&self) -> Self::DataToken<'_> {
6433                ()
6434            }
6435            #[inline]
6436            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6437                (Self::SIGNATURE_HASH.into(), self.staker.clone(), self.operator.clone())
6438            }
6439            #[inline]
6440            fn encode_topics_raw(
6441                &self,
6442                out: &mut [alloy_sol_types::abi::token::WordToken],
6443            ) -> alloy_sol_types::Result<()> {
6444                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6445                    return Err(alloy_sol_types::Error::Overrun);
6446                }
6447                out[0usize] = alloy_sol_types::abi::token::WordToken(
6448                    Self::SIGNATURE_HASH,
6449                );
6450                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6451                    &self.staker,
6452                );
6453                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6454                    &self.operator,
6455                );
6456                Ok(())
6457            }
6458        }
6459        #[automatically_derived]
6460        impl alloy_sol_types::private::IntoLogData for StakerForceUndelegated {
6461            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6462                From::from(self)
6463            }
6464            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6465                From::from(&self)
6466            }
6467        }
6468        #[automatically_derived]
6469        impl From<&StakerForceUndelegated> for alloy_sol_types::private::LogData {
6470            #[inline]
6471            fn from(this: &StakerForceUndelegated) -> alloy_sol_types::private::LogData {
6472                alloy_sol_types::SolEvent::encode_log_data(this)
6473            }
6474        }
6475    };
6476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6477    /**Event with signature `StakerUndelegated(address,address)` and selector `0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676`.
6478```solidity
6479event StakerUndelegated(address indexed staker, address indexed operator);
6480```*/
6481    #[allow(
6482        non_camel_case_types,
6483        non_snake_case,
6484        clippy::pub_underscore_fields,
6485        clippy::style
6486    )]
6487    #[derive(Clone)]
6488    pub struct StakerUndelegated {
6489        #[allow(missing_docs)]
6490        pub staker: alloy::sol_types::private::Address,
6491        #[allow(missing_docs)]
6492        pub operator: alloy::sol_types::private::Address,
6493    }
6494    #[allow(
6495        non_camel_case_types,
6496        non_snake_case,
6497        clippy::pub_underscore_fields,
6498        clippy::style
6499    )]
6500    const _: () = {
6501        use alloy::sol_types as alloy_sol_types;
6502        #[automatically_derived]
6503        impl alloy_sol_types::SolEvent for StakerUndelegated {
6504            type DataTuple<'a> = ();
6505            type DataToken<'a> = <Self::DataTuple<
6506                'a,
6507            > as alloy_sol_types::SolType>::Token<'a>;
6508            type TopicList = (
6509                alloy_sol_types::sol_data::FixedBytes<32>,
6510                alloy::sol_types::sol_data::Address,
6511                alloy::sol_types::sol_data::Address,
6512            );
6513            const SIGNATURE: &'static str = "StakerUndelegated(address,address)";
6514            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6515                254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8,
6516                191u8, 201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8,
6517                169u8, 226u8, 183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8,
6518            ]);
6519            const ANONYMOUS: bool = false;
6520            #[allow(unused_variables)]
6521            #[inline]
6522            fn new(
6523                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6524                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6525            ) -> Self {
6526                Self {
6527                    staker: topics.1,
6528                    operator: topics.2,
6529                }
6530            }
6531            #[inline]
6532            fn check_signature(
6533                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6534            ) -> alloy_sol_types::Result<()> {
6535                if topics.0 != Self::SIGNATURE_HASH {
6536                    return Err(
6537                        alloy_sol_types::Error::invalid_event_signature_hash(
6538                            Self::SIGNATURE,
6539                            topics.0,
6540                            Self::SIGNATURE_HASH,
6541                        ),
6542                    );
6543                }
6544                Ok(())
6545            }
6546            #[inline]
6547            fn tokenize_body(&self) -> Self::DataToken<'_> {
6548                ()
6549            }
6550            #[inline]
6551            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6552                (Self::SIGNATURE_HASH.into(), self.staker.clone(), self.operator.clone())
6553            }
6554            #[inline]
6555            fn encode_topics_raw(
6556                &self,
6557                out: &mut [alloy_sol_types::abi::token::WordToken],
6558            ) -> alloy_sol_types::Result<()> {
6559                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6560                    return Err(alloy_sol_types::Error::Overrun);
6561                }
6562                out[0usize] = alloy_sol_types::abi::token::WordToken(
6563                    Self::SIGNATURE_HASH,
6564                );
6565                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6566                    &self.staker,
6567                );
6568                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6569                    &self.operator,
6570                );
6571                Ok(())
6572            }
6573        }
6574        #[automatically_derived]
6575        impl alloy_sol_types::private::IntoLogData for StakerUndelegated {
6576            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6577                From::from(self)
6578            }
6579            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6580                From::from(&self)
6581            }
6582        }
6583        #[automatically_derived]
6584        impl From<&StakerUndelegated> for alloy_sol_types::private::LogData {
6585            #[inline]
6586            fn from(this: &StakerUndelegated) -> alloy_sol_types::private::LogData {
6587                alloy_sol_types::SolEvent::encode_log_data(this)
6588            }
6589        }
6590    };
6591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6592    /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`.
6593```solidity
6594event Unpaused(address indexed account, uint256 newPausedStatus);
6595```*/
6596    #[allow(
6597        non_camel_case_types,
6598        non_snake_case,
6599        clippy::pub_underscore_fields,
6600        clippy::style
6601    )]
6602    #[derive(Clone)]
6603    pub struct Unpaused {
6604        #[allow(missing_docs)]
6605        pub account: alloy::sol_types::private::Address,
6606        #[allow(missing_docs)]
6607        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
6608    }
6609    #[allow(
6610        non_camel_case_types,
6611        non_snake_case,
6612        clippy::pub_underscore_fields,
6613        clippy::style
6614    )]
6615    const _: () = {
6616        use alloy::sol_types as alloy_sol_types;
6617        #[automatically_derived]
6618        impl alloy_sol_types::SolEvent for Unpaused {
6619            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6620            type DataToken<'a> = <Self::DataTuple<
6621                'a,
6622            > as alloy_sol_types::SolType>::Token<'a>;
6623            type TopicList = (
6624                alloy_sol_types::sol_data::FixedBytes<32>,
6625                alloy::sol_types::sol_data::Address,
6626            );
6627            const SIGNATURE: &'static str = "Unpaused(address,uint256)";
6628            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6629                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8,
6630                2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8,
6631                228u8, 152u8, 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
6632            ]);
6633            const ANONYMOUS: bool = false;
6634            #[allow(unused_variables)]
6635            #[inline]
6636            fn new(
6637                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6638                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6639            ) -> Self {
6640                Self {
6641                    account: topics.1,
6642                    newPausedStatus: data.0,
6643                }
6644            }
6645            #[inline]
6646            fn check_signature(
6647                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6648            ) -> alloy_sol_types::Result<()> {
6649                if topics.0 != Self::SIGNATURE_HASH {
6650                    return Err(
6651                        alloy_sol_types::Error::invalid_event_signature_hash(
6652                            Self::SIGNATURE,
6653                            topics.0,
6654                            Self::SIGNATURE_HASH,
6655                        ),
6656                    );
6657                }
6658                Ok(())
6659            }
6660            #[inline]
6661            fn tokenize_body(&self) -> Self::DataToken<'_> {
6662                (
6663                    <alloy::sol_types::sol_data::Uint<
6664                        256,
6665                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
6666                )
6667            }
6668            #[inline]
6669            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6670                (Self::SIGNATURE_HASH.into(), self.account.clone())
6671            }
6672            #[inline]
6673            fn encode_topics_raw(
6674                &self,
6675                out: &mut [alloy_sol_types::abi::token::WordToken],
6676            ) -> alloy_sol_types::Result<()> {
6677                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6678                    return Err(alloy_sol_types::Error::Overrun);
6679                }
6680                out[0usize] = alloy_sol_types::abi::token::WordToken(
6681                    Self::SIGNATURE_HASH,
6682                );
6683                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6684                    &self.account,
6685                );
6686                Ok(())
6687            }
6688        }
6689        #[automatically_derived]
6690        impl alloy_sol_types::private::IntoLogData for Unpaused {
6691            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6692                From::from(self)
6693            }
6694            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6695                From::from(&self)
6696            }
6697        }
6698        #[automatically_derived]
6699        impl From<&Unpaused> for alloy_sol_types::private::LogData {
6700            #[inline]
6701            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
6702                alloy_sol_types::SolEvent::encode_log_data(this)
6703            }
6704        }
6705    };
6706    /**Constructor`.
6707```solidity
6708constructor(address _strategyManager, address _eigenPodManager, address _allocationManager, address _pauserRegistry, address _permissionController, uint32 _MIN_WITHDRAWAL_DELAY, string _version);
6709```*/
6710    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6711    #[derive(Clone)]
6712    pub struct constructorCall {
6713        #[allow(missing_docs)]
6714        pub _strategyManager: alloy::sol_types::private::Address,
6715        #[allow(missing_docs)]
6716        pub _eigenPodManager: alloy::sol_types::private::Address,
6717        #[allow(missing_docs)]
6718        pub _allocationManager: alloy::sol_types::private::Address,
6719        #[allow(missing_docs)]
6720        pub _pauserRegistry: alloy::sol_types::private::Address,
6721        #[allow(missing_docs)]
6722        pub _permissionController: alloy::sol_types::private::Address,
6723        #[allow(missing_docs)]
6724        pub _MIN_WITHDRAWAL_DELAY: u32,
6725        #[allow(missing_docs)]
6726        pub _version: alloy::sol_types::private::String,
6727    }
6728    const _: () = {
6729        use alloy::sol_types as alloy_sol_types;
6730        {
6731            #[doc(hidden)]
6732            type UnderlyingSolTuple<'a> = (
6733                alloy::sol_types::sol_data::Address,
6734                alloy::sol_types::sol_data::Address,
6735                alloy::sol_types::sol_data::Address,
6736                alloy::sol_types::sol_data::Address,
6737                alloy::sol_types::sol_data::Address,
6738                alloy::sol_types::sol_data::Uint<32>,
6739                alloy::sol_types::sol_data::String,
6740            );
6741            #[doc(hidden)]
6742            type UnderlyingRustTuple<'a> = (
6743                alloy::sol_types::private::Address,
6744                alloy::sol_types::private::Address,
6745                alloy::sol_types::private::Address,
6746                alloy::sol_types::private::Address,
6747                alloy::sol_types::private::Address,
6748                u32,
6749                alloy::sol_types::private::String,
6750            );
6751            #[cfg(test)]
6752            #[allow(dead_code, unreachable_patterns)]
6753            fn _type_assertion(
6754                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6755            ) {
6756                match _t {
6757                    alloy_sol_types::private::AssertTypeEq::<
6758                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6759                    >(_) => {}
6760                }
6761            }
6762            #[automatically_derived]
6763            #[doc(hidden)]
6764            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
6765                fn from(value: constructorCall) -> Self {
6766                    (
6767                        value._strategyManager,
6768                        value._eigenPodManager,
6769                        value._allocationManager,
6770                        value._pauserRegistry,
6771                        value._permissionController,
6772                        value._MIN_WITHDRAWAL_DELAY,
6773                        value._version,
6774                    )
6775                }
6776            }
6777            #[automatically_derived]
6778            #[doc(hidden)]
6779            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
6780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6781                    Self {
6782                        _strategyManager: tuple.0,
6783                        _eigenPodManager: tuple.1,
6784                        _allocationManager: tuple.2,
6785                        _pauserRegistry: tuple.3,
6786                        _permissionController: tuple.4,
6787                        _MIN_WITHDRAWAL_DELAY: tuple.5,
6788                        _version: tuple.6,
6789                    }
6790                }
6791            }
6792        }
6793        #[automatically_derived]
6794        impl alloy_sol_types::SolConstructor for constructorCall {
6795            type Parameters<'a> = (
6796                alloy::sol_types::sol_data::Address,
6797                alloy::sol_types::sol_data::Address,
6798                alloy::sol_types::sol_data::Address,
6799                alloy::sol_types::sol_data::Address,
6800                alloy::sol_types::sol_data::Address,
6801                alloy::sol_types::sol_data::Uint<32>,
6802                alloy::sol_types::sol_data::String,
6803            );
6804            type Token<'a> = <Self::Parameters<
6805                'a,
6806            > as alloy_sol_types::SolType>::Token<'a>;
6807            #[inline]
6808            fn new<'a>(
6809                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6810            ) -> Self {
6811                tuple.into()
6812            }
6813            #[inline]
6814            fn tokenize(&self) -> Self::Token<'_> {
6815                (
6816                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6817                        &self._strategyManager,
6818                    ),
6819                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6820                        &self._eigenPodManager,
6821                    ),
6822                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6823                        &self._allocationManager,
6824                    ),
6825                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6826                        &self._pauserRegistry,
6827                    ),
6828                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6829                        &self._permissionController,
6830                    ),
6831                    <alloy::sol_types::sol_data::Uint<
6832                        32,
6833                    > as alloy_sol_types::SolType>::tokenize(
6834                        &self._MIN_WITHDRAWAL_DELAY,
6835                    ),
6836                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6837                        &self._version,
6838                    ),
6839                )
6840            }
6841        }
6842    };
6843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6844    /**Function with signature `DELEGATION_APPROVAL_TYPEHASH()` and selector `0x04a4f979`.
6845```solidity
6846function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32);
6847```*/
6848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6849    #[derive(Clone)]
6850    pub struct DELEGATION_APPROVAL_TYPEHASHCall {}
6851    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6852    ///Container type for the return parameters of the [`DELEGATION_APPROVAL_TYPEHASH()`](DELEGATION_APPROVAL_TYPEHASHCall) function.
6853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6854    #[derive(Clone)]
6855    pub struct DELEGATION_APPROVAL_TYPEHASHReturn {
6856        #[allow(missing_docs)]
6857        pub _0: alloy::sol_types::private::FixedBytes<32>,
6858    }
6859    #[allow(
6860        non_camel_case_types,
6861        non_snake_case,
6862        clippy::pub_underscore_fields,
6863        clippy::style
6864    )]
6865    const _: () = {
6866        use alloy::sol_types as alloy_sol_types;
6867        {
6868            #[doc(hidden)]
6869            type UnderlyingSolTuple<'a> = ();
6870            #[doc(hidden)]
6871            type UnderlyingRustTuple<'a> = ();
6872            #[cfg(test)]
6873            #[allow(dead_code, unreachable_patterns)]
6874            fn _type_assertion(
6875                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6876            ) {
6877                match _t {
6878                    alloy_sol_types::private::AssertTypeEq::<
6879                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6880                    >(_) => {}
6881                }
6882            }
6883            #[automatically_derived]
6884            #[doc(hidden)]
6885            impl ::core::convert::From<DELEGATION_APPROVAL_TYPEHASHCall>
6886            for UnderlyingRustTuple<'_> {
6887                fn from(value: DELEGATION_APPROVAL_TYPEHASHCall) -> Self {
6888                    ()
6889                }
6890            }
6891            #[automatically_derived]
6892            #[doc(hidden)]
6893            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6894            for DELEGATION_APPROVAL_TYPEHASHCall {
6895                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6896                    Self {}
6897                }
6898            }
6899        }
6900        {
6901            #[doc(hidden)]
6902            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6903            #[doc(hidden)]
6904            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6905            #[cfg(test)]
6906            #[allow(dead_code, unreachable_patterns)]
6907            fn _type_assertion(
6908                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6909            ) {
6910                match _t {
6911                    alloy_sol_types::private::AssertTypeEq::<
6912                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6913                    >(_) => {}
6914                }
6915            }
6916            #[automatically_derived]
6917            #[doc(hidden)]
6918            impl ::core::convert::From<DELEGATION_APPROVAL_TYPEHASHReturn>
6919            for UnderlyingRustTuple<'_> {
6920                fn from(value: DELEGATION_APPROVAL_TYPEHASHReturn) -> Self {
6921                    (value._0,)
6922                }
6923            }
6924            #[automatically_derived]
6925            #[doc(hidden)]
6926            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6927            for DELEGATION_APPROVAL_TYPEHASHReturn {
6928                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6929                    Self { _0: tuple.0 }
6930                }
6931            }
6932        }
6933        #[automatically_derived]
6934        impl alloy_sol_types::SolCall for DELEGATION_APPROVAL_TYPEHASHCall {
6935            type Parameters<'a> = ();
6936            type Token<'a> = <Self::Parameters<
6937                'a,
6938            > as alloy_sol_types::SolType>::Token<'a>;
6939            type Return = DELEGATION_APPROVAL_TYPEHASHReturn;
6940            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6941            type ReturnToken<'a> = <Self::ReturnTuple<
6942                'a,
6943            > as alloy_sol_types::SolType>::Token<'a>;
6944            const SIGNATURE: &'static str = "DELEGATION_APPROVAL_TYPEHASH()";
6945            const SELECTOR: [u8; 4] = [4u8, 164u8, 249u8, 121u8];
6946            #[inline]
6947            fn new<'a>(
6948                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6949            ) -> Self {
6950                tuple.into()
6951            }
6952            #[inline]
6953            fn tokenize(&self) -> Self::Token<'_> {
6954                ()
6955            }
6956            #[inline]
6957            fn abi_decode_returns(
6958                data: &[u8],
6959                validate: bool,
6960            ) -> alloy_sol_types::Result<Self::Return> {
6961                <Self::ReturnTuple<
6962                    '_,
6963                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6964                    .map(Into::into)
6965            }
6966        }
6967    };
6968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6969    /**Function with signature `allocationManager()` and selector `0xca8aa7c7`.
6970```solidity
6971function allocationManager() external view returns (address);
6972```*/
6973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6974    #[derive(Clone)]
6975    pub struct allocationManagerCall {}
6976    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6977    ///Container type for the return parameters of the [`allocationManager()`](allocationManagerCall) function.
6978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6979    #[derive(Clone)]
6980    pub struct allocationManagerReturn {
6981        #[allow(missing_docs)]
6982        pub _0: alloy::sol_types::private::Address,
6983    }
6984    #[allow(
6985        non_camel_case_types,
6986        non_snake_case,
6987        clippy::pub_underscore_fields,
6988        clippy::style
6989    )]
6990    const _: () = {
6991        use alloy::sol_types as alloy_sol_types;
6992        {
6993            #[doc(hidden)]
6994            type UnderlyingSolTuple<'a> = ();
6995            #[doc(hidden)]
6996            type UnderlyingRustTuple<'a> = ();
6997            #[cfg(test)]
6998            #[allow(dead_code, unreachable_patterns)]
6999            fn _type_assertion(
7000                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7001            ) {
7002                match _t {
7003                    alloy_sol_types::private::AssertTypeEq::<
7004                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7005                    >(_) => {}
7006                }
7007            }
7008            #[automatically_derived]
7009            #[doc(hidden)]
7010            impl ::core::convert::From<allocationManagerCall>
7011            for UnderlyingRustTuple<'_> {
7012                fn from(value: allocationManagerCall) -> Self {
7013                    ()
7014                }
7015            }
7016            #[automatically_derived]
7017            #[doc(hidden)]
7018            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7019            for allocationManagerCall {
7020                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7021                    Self {}
7022                }
7023            }
7024        }
7025        {
7026            #[doc(hidden)]
7027            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7028            #[doc(hidden)]
7029            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7030            #[cfg(test)]
7031            #[allow(dead_code, unreachable_patterns)]
7032            fn _type_assertion(
7033                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7034            ) {
7035                match _t {
7036                    alloy_sol_types::private::AssertTypeEq::<
7037                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7038                    >(_) => {}
7039                }
7040            }
7041            #[automatically_derived]
7042            #[doc(hidden)]
7043            impl ::core::convert::From<allocationManagerReturn>
7044            for UnderlyingRustTuple<'_> {
7045                fn from(value: allocationManagerReturn) -> Self {
7046                    (value._0,)
7047                }
7048            }
7049            #[automatically_derived]
7050            #[doc(hidden)]
7051            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7052            for allocationManagerReturn {
7053                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7054                    Self { _0: tuple.0 }
7055                }
7056            }
7057        }
7058        #[automatically_derived]
7059        impl alloy_sol_types::SolCall for allocationManagerCall {
7060            type Parameters<'a> = ();
7061            type Token<'a> = <Self::Parameters<
7062                'a,
7063            > as alloy_sol_types::SolType>::Token<'a>;
7064            type Return = allocationManagerReturn;
7065            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7066            type ReturnToken<'a> = <Self::ReturnTuple<
7067                'a,
7068            > as alloy_sol_types::SolType>::Token<'a>;
7069            const SIGNATURE: &'static str = "allocationManager()";
7070            const SELECTOR: [u8; 4] = [202u8, 138u8, 167u8, 199u8];
7071            #[inline]
7072            fn new<'a>(
7073                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7074            ) -> Self {
7075                tuple.into()
7076            }
7077            #[inline]
7078            fn tokenize(&self) -> Self::Token<'_> {
7079                ()
7080            }
7081            #[inline]
7082            fn abi_decode_returns(
7083                data: &[u8],
7084                validate: bool,
7085            ) -> alloy_sol_types::Result<Self::Return> {
7086                <Self::ReturnTuple<
7087                    '_,
7088                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7089                    .map(Into::into)
7090            }
7091        }
7092    };
7093    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7094    /**Function with signature `beaconChainETHStrategy()` and selector `0x9104c319`.
7095```solidity
7096function beaconChainETHStrategy() external view returns (address);
7097```*/
7098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7099    #[derive(Clone)]
7100    pub struct beaconChainETHStrategyCall {}
7101    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7102    ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function.
7103    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7104    #[derive(Clone)]
7105    pub struct beaconChainETHStrategyReturn {
7106        #[allow(missing_docs)]
7107        pub _0: alloy::sol_types::private::Address,
7108    }
7109    #[allow(
7110        non_camel_case_types,
7111        non_snake_case,
7112        clippy::pub_underscore_fields,
7113        clippy::style
7114    )]
7115    const _: () = {
7116        use alloy::sol_types as alloy_sol_types;
7117        {
7118            #[doc(hidden)]
7119            type UnderlyingSolTuple<'a> = ();
7120            #[doc(hidden)]
7121            type UnderlyingRustTuple<'a> = ();
7122            #[cfg(test)]
7123            #[allow(dead_code, unreachable_patterns)]
7124            fn _type_assertion(
7125                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7126            ) {
7127                match _t {
7128                    alloy_sol_types::private::AssertTypeEq::<
7129                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7130                    >(_) => {}
7131                }
7132            }
7133            #[automatically_derived]
7134            #[doc(hidden)]
7135            impl ::core::convert::From<beaconChainETHStrategyCall>
7136            for UnderlyingRustTuple<'_> {
7137                fn from(value: beaconChainETHStrategyCall) -> Self {
7138                    ()
7139                }
7140            }
7141            #[automatically_derived]
7142            #[doc(hidden)]
7143            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7144            for beaconChainETHStrategyCall {
7145                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7146                    Self {}
7147                }
7148            }
7149        }
7150        {
7151            #[doc(hidden)]
7152            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7153            #[doc(hidden)]
7154            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7155            #[cfg(test)]
7156            #[allow(dead_code, unreachable_patterns)]
7157            fn _type_assertion(
7158                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7159            ) {
7160                match _t {
7161                    alloy_sol_types::private::AssertTypeEq::<
7162                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7163                    >(_) => {}
7164                }
7165            }
7166            #[automatically_derived]
7167            #[doc(hidden)]
7168            impl ::core::convert::From<beaconChainETHStrategyReturn>
7169            for UnderlyingRustTuple<'_> {
7170                fn from(value: beaconChainETHStrategyReturn) -> Self {
7171                    (value._0,)
7172                }
7173            }
7174            #[automatically_derived]
7175            #[doc(hidden)]
7176            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7177            for beaconChainETHStrategyReturn {
7178                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7179                    Self { _0: tuple.0 }
7180                }
7181            }
7182        }
7183        #[automatically_derived]
7184        impl alloy_sol_types::SolCall for beaconChainETHStrategyCall {
7185            type Parameters<'a> = ();
7186            type Token<'a> = <Self::Parameters<
7187                'a,
7188            > as alloy_sol_types::SolType>::Token<'a>;
7189            type Return = beaconChainETHStrategyReturn;
7190            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7191            type ReturnToken<'a> = <Self::ReturnTuple<
7192                'a,
7193            > as alloy_sol_types::SolType>::Token<'a>;
7194            const SIGNATURE: &'static str = "beaconChainETHStrategy()";
7195            const SELECTOR: [u8; 4] = [145u8, 4u8, 195u8, 25u8];
7196            #[inline]
7197            fn new<'a>(
7198                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7199            ) -> Self {
7200                tuple.into()
7201            }
7202            #[inline]
7203            fn tokenize(&self) -> Self::Token<'_> {
7204                ()
7205            }
7206            #[inline]
7207            fn abi_decode_returns(
7208                data: &[u8],
7209                validate: bool,
7210            ) -> alloy_sol_types::Result<Self::Return> {
7211                <Self::ReturnTuple<
7212                    '_,
7213                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7214                    .map(Into::into)
7215            }
7216        }
7217    };
7218    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7219    /**Function with signature `calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)` and selector `0x0b9f487a`.
7220```solidity
7221function calculateDelegationApprovalDigestHash(address staker, address operator, address approver, bytes32 approverSalt, uint256 expiry) external view returns (bytes32);
7222```*/
7223    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7224    #[derive(Clone)]
7225    pub struct calculateDelegationApprovalDigestHashCall {
7226        #[allow(missing_docs)]
7227        pub staker: alloy::sol_types::private::Address,
7228        #[allow(missing_docs)]
7229        pub operator: alloy::sol_types::private::Address,
7230        #[allow(missing_docs)]
7231        pub approver: alloy::sol_types::private::Address,
7232        #[allow(missing_docs)]
7233        pub approverSalt: alloy::sol_types::private::FixedBytes<32>,
7234        #[allow(missing_docs)]
7235        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
7236    }
7237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7238    ///Container type for the return parameters of the [`calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)`](calculateDelegationApprovalDigestHashCall) function.
7239    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7240    #[derive(Clone)]
7241    pub struct calculateDelegationApprovalDigestHashReturn {
7242        #[allow(missing_docs)]
7243        pub _0: alloy::sol_types::private::FixedBytes<32>,
7244    }
7245    #[allow(
7246        non_camel_case_types,
7247        non_snake_case,
7248        clippy::pub_underscore_fields,
7249        clippy::style
7250    )]
7251    const _: () = {
7252        use alloy::sol_types as alloy_sol_types;
7253        {
7254            #[doc(hidden)]
7255            type UnderlyingSolTuple<'a> = (
7256                alloy::sol_types::sol_data::Address,
7257                alloy::sol_types::sol_data::Address,
7258                alloy::sol_types::sol_data::Address,
7259                alloy::sol_types::sol_data::FixedBytes<32>,
7260                alloy::sol_types::sol_data::Uint<256>,
7261            );
7262            #[doc(hidden)]
7263            type UnderlyingRustTuple<'a> = (
7264                alloy::sol_types::private::Address,
7265                alloy::sol_types::private::Address,
7266                alloy::sol_types::private::Address,
7267                alloy::sol_types::private::FixedBytes<32>,
7268                alloy::sol_types::private::primitives::aliases::U256,
7269            );
7270            #[cfg(test)]
7271            #[allow(dead_code, unreachable_patterns)]
7272            fn _type_assertion(
7273                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7274            ) {
7275                match _t {
7276                    alloy_sol_types::private::AssertTypeEq::<
7277                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7278                    >(_) => {}
7279                }
7280            }
7281            #[automatically_derived]
7282            #[doc(hidden)]
7283            impl ::core::convert::From<calculateDelegationApprovalDigestHashCall>
7284            for UnderlyingRustTuple<'_> {
7285                fn from(value: calculateDelegationApprovalDigestHashCall) -> Self {
7286                    (
7287                        value.staker,
7288                        value.operator,
7289                        value.approver,
7290                        value.approverSalt,
7291                        value.expiry,
7292                    )
7293                }
7294            }
7295            #[automatically_derived]
7296            #[doc(hidden)]
7297            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7298            for calculateDelegationApprovalDigestHashCall {
7299                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7300                    Self {
7301                        staker: tuple.0,
7302                        operator: tuple.1,
7303                        approver: tuple.2,
7304                        approverSalt: tuple.3,
7305                        expiry: tuple.4,
7306                    }
7307                }
7308            }
7309        }
7310        {
7311            #[doc(hidden)]
7312            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7313            #[doc(hidden)]
7314            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7315            #[cfg(test)]
7316            #[allow(dead_code, unreachable_patterns)]
7317            fn _type_assertion(
7318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7319            ) {
7320                match _t {
7321                    alloy_sol_types::private::AssertTypeEq::<
7322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7323                    >(_) => {}
7324                }
7325            }
7326            #[automatically_derived]
7327            #[doc(hidden)]
7328            impl ::core::convert::From<calculateDelegationApprovalDigestHashReturn>
7329            for UnderlyingRustTuple<'_> {
7330                fn from(value: calculateDelegationApprovalDigestHashReturn) -> Self {
7331                    (value._0,)
7332                }
7333            }
7334            #[automatically_derived]
7335            #[doc(hidden)]
7336            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7337            for calculateDelegationApprovalDigestHashReturn {
7338                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7339                    Self { _0: tuple.0 }
7340                }
7341            }
7342        }
7343        #[automatically_derived]
7344        impl alloy_sol_types::SolCall for calculateDelegationApprovalDigestHashCall {
7345            type Parameters<'a> = (
7346                alloy::sol_types::sol_data::Address,
7347                alloy::sol_types::sol_data::Address,
7348                alloy::sol_types::sol_data::Address,
7349                alloy::sol_types::sol_data::FixedBytes<32>,
7350                alloy::sol_types::sol_data::Uint<256>,
7351            );
7352            type Token<'a> = <Self::Parameters<
7353                'a,
7354            > as alloy_sol_types::SolType>::Token<'a>;
7355            type Return = calculateDelegationApprovalDigestHashReturn;
7356            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7357            type ReturnToken<'a> = <Self::ReturnTuple<
7358                'a,
7359            > as alloy_sol_types::SolType>::Token<'a>;
7360            const SIGNATURE: &'static str = "calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)";
7361            const SELECTOR: [u8; 4] = [11u8, 159u8, 72u8, 122u8];
7362            #[inline]
7363            fn new<'a>(
7364                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7365            ) -> Self {
7366                tuple.into()
7367            }
7368            #[inline]
7369            fn tokenize(&self) -> Self::Token<'_> {
7370                (
7371                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7372                        &self.staker,
7373                    ),
7374                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7375                        &self.operator,
7376                    ),
7377                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7378                        &self.approver,
7379                    ),
7380                    <alloy::sol_types::sol_data::FixedBytes<
7381                        32,
7382                    > as alloy_sol_types::SolType>::tokenize(&self.approverSalt),
7383                    <alloy::sol_types::sol_data::Uint<
7384                        256,
7385                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
7386                )
7387            }
7388            #[inline]
7389            fn abi_decode_returns(
7390                data: &[u8],
7391                validate: bool,
7392            ) -> alloy_sol_types::Result<Self::Return> {
7393                <Self::ReturnTuple<
7394                    '_,
7395                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7396                    .map(Into::into)
7397            }
7398        }
7399    };
7400    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7401    /**Function with signature `calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))` and selector `0x597b36da`.
7402```solidity
7403function calculateWithdrawalRoot(IDelegationManagerTypes.Withdrawal memory withdrawal) external pure returns (bytes32);
7404```*/
7405    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7406    #[derive(Clone)]
7407    pub struct calculateWithdrawalRootCall {
7408        #[allow(missing_docs)]
7409        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7410    }
7411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7412    ///Container type for the return parameters of the [`calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))`](calculateWithdrawalRootCall) function.
7413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7414    #[derive(Clone)]
7415    pub struct calculateWithdrawalRootReturn {
7416        #[allow(missing_docs)]
7417        pub _0: alloy::sol_types::private::FixedBytes<32>,
7418    }
7419    #[allow(
7420        non_camel_case_types,
7421        non_snake_case,
7422        clippy::pub_underscore_fields,
7423        clippy::style
7424    )]
7425    const _: () = {
7426        use alloy::sol_types as alloy_sol_types;
7427        {
7428            #[doc(hidden)]
7429            type UnderlyingSolTuple<'a> = (IDelegationManagerTypes::Withdrawal,);
7430            #[doc(hidden)]
7431            type UnderlyingRustTuple<'a> = (
7432                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7433            );
7434            #[cfg(test)]
7435            #[allow(dead_code, unreachable_patterns)]
7436            fn _type_assertion(
7437                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7438            ) {
7439                match _t {
7440                    alloy_sol_types::private::AssertTypeEq::<
7441                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7442                    >(_) => {}
7443                }
7444            }
7445            #[automatically_derived]
7446            #[doc(hidden)]
7447            impl ::core::convert::From<calculateWithdrawalRootCall>
7448            for UnderlyingRustTuple<'_> {
7449                fn from(value: calculateWithdrawalRootCall) -> Self {
7450                    (value.withdrawal,)
7451                }
7452            }
7453            #[automatically_derived]
7454            #[doc(hidden)]
7455            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7456            for calculateWithdrawalRootCall {
7457                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7458                    Self { withdrawal: tuple.0 }
7459                }
7460            }
7461        }
7462        {
7463            #[doc(hidden)]
7464            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7465            #[doc(hidden)]
7466            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7467            #[cfg(test)]
7468            #[allow(dead_code, unreachable_patterns)]
7469            fn _type_assertion(
7470                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7471            ) {
7472                match _t {
7473                    alloy_sol_types::private::AssertTypeEq::<
7474                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7475                    >(_) => {}
7476                }
7477            }
7478            #[automatically_derived]
7479            #[doc(hidden)]
7480            impl ::core::convert::From<calculateWithdrawalRootReturn>
7481            for UnderlyingRustTuple<'_> {
7482                fn from(value: calculateWithdrawalRootReturn) -> Self {
7483                    (value._0,)
7484                }
7485            }
7486            #[automatically_derived]
7487            #[doc(hidden)]
7488            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7489            for calculateWithdrawalRootReturn {
7490                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7491                    Self { _0: tuple.0 }
7492                }
7493            }
7494        }
7495        #[automatically_derived]
7496        impl alloy_sol_types::SolCall for calculateWithdrawalRootCall {
7497            type Parameters<'a> = (IDelegationManagerTypes::Withdrawal,);
7498            type Token<'a> = <Self::Parameters<
7499                'a,
7500            > as alloy_sol_types::SolType>::Token<'a>;
7501            type Return = calculateWithdrawalRootReturn;
7502            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7503            type ReturnToken<'a> = <Self::ReturnTuple<
7504                'a,
7505            > as alloy_sol_types::SolType>::Token<'a>;
7506            const SIGNATURE: &'static str = "calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))";
7507            const SELECTOR: [u8; 4] = [89u8, 123u8, 54u8, 218u8];
7508            #[inline]
7509            fn new<'a>(
7510                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7511            ) -> Self {
7512                tuple.into()
7513            }
7514            #[inline]
7515            fn tokenize(&self) -> Self::Token<'_> {
7516                (
7517                    <IDelegationManagerTypes::Withdrawal as alloy_sol_types::SolType>::tokenize(
7518                        &self.withdrawal,
7519                    ),
7520                )
7521            }
7522            #[inline]
7523            fn abi_decode_returns(
7524                data: &[u8],
7525                validate: bool,
7526            ) -> alloy_sol_types::Result<Self::Return> {
7527                <Self::ReturnTuple<
7528                    '_,
7529                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7530                    .map(Into::into)
7531            }
7532        }
7533    };
7534    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7535    /**Function with signature `completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],bool)` and selector `0xe4cc3f90`.
7536```solidity
7537function completeQueuedWithdrawal(IDelegationManagerTypes.Withdrawal memory withdrawal, address[] memory tokens, bool receiveAsTokens) external;
7538```*/
7539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7540    #[derive(Clone)]
7541    pub struct completeQueuedWithdrawalCall {
7542        #[allow(missing_docs)]
7543        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7544        #[allow(missing_docs)]
7545        pub tokens: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7546        #[allow(missing_docs)]
7547        pub receiveAsTokens: bool,
7548    }
7549    ///Container type for the return parameters of the [`completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],bool)`](completeQueuedWithdrawalCall) function.
7550    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7551    #[derive(Clone)]
7552    pub struct completeQueuedWithdrawalReturn {}
7553    #[allow(
7554        non_camel_case_types,
7555        non_snake_case,
7556        clippy::pub_underscore_fields,
7557        clippy::style
7558    )]
7559    const _: () = {
7560        use alloy::sol_types as alloy_sol_types;
7561        {
7562            #[doc(hidden)]
7563            type UnderlyingSolTuple<'a> = (
7564                IDelegationManagerTypes::Withdrawal,
7565                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7566                alloy::sol_types::sol_data::Bool,
7567            );
7568            #[doc(hidden)]
7569            type UnderlyingRustTuple<'a> = (
7570                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7571                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7572                bool,
7573            );
7574            #[cfg(test)]
7575            #[allow(dead_code, unreachable_patterns)]
7576            fn _type_assertion(
7577                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7578            ) {
7579                match _t {
7580                    alloy_sol_types::private::AssertTypeEq::<
7581                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7582                    >(_) => {}
7583                }
7584            }
7585            #[automatically_derived]
7586            #[doc(hidden)]
7587            impl ::core::convert::From<completeQueuedWithdrawalCall>
7588            for UnderlyingRustTuple<'_> {
7589                fn from(value: completeQueuedWithdrawalCall) -> Self {
7590                    (value.withdrawal, value.tokens, value.receiveAsTokens)
7591                }
7592            }
7593            #[automatically_derived]
7594            #[doc(hidden)]
7595            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7596            for completeQueuedWithdrawalCall {
7597                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7598                    Self {
7599                        withdrawal: tuple.0,
7600                        tokens: tuple.1,
7601                        receiveAsTokens: tuple.2,
7602                    }
7603                }
7604            }
7605        }
7606        {
7607            #[doc(hidden)]
7608            type UnderlyingSolTuple<'a> = ();
7609            #[doc(hidden)]
7610            type UnderlyingRustTuple<'a> = ();
7611            #[cfg(test)]
7612            #[allow(dead_code, unreachable_patterns)]
7613            fn _type_assertion(
7614                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7615            ) {
7616                match _t {
7617                    alloy_sol_types::private::AssertTypeEq::<
7618                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7619                    >(_) => {}
7620                }
7621            }
7622            #[automatically_derived]
7623            #[doc(hidden)]
7624            impl ::core::convert::From<completeQueuedWithdrawalReturn>
7625            for UnderlyingRustTuple<'_> {
7626                fn from(value: completeQueuedWithdrawalReturn) -> Self {
7627                    ()
7628                }
7629            }
7630            #[automatically_derived]
7631            #[doc(hidden)]
7632            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7633            for completeQueuedWithdrawalReturn {
7634                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7635                    Self {}
7636                }
7637            }
7638        }
7639        #[automatically_derived]
7640        impl alloy_sol_types::SolCall for completeQueuedWithdrawalCall {
7641            type Parameters<'a> = (
7642                IDelegationManagerTypes::Withdrawal,
7643                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7644                alloy::sol_types::sol_data::Bool,
7645            );
7646            type Token<'a> = <Self::Parameters<
7647                'a,
7648            > as alloy_sol_types::SolType>::Token<'a>;
7649            type Return = completeQueuedWithdrawalReturn;
7650            type ReturnTuple<'a> = ();
7651            type ReturnToken<'a> = <Self::ReturnTuple<
7652                'a,
7653            > as alloy_sol_types::SolType>::Token<'a>;
7654            const SIGNATURE: &'static str = "completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],bool)";
7655            const SELECTOR: [u8; 4] = [228u8, 204u8, 63u8, 144u8];
7656            #[inline]
7657            fn new<'a>(
7658                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7659            ) -> Self {
7660                tuple.into()
7661            }
7662            #[inline]
7663            fn tokenize(&self) -> Self::Token<'_> {
7664                (
7665                    <IDelegationManagerTypes::Withdrawal as alloy_sol_types::SolType>::tokenize(
7666                        &self.withdrawal,
7667                    ),
7668                    <alloy::sol_types::sol_data::Array<
7669                        alloy::sol_types::sol_data::Address,
7670                    > as alloy_sol_types::SolType>::tokenize(&self.tokens),
7671                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
7672                        &self.receiveAsTokens,
7673                    ),
7674                )
7675            }
7676            #[inline]
7677            fn abi_decode_returns(
7678                data: &[u8],
7679                validate: bool,
7680            ) -> alloy_sol_types::Result<Self::Return> {
7681                <Self::ReturnTuple<
7682                    '_,
7683                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7684                    .map(Into::into)
7685            }
7686        }
7687    };
7688    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7689    /**Function with signature `completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],bool[])` and selector `0x9435bb43`.
7690```solidity
7691function completeQueuedWithdrawals(IDelegationManagerTypes.Withdrawal[] memory withdrawals, address[][] memory tokens, bool[] memory receiveAsTokens) external;
7692```*/
7693    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7694    #[derive(Clone)]
7695    pub struct completeQueuedWithdrawalsCall {
7696        #[allow(missing_docs)]
7697        pub withdrawals: alloy::sol_types::private::Vec<
7698            <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7699        >,
7700        #[allow(missing_docs)]
7701        pub tokens: alloy::sol_types::private::Vec<
7702            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7703        >,
7704        #[allow(missing_docs)]
7705        pub receiveAsTokens: alloy::sol_types::private::Vec<bool>,
7706    }
7707    ///Container type for the return parameters of the [`completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],bool[])`](completeQueuedWithdrawalsCall) function.
7708    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7709    #[derive(Clone)]
7710    pub struct completeQueuedWithdrawalsReturn {}
7711    #[allow(
7712        non_camel_case_types,
7713        non_snake_case,
7714        clippy::pub_underscore_fields,
7715        clippy::style
7716    )]
7717    const _: () = {
7718        use alloy::sol_types as alloy_sol_types;
7719        {
7720            #[doc(hidden)]
7721            type UnderlyingSolTuple<'a> = (
7722                alloy::sol_types::sol_data::Array<IDelegationManagerTypes::Withdrawal>,
7723                alloy::sol_types::sol_data::Array<
7724                    alloy::sol_types::sol_data::Array<
7725                        alloy::sol_types::sol_data::Address,
7726                    >,
7727                >,
7728                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
7729            );
7730            #[doc(hidden)]
7731            type UnderlyingRustTuple<'a> = (
7732                alloy::sol_types::private::Vec<
7733                    <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
7734                >,
7735                alloy::sol_types::private::Vec<
7736                    alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7737                >,
7738                alloy::sol_types::private::Vec<bool>,
7739            );
7740            #[cfg(test)]
7741            #[allow(dead_code, unreachable_patterns)]
7742            fn _type_assertion(
7743                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7744            ) {
7745                match _t {
7746                    alloy_sol_types::private::AssertTypeEq::<
7747                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7748                    >(_) => {}
7749                }
7750            }
7751            #[automatically_derived]
7752            #[doc(hidden)]
7753            impl ::core::convert::From<completeQueuedWithdrawalsCall>
7754            for UnderlyingRustTuple<'_> {
7755                fn from(value: completeQueuedWithdrawalsCall) -> Self {
7756                    (value.withdrawals, value.tokens, value.receiveAsTokens)
7757                }
7758            }
7759            #[automatically_derived]
7760            #[doc(hidden)]
7761            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7762            for completeQueuedWithdrawalsCall {
7763                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7764                    Self {
7765                        withdrawals: tuple.0,
7766                        tokens: tuple.1,
7767                        receiveAsTokens: tuple.2,
7768                    }
7769                }
7770            }
7771        }
7772        {
7773            #[doc(hidden)]
7774            type UnderlyingSolTuple<'a> = ();
7775            #[doc(hidden)]
7776            type UnderlyingRustTuple<'a> = ();
7777            #[cfg(test)]
7778            #[allow(dead_code, unreachable_patterns)]
7779            fn _type_assertion(
7780                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7781            ) {
7782                match _t {
7783                    alloy_sol_types::private::AssertTypeEq::<
7784                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7785                    >(_) => {}
7786                }
7787            }
7788            #[automatically_derived]
7789            #[doc(hidden)]
7790            impl ::core::convert::From<completeQueuedWithdrawalsReturn>
7791            for UnderlyingRustTuple<'_> {
7792                fn from(value: completeQueuedWithdrawalsReturn) -> Self {
7793                    ()
7794                }
7795            }
7796            #[automatically_derived]
7797            #[doc(hidden)]
7798            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7799            for completeQueuedWithdrawalsReturn {
7800                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7801                    Self {}
7802                }
7803            }
7804        }
7805        #[automatically_derived]
7806        impl alloy_sol_types::SolCall for completeQueuedWithdrawalsCall {
7807            type Parameters<'a> = (
7808                alloy::sol_types::sol_data::Array<IDelegationManagerTypes::Withdrawal>,
7809                alloy::sol_types::sol_data::Array<
7810                    alloy::sol_types::sol_data::Array<
7811                        alloy::sol_types::sol_data::Address,
7812                    >,
7813                >,
7814                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
7815            );
7816            type Token<'a> = <Self::Parameters<
7817                'a,
7818            > as alloy_sol_types::SolType>::Token<'a>;
7819            type Return = completeQueuedWithdrawalsReturn;
7820            type ReturnTuple<'a> = ();
7821            type ReturnToken<'a> = <Self::ReturnTuple<
7822                'a,
7823            > as alloy_sol_types::SolType>::Token<'a>;
7824            const SIGNATURE: &'static str = "completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],bool[])";
7825            const SELECTOR: [u8; 4] = [148u8, 53u8, 187u8, 67u8];
7826            #[inline]
7827            fn new<'a>(
7828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7829            ) -> Self {
7830                tuple.into()
7831            }
7832            #[inline]
7833            fn tokenize(&self) -> Self::Token<'_> {
7834                (
7835                    <alloy::sol_types::sol_data::Array<
7836                        IDelegationManagerTypes::Withdrawal,
7837                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawals),
7838                    <alloy::sol_types::sol_data::Array<
7839                        alloy::sol_types::sol_data::Array<
7840                            alloy::sol_types::sol_data::Address,
7841                        >,
7842                    > as alloy_sol_types::SolType>::tokenize(&self.tokens),
7843                    <alloy::sol_types::sol_data::Array<
7844                        alloy::sol_types::sol_data::Bool,
7845                    > as alloy_sol_types::SolType>::tokenize(&self.receiveAsTokens),
7846                )
7847            }
7848            #[inline]
7849            fn abi_decode_returns(
7850                data: &[u8],
7851                validate: bool,
7852            ) -> alloy_sol_types::Result<Self::Return> {
7853                <Self::ReturnTuple<
7854                    '_,
7855                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7856                    .map(Into::into)
7857            }
7858        }
7859    };
7860    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7861    /**Function with signature `convertToDepositShares(address,address[],uint256[])` and selector `0x25df922e`.
7862```solidity
7863function convertToDepositShares(address staker, address[] memory strategies, uint256[] memory withdrawableShares) external view returns (uint256[] memory);
7864```*/
7865    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7866    #[derive(Clone)]
7867    pub struct convertToDepositSharesCall {
7868        #[allow(missing_docs)]
7869        pub staker: alloy::sol_types::private::Address,
7870        #[allow(missing_docs)]
7871        pub strategies: alloy::sol_types::private::Vec<
7872            alloy::sol_types::private::Address,
7873        >,
7874        #[allow(missing_docs)]
7875        pub withdrawableShares: alloy::sol_types::private::Vec<
7876            alloy::sol_types::private::primitives::aliases::U256,
7877        >,
7878    }
7879    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7880    ///Container type for the return parameters of the [`convertToDepositShares(address,address[],uint256[])`](convertToDepositSharesCall) function.
7881    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7882    #[derive(Clone)]
7883    pub struct convertToDepositSharesReturn {
7884        #[allow(missing_docs)]
7885        pub _0: alloy::sol_types::private::Vec<
7886            alloy::sol_types::private::primitives::aliases::U256,
7887        >,
7888    }
7889    #[allow(
7890        non_camel_case_types,
7891        non_snake_case,
7892        clippy::pub_underscore_fields,
7893        clippy::style
7894    )]
7895    const _: () = {
7896        use alloy::sol_types as alloy_sol_types;
7897        {
7898            #[doc(hidden)]
7899            type UnderlyingSolTuple<'a> = (
7900                alloy::sol_types::sol_data::Address,
7901                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7902                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7903            );
7904            #[doc(hidden)]
7905            type UnderlyingRustTuple<'a> = (
7906                alloy::sol_types::private::Address,
7907                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7908                alloy::sol_types::private::Vec<
7909                    alloy::sol_types::private::primitives::aliases::U256,
7910                >,
7911            );
7912            #[cfg(test)]
7913            #[allow(dead_code, unreachable_patterns)]
7914            fn _type_assertion(
7915                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7916            ) {
7917                match _t {
7918                    alloy_sol_types::private::AssertTypeEq::<
7919                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7920                    >(_) => {}
7921                }
7922            }
7923            #[automatically_derived]
7924            #[doc(hidden)]
7925            impl ::core::convert::From<convertToDepositSharesCall>
7926            for UnderlyingRustTuple<'_> {
7927                fn from(value: convertToDepositSharesCall) -> Self {
7928                    (value.staker, value.strategies, value.withdrawableShares)
7929                }
7930            }
7931            #[automatically_derived]
7932            #[doc(hidden)]
7933            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7934            for convertToDepositSharesCall {
7935                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7936                    Self {
7937                        staker: tuple.0,
7938                        strategies: tuple.1,
7939                        withdrawableShares: tuple.2,
7940                    }
7941                }
7942            }
7943        }
7944        {
7945            #[doc(hidden)]
7946            type UnderlyingSolTuple<'a> = (
7947                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7948            );
7949            #[doc(hidden)]
7950            type UnderlyingRustTuple<'a> = (
7951                alloy::sol_types::private::Vec<
7952                    alloy::sol_types::private::primitives::aliases::U256,
7953                >,
7954            );
7955            #[cfg(test)]
7956            #[allow(dead_code, unreachable_patterns)]
7957            fn _type_assertion(
7958                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7959            ) {
7960                match _t {
7961                    alloy_sol_types::private::AssertTypeEq::<
7962                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7963                    >(_) => {}
7964                }
7965            }
7966            #[automatically_derived]
7967            #[doc(hidden)]
7968            impl ::core::convert::From<convertToDepositSharesReturn>
7969            for UnderlyingRustTuple<'_> {
7970                fn from(value: convertToDepositSharesReturn) -> Self {
7971                    (value._0,)
7972                }
7973            }
7974            #[automatically_derived]
7975            #[doc(hidden)]
7976            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7977            for convertToDepositSharesReturn {
7978                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7979                    Self { _0: tuple.0 }
7980                }
7981            }
7982        }
7983        #[automatically_derived]
7984        impl alloy_sol_types::SolCall for convertToDepositSharesCall {
7985            type Parameters<'a> = (
7986                alloy::sol_types::sol_data::Address,
7987                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7988                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7989            );
7990            type Token<'a> = <Self::Parameters<
7991                'a,
7992            > as alloy_sol_types::SolType>::Token<'a>;
7993            type Return = convertToDepositSharesReturn;
7994            type ReturnTuple<'a> = (
7995                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7996            );
7997            type ReturnToken<'a> = <Self::ReturnTuple<
7998                'a,
7999            > as alloy_sol_types::SolType>::Token<'a>;
8000            const SIGNATURE: &'static str = "convertToDepositShares(address,address[],uint256[])";
8001            const SELECTOR: [u8; 4] = [37u8, 223u8, 146u8, 46u8];
8002            #[inline]
8003            fn new<'a>(
8004                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8005            ) -> Self {
8006                tuple.into()
8007            }
8008            #[inline]
8009            fn tokenize(&self) -> Self::Token<'_> {
8010                (
8011                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8012                        &self.staker,
8013                    ),
8014                    <alloy::sol_types::sol_data::Array<
8015                        alloy::sol_types::sol_data::Address,
8016                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
8017                    <alloy::sol_types::sol_data::Array<
8018                        alloy::sol_types::sol_data::Uint<256>,
8019                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawableShares),
8020                )
8021            }
8022            #[inline]
8023            fn abi_decode_returns(
8024                data: &[u8],
8025                validate: bool,
8026            ) -> alloy_sol_types::Result<Self::Return> {
8027                <Self::ReturnTuple<
8028                    '_,
8029                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8030                    .map(Into::into)
8031            }
8032        }
8033    };
8034    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8035    /**Function with signature `cumulativeWithdrawalsQueued(address)` and selector `0xa1788484`.
8036```solidity
8037function cumulativeWithdrawalsQueued(address staker) external view returns (uint256 totalQueued);
8038```*/
8039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8040    #[derive(Clone)]
8041    pub struct cumulativeWithdrawalsQueuedCall {
8042        #[allow(missing_docs)]
8043        pub staker: alloy::sol_types::private::Address,
8044    }
8045    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8046    ///Container type for the return parameters of the [`cumulativeWithdrawalsQueued(address)`](cumulativeWithdrawalsQueuedCall) function.
8047    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8048    #[derive(Clone)]
8049    pub struct cumulativeWithdrawalsQueuedReturn {
8050        #[allow(missing_docs)]
8051        pub totalQueued: alloy::sol_types::private::primitives::aliases::U256,
8052    }
8053    #[allow(
8054        non_camel_case_types,
8055        non_snake_case,
8056        clippy::pub_underscore_fields,
8057        clippy::style
8058    )]
8059    const _: () = {
8060        use alloy::sol_types as alloy_sol_types;
8061        {
8062            #[doc(hidden)]
8063            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8064            #[doc(hidden)]
8065            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8066            #[cfg(test)]
8067            #[allow(dead_code, unreachable_patterns)]
8068            fn _type_assertion(
8069                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8070            ) {
8071                match _t {
8072                    alloy_sol_types::private::AssertTypeEq::<
8073                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8074                    >(_) => {}
8075                }
8076            }
8077            #[automatically_derived]
8078            #[doc(hidden)]
8079            impl ::core::convert::From<cumulativeWithdrawalsQueuedCall>
8080            for UnderlyingRustTuple<'_> {
8081                fn from(value: cumulativeWithdrawalsQueuedCall) -> Self {
8082                    (value.staker,)
8083                }
8084            }
8085            #[automatically_derived]
8086            #[doc(hidden)]
8087            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8088            for cumulativeWithdrawalsQueuedCall {
8089                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8090                    Self { staker: tuple.0 }
8091                }
8092            }
8093        }
8094        {
8095            #[doc(hidden)]
8096            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8097            #[doc(hidden)]
8098            type UnderlyingRustTuple<'a> = (
8099                alloy::sol_types::private::primitives::aliases::U256,
8100            );
8101            #[cfg(test)]
8102            #[allow(dead_code, unreachable_patterns)]
8103            fn _type_assertion(
8104                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8105            ) {
8106                match _t {
8107                    alloy_sol_types::private::AssertTypeEq::<
8108                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8109                    >(_) => {}
8110                }
8111            }
8112            #[automatically_derived]
8113            #[doc(hidden)]
8114            impl ::core::convert::From<cumulativeWithdrawalsQueuedReturn>
8115            for UnderlyingRustTuple<'_> {
8116                fn from(value: cumulativeWithdrawalsQueuedReturn) -> Self {
8117                    (value.totalQueued,)
8118                }
8119            }
8120            #[automatically_derived]
8121            #[doc(hidden)]
8122            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8123            for cumulativeWithdrawalsQueuedReturn {
8124                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8125                    Self { totalQueued: tuple.0 }
8126                }
8127            }
8128        }
8129        #[automatically_derived]
8130        impl alloy_sol_types::SolCall for cumulativeWithdrawalsQueuedCall {
8131            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8132            type Token<'a> = <Self::Parameters<
8133                'a,
8134            > as alloy_sol_types::SolType>::Token<'a>;
8135            type Return = cumulativeWithdrawalsQueuedReturn;
8136            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8137            type ReturnToken<'a> = <Self::ReturnTuple<
8138                'a,
8139            > as alloy_sol_types::SolType>::Token<'a>;
8140            const SIGNATURE: &'static str = "cumulativeWithdrawalsQueued(address)";
8141            const SELECTOR: [u8; 4] = [161u8, 120u8, 132u8, 132u8];
8142            #[inline]
8143            fn new<'a>(
8144                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8145            ) -> Self {
8146                tuple.into()
8147            }
8148            #[inline]
8149            fn tokenize(&self) -> Self::Token<'_> {
8150                (
8151                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8152                        &self.staker,
8153                    ),
8154                )
8155            }
8156            #[inline]
8157            fn abi_decode_returns(
8158                data: &[u8],
8159                validate: bool,
8160            ) -> alloy_sol_types::Result<Self::Return> {
8161                <Self::ReturnTuple<
8162                    '_,
8163                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8164                    .map(Into::into)
8165            }
8166        }
8167    };
8168    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8169    /**Function with signature `decreaseDelegatedShares(address,uint256,uint64)` and selector `0x60a0d1ce`.
8170```solidity
8171function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) external;
8172```*/
8173    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8174    #[derive(Clone)]
8175    pub struct decreaseDelegatedSharesCall {
8176        #[allow(missing_docs)]
8177        pub staker: alloy::sol_types::private::Address,
8178        #[allow(missing_docs)]
8179        pub curDepositShares: alloy::sol_types::private::primitives::aliases::U256,
8180        #[allow(missing_docs)]
8181        pub beaconChainSlashingFactorDecrease: u64,
8182    }
8183    ///Container type for the return parameters of the [`decreaseDelegatedShares(address,uint256,uint64)`](decreaseDelegatedSharesCall) function.
8184    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8185    #[derive(Clone)]
8186    pub struct decreaseDelegatedSharesReturn {}
8187    #[allow(
8188        non_camel_case_types,
8189        non_snake_case,
8190        clippy::pub_underscore_fields,
8191        clippy::style
8192    )]
8193    const _: () = {
8194        use alloy::sol_types as alloy_sol_types;
8195        {
8196            #[doc(hidden)]
8197            type UnderlyingSolTuple<'a> = (
8198                alloy::sol_types::sol_data::Address,
8199                alloy::sol_types::sol_data::Uint<256>,
8200                alloy::sol_types::sol_data::Uint<64>,
8201            );
8202            #[doc(hidden)]
8203            type UnderlyingRustTuple<'a> = (
8204                alloy::sol_types::private::Address,
8205                alloy::sol_types::private::primitives::aliases::U256,
8206                u64,
8207            );
8208            #[cfg(test)]
8209            #[allow(dead_code, unreachable_patterns)]
8210            fn _type_assertion(
8211                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8212            ) {
8213                match _t {
8214                    alloy_sol_types::private::AssertTypeEq::<
8215                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8216                    >(_) => {}
8217                }
8218            }
8219            #[automatically_derived]
8220            #[doc(hidden)]
8221            impl ::core::convert::From<decreaseDelegatedSharesCall>
8222            for UnderlyingRustTuple<'_> {
8223                fn from(value: decreaseDelegatedSharesCall) -> Self {
8224                    (
8225                        value.staker,
8226                        value.curDepositShares,
8227                        value.beaconChainSlashingFactorDecrease,
8228                    )
8229                }
8230            }
8231            #[automatically_derived]
8232            #[doc(hidden)]
8233            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8234            for decreaseDelegatedSharesCall {
8235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8236                    Self {
8237                        staker: tuple.0,
8238                        curDepositShares: tuple.1,
8239                        beaconChainSlashingFactorDecrease: tuple.2,
8240                    }
8241                }
8242            }
8243        }
8244        {
8245            #[doc(hidden)]
8246            type UnderlyingSolTuple<'a> = ();
8247            #[doc(hidden)]
8248            type UnderlyingRustTuple<'a> = ();
8249            #[cfg(test)]
8250            #[allow(dead_code, unreachable_patterns)]
8251            fn _type_assertion(
8252                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8253            ) {
8254                match _t {
8255                    alloy_sol_types::private::AssertTypeEq::<
8256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8257                    >(_) => {}
8258                }
8259            }
8260            #[automatically_derived]
8261            #[doc(hidden)]
8262            impl ::core::convert::From<decreaseDelegatedSharesReturn>
8263            for UnderlyingRustTuple<'_> {
8264                fn from(value: decreaseDelegatedSharesReturn) -> Self {
8265                    ()
8266                }
8267            }
8268            #[automatically_derived]
8269            #[doc(hidden)]
8270            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8271            for decreaseDelegatedSharesReturn {
8272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8273                    Self {}
8274                }
8275            }
8276        }
8277        #[automatically_derived]
8278        impl alloy_sol_types::SolCall for decreaseDelegatedSharesCall {
8279            type Parameters<'a> = (
8280                alloy::sol_types::sol_data::Address,
8281                alloy::sol_types::sol_data::Uint<256>,
8282                alloy::sol_types::sol_data::Uint<64>,
8283            );
8284            type Token<'a> = <Self::Parameters<
8285                'a,
8286            > as alloy_sol_types::SolType>::Token<'a>;
8287            type Return = decreaseDelegatedSharesReturn;
8288            type ReturnTuple<'a> = ();
8289            type ReturnToken<'a> = <Self::ReturnTuple<
8290                'a,
8291            > as alloy_sol_types::SolType>::Token<'a>;
8292            const SIGNATURE: &'static str = "decreaseDelegatedShares(address,uint256,uint64)";
8293            const SELECTOR: [u8; 4] = [96u8, 160u8, 209u8, 206u8];
8294            #[inline]
8295            fn new<'a>(
8296                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8297            ) -> Self {
8298                tuple.into()
8299            }
8300            #[inline]
8301            fn tokenize(&self) -> Self::Token<'_> {
8302                (
8303                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8304                        &self.staker,
8305                    ),
8306                    <alloy::sol_types::sol_data::Uint<
8307                        256,
8308                    > as alloy_sol_types::SolType>::tokenize(&self.curDepositShares),
8309                    <alloy::sol_types::sol_data::Uint<
8310                        64,
8311                    > as alloy_sol_types::SolType>::tokenize(
8312                        &self.beaconChainSlashingFactorDecrease,
8313                    ),
8314                )
8315            }
8316            #[inline]
8317            fn abi_decode_returns(
8318                data: &[u8],
8319                validate: bool,
8320            ) -> alloy_sol_types::Result<Self::Return> {
8321                <Self::ReturnTuple<
8322                    '_,
8323                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8324                    .map(Into::into)
8325            }
8326        }
8327    };
8328    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8329    /**Function with signature `delegateTo(address,(bytes,uint256),bytes32)` and selector `0xeea9064b`.
8330```solidity
8331function delegateTo(address operator, ISignatureUtilsMixinTypes.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external;
8332```*/
8333    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8334    #[derive(Clone)]
8335    pub struct delegateToCall {
8336        #[allow(missing_docs)]
8337        pub operator: alloy::sol_types::private::Address,
8338        #[allow(missing_docs)]
8339        pub approverSignatureAndExpiry: <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
8340        #[allow(missing_docs)]
8341        pub approverSalt: alloy::sol_types::private::FixedBytes<32>,
8342    }
8343    ///Container type for the return parameters of the [`delegateTo(address,(bytes,uint256),bytes32)`](delegateToCall) function.
8344    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8345    #[derive(Clone)]
8346    pub struct delegateToReturn {}
8347    #[allow(
8348        non_camel_case_types,
8349        non_snake_case,
8350        clippy::pub_underscore_fields,
8351        clippy::style
8352    )]
8353    const _: () = {
8354        use alloy::sol_types as alloy_sol_types;
8355        {
8356            #[doc(hidden)]
8357            type UnderlyingSolTuple<'a> = (
8358                alloy::sol_types::sol_data::Address,
8359                ISignatureUtilsMixinTypes::SignatureWithExpiry,
8360                alloy::sol_types::sol_data::FixedBytes<32>,
8361            );
8362            #[doc(hidden)]
8363            type UnderlyingRustTuple<'a> = (
8364                alloy::sol_types::private::Address,
8365                <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
8366                alloy::sol_types::private::FixedBytes<32>,
8367            );
8368            #[cfg(test)]
8369            #[allow(dead_code, unreachable_patterns)]
8370            fn _type_assertion(
8371                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8372            ) {
8373                match _t {
8374                    alloy_sol_types::private::AssertTypeEq::<
8375                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8376                    >(_) => {}
8377                }
8378            }
8379            #[automatically_derived]
8380            #[doc(hidden)]
8381            impl ::core::convert::From<delegateToCall> for UnderlyingRustTuple<'_> {
8382                fn from(value: delegateToCall) -> Self {
8383                    (
8384                        value.operator,
8385                        value.approverSignatureAndExpiry,
8386                        value.approverSalt,
8387                    )
8388                }
8389            }
8390            #[automatically_derived]
8391            #[doc(hidden)]
8392            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateToCall {
8393                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8394                    Self {
8395                        operator: tuple.0,
8396                        approverSignatureAndExpiry: tuple.1,
8397                        approverSalt: tuple.2,
8398                    }
8399                }
8400            }
8401        }
8402        {
8403            #[doc(hidden)]
8404            type UnderlyingSolTuple<'a> = ();
8405            #[doc(hidden)]
8406            type UnderlyingRustTuple<'a> = ();
8407            #[cfg(test)]
8408            #[allow(dead_code, unreachable_patterns)]
8409            fn _type_assertion(
8410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8411            ) {
8412                match _t {
8413                    alloy_sol_types::private::AssertTypeEq::<
8414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8415                    >(_) => {}
8416                }
8417            }
8418            #[automatically_derived]
8419            #[doc(hidden)]
8420            impl ::core::convert::From<delegateToReturn> for UnderlyingRustTuple<'_> {
8421                fn from(value: delegateToReturn) -> Self {
8422                    ()
8423                }
8424            }
8425            #[automatically_derived]
8426            #[doc(hidden)]
8427            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateToReturn {
8428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8429                    Self {}
8430                }
8431            }
8432        }
8433        #[automatically_derived]
8434        impl alloy_sol_types::SolCall for delegateToCall {
8435            type Parameters<'a> = (
8436                alloy::sol_types::sol_data::Address,
8437                ISignatureUtilsMixinTypes::SignatureWithExpiry,
8438                alloy::sol_types::sol_data::FixedBytes<32>,
8439            );
8440            type Token<'a> = <Self::Parameters<
8441                'a,
8442            > as alloy_sol_types::SolType>::Token<'a>;
8443            type Return = delegateToReturn;
8444            type ReturnTuple<'a> = ();
8445            type ReturnToken<'a> = <Self::ReturnTuple<
8446                'a,
8447            > as alloy_sol_types::SolType>::Token<'a>;
8448            const SIGNATURE: &'static str = "delegateTo(address,(bytes,uint256),bytes32)";
8449            const SELECTOR: [u8; 4] = [238u8, 169u8, 6u8, 75u8];
8450            #[inline]
8451            fn new<'a>(
8452                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8453            ) -> Self {
8454                tuple.into()
8455            }
8456            #[inline]
8457            fn tokenize(&self) -> Self::Token<'_> {
8458                (
8459                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8460                        &self.operator,
8461                    ),
8462                    <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy_sol_types::SolType>::tokenize(
8463                        &self.approverSignatureAndExpiry,
8464                    ),
8465                    <alloy::sol_types::sol_data::FixedBytes<
8466                        32,
8467                    > as alloy_sol_types::SolType>::tokenize(&self.approverSalt),
8468                )
8469            }
8470            #[inline]
8471            fn abi_decode_returns(
8472                data: &[u8],
8473                validate: bool,
8474            ) -> alloy_sol_types::Result<Self::Return> {
8475                <Self::ReturnTuple<
8476                    '_,
8477                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8478                    .map(Into::into)
8479            }
8480        }
8481    };
8482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8483    /**Function with signature `delegatedTo(address)` and selector `0x65da1264`.
8484```solidity
8485function delegatedTo(address staker) external view returns (address operator);
8486```*/
8487    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8488    #[derive(Clone)]
8489    pub struct delegatedToCall {
8490        #[allow(missing_docs)]
8491        pub staker: alloy::sol_types::private::Address,
8492    }
8493    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8494    ///Container type for the return parameters of the [`delegatedTo(address)`](delegatedToCall) function.
8495    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8496    #[derive(Clone)]
8497    pub struct delegatedToReturn {
8498        #[allow(missing_docs)]
8499        pub operator: alloy::sol_types::private::Address,
8500    }
8501    #[allow(
8502        non_camel_case_types,
8503        non_snake_case,
8504        clippy::pub_underscore_fields,
8505        clippy::style
8506    )]
8507    const _: () = {
8508        use alloy::sol_types as alloy_sol_types;
8509        {
8510            #[doc(hidden)]
8511            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8512            #[doc(hidden)]
8513            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8514            #[cfg(test)]
8515            #[allow(dead_code, unreachable_patterns)]
8516            fn _type_assertion(
8517                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8518            ) {
8519                match _t {
8520                    alloy_sol_types::private::AssertTypeEq::<
8521                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8522                    >(_) => {}
8523                }
8524            }
8525            #[automatically_derived]
8526            #[doc(hidden)]
8527            impl ::core::convert::From<delegatedToCall> for UnderlyingRustTuple<'_> {
8528                fn from(value: delegatedToCall) -> Self {
8529                    (value.staker,)
8530                }
8531            }
8532            #[automatically_derived]
8533            #[doc(hidden)]
8534            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegatedToCall {
8535                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8536                    Self { staker: tuple.0 }
8537                }
8538            }
8539        }
8540        {
8541            #[doc(hidden)]
8542            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8543            #[doc(hidden)]
8544            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8545            #[cfg(test)]
8546            #[allow(dead_code, unreachable_patterns)]
8547            fn _type_assertion(
8548                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8549            ) {
8550                match _t {
8551                    alloy_sol_types::private::AssertTypeEq::<
8552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8553                    >(_) => {}
8554                }
8555            }
8556            #[automatically_derived]
8557            #[doc(hidden)]
8558            impl ::core::convert::From<delegatedToReturn> for UnderlyingRustTuple<'_> {
8559                fn from(value: delegatedToReturn) -> Self {
8560                    (value.operator,)
8561                }
8562            }
8563            #[automatically_derived]
8564            #[doc(hidden)]
8565            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegatedToReturn {
8566                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8567                    Self { operator: tuple.0 }
8568                }
8569            }
8570        }
8571        #[automatically_derived]
8572        impl alloy_sol_types::SolCall for delegatedToCall {
8573            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8574            type Token<'a> = <Self::Parameters<
8575                'a,
8576            > as alloy_sol_types::SolType>::Token<'a>;
8577            type Return = delegatedToReturn;
8578            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8579            type ReturnToken<'a> = <Self::ReturnTuple<
8580                'a,
8581            > as alloy_sol_types::SolType>::Token<'a>;
8582            const SIGNATURE: &'static str = "delegatedTo(address)";
8583            const SELECTOR: [u8; 4] = [101u8, 218u8, 18u8, 100u8];
8584            #[inline]
8585            fn new<'a>(
8586                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8587            ) -> Self {
8588                tuple.into()
8589            }
8590            #[inline]
8591            fn tokenize(&self) -> Self::Token<'_> {
8592                (
8593                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8594                        &self.staker,
8595                    ),
8596                )
8597            }
8598            #[inline]
8599            fn abi_decode_returns(
8600                data: &[u8],
8601                validate: bool,
8602            ) -> alloy_sol_types::Result<Self::Return> {
8603                <Self::ReturnTuple<
8604                    '_,
8605                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8606                    .map(Into::into)
8607            }
8608        }
8609    };
8610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8611    /**Function with signature `delegationApprover(address)` and selector `0x3cdeb5e0`.
8612```solidity
8613function delegationApprover(address operator) external view returns (address);
8614```*/
8615    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8616    #[derive(Clone)]
8617    pub struct delegationApproverCall {
8618        #[allow(missing_docs)]
8619        pub operator: alloy::sol_types::private::Address,
8620    }
8621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8622    ///Container type for the return parameters of the [`delegationApprover(address)`](delegationApproverCall) function.
8623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8624    #[derive(Clone)]
8625    pub struct delegationApproverReturn {
8626        #[allow(missing_docs)]
8627        pub _0: alloy::sol_types::private::Address,
8628    }
8629    #[allow(
8630        non_camel_case_types,
8631        non_snake_case,
8632        clippy::pub_underscore_fields,
8633        clippy::style
8634    )]
8635    const _: () = {
8636        use alloy::sol_types as alloy_sol_types;
8637        {
8638            #[doc(hidden)]
8639            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8640            #[doc(hidden)]
8641            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8642            #[cfg(test)]
8643            #[allow(dead_code, unreachable_patterns)]
8644            fn _type_assertion(
8645                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8646            ) {
8647                match _t {
8648                    alloy_sol_types::private::AssertTypeEq::<
8649                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8650                    >(_) => {}
8651                }
8652            }
8653            #[automatically_derived]
8654            #[doc(hidden)]
8655            impl ::core::convert::From<delegationApproverCall>
8656            for UnderlyingRustTuple<'_> {
8657                fn from(value: delegationApproverCall) -> Self {
8658                    (value.operator,)
8659                }
8660            }
8661            #[automatically_derived]
8662            #[doc(hidden)]
8663            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8664            for delegationApproverCall {
8665                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8666                    Self { operator: tuple.0 }
8667                }
8668            }
8669        }
8670        {
8671            #[doc(hidden)]
8672            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8673            #[doc(hidden)]
8674            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8675            #[cfg(test)]
8676            #[allow(dead_code, unreachable_patterns)]
8677            fn _type_assertion(
8678                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8679            ) {
8680                match _t {
8681                    alloy_sol_types::private::AssertTypeEq::<
8682                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8683                    >(_) => {}
8684                }
8685            }
8686            #[automatically_derived]
8687            #[doc(hidden)]
8688            impl ::core::convert::From<delegationApproverReturn>
8689            for UnderlyingRustTuple<'_> {
8690                fn from(value: delegationApproverReturn) -> Self {
8691                    (value._0,)
8692                }
8693            }
8694            #[automatically_derived]
8695            #[doc(hidden)]
8696            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8697            for delegationApproverReturn {
8698                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8699                    Self { _0: tuple.0 }
8700                }
8701            }
8702        }
8703        #[automatically_derived]
8704        impl alloy_sol_types::SolCall for delegationApproverCall {
8705            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8706            type Token<'a> = <Self::Parameters<
8707                'a,
8708            > as alloy_sol_types::SolType>::Token<'a>;
8709            type Return = delegationApproverReturn;
8710            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8711            type ReturnToken<'a> = <Self::ReturnTuple<
8712                'a,
8713            > as alloy_sol_types::SolType>::Token<'a>;
8714            const SIGNATURE: &'static str = "delegationApprover(address)";
8715            const SELECTOR: [u8; 4] = [60u8, 222u8, 181u8, 224u8];
8716            #[inline]
8717            fn new<'a>(
8718                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8719            ) -> Self {
8720                tuple.into()
8721            }
8722            #[inline]
8723            fn tokenize(&self) -> Self::Token<'_> {
8724                (
8725                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8726                        &self.operator,
8727                    ),
8728                )
8729            }
8730            #[inline]
8731            fn abi_decode_returns(
8732                data: &[u8],
8733                validate: bool,
8734            ) -> alloy_sol_types::Result<Self::Return> {
8735                <Self::ReturnTuple<
8736                    '_,
8737                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8738                    .map(Into::into)
8739            }
8740        }
8741    };
8742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8743    /**Function with signature `delegationApproverSaltIsSpent(address,bytes32)` and selector `0xbb45fef2`.
8744```solidity
8745function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) external view returns (bool spent);
8746```*/
8747    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8748    #[derive(Clone)]
8749    pub struct delegationApproverSaltIsSpentCall {
8750        #[allow(missing_docs)]
8751        pub delegationApprover: alloy::sol_types::private::Address,
8752        #[allow(missing_docs)]
8753        pub salt: alloy::sol_types::private::FixedBytes<32>,
8754    }
8755    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8756    ///Container type for the return parameters of the [`delegationApproverSaltIsSpent(address,bytes32)`](delegationApproverSaltIsSpentCall) function.
8757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8758    #[derive(Clone)]
8759    pub struct delegationApproverSaltIsSpentReturn {
8760        #[allow(missing_docs)]
8761        pub spent: bool,
8762    }
8763    #[allow(
8764        non_camel_case_types,
8765        non_snake_case,
8766        clippy::pub_underscore_fields,
8767        clippy::style
8768    )]
8769    const _: () = {
8770        use alloy::sol_types as alloy_sol_types;
8771        {
8772            #[doc(hidden)]
8773            type UnderlyingSolTuple<'a> = (
8774                alloy::sol_types::sol_data::Address,
8775                alloy::sol_types::sol_data::FixedBytes<32>,
8776            );
8777            #[doc(hidden)]
8778            type UnderlyingRustTuple<'a> = (
8779                alloy::sol_types::private::Address,
8780                alloy::sol_types::private::FixedBytes<32>,
8781            );
8782            #[cfg(test)]
8783            #[allow(dead_code, unreachable_patterns)]
8784            fn _type_assertion(
8785                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8786            ) {
8787                match _t {
8788                    alloy_sol_types::private::AssertTypeEq::<
8789                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8790                    >(_) => {}
8791                }
8792            }
8793            #[automatically_derived]
8794            #[doc(hidden)]
8795            impl ::core::convert::From<delegationApproverSaltIsSpentCall>
8796            for UnderlyingRustTuple<'_> {
8797                fn from(value: delegationApproverSaltIsSpentCall) -> Self {
8798                    (value.delegationApprover, value.salt)
8799                }
8800            }
8801            #[automatically_derived]
8802            #[doc(hidden)]
8803            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8804            for delegationApproverSaltIsSpentCall {
8805                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8806                    Self {
8807                        delegationApprover: tuple.0,
8808                        salt: tuple.1,
8809                    }
8810                }
8811            }
8812        }
8813        {
8814            #[doc(hidden)]
8815            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8816            #[doc(hidden)]
8817            type UnderlyingRustTuple<'a> = (bool,);
8818            #[cfg(test)]
8819            #[allow(dead_code, unreachable_patterns)]
8820            fn _type_assertion(
8821                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8822            ) {
8823                match _t {
8824                    alloy_sol_types::private::AssertTypeEq::<
8825                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8826                    >(_) => {}
8827                }
8828            }
8829            #[automatically_derived]
8830            #[doc(hidden)]
8831            impl ::core::convert::From<delegationApproverSaltIsSpentReturn>
8832            for UnderlyingRustTuple<'_> {
8833                fn from(value: delegationApproverSaltIsSpentReturn) -> Self {
8834                    (value.spent,)
8835                }
8836            }
8837            #[automatically_derived]
8838            #[doc(hidden)]
8839            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8840            for delegationApproverSaltIsSpentReturn {
8841                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8842                    Self { spent: tuple.0 }
8843                }
8844            }
8845        }
8846        #[automatically_derived]
8847        impl alloy_sol_types::SolCall for delegationApproverSaltIsSpentCall {
8848            type Parameters<'a> = (
8849                alloy::sol_types::sol_data::Address,
8850                alloy::sol_types::sol_data::FixedBytes<32>,
8851            );
8852            type Token<'a> = <Self::Parameters<
8853                'a,
8854            > as alloy_sol_types::SolType>::Token<'a>;
8855            type Return = delegationApproverSaltIsSpentReturn;
8856            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8857            type ReturnToken<'a> = <Self::ReturnTuple<
8858                'a,
8859            > as alloy_sol_types::SolType>::Token<'a>;
8860            const SIGNATURE: &'static str = "delegationApproverSaltIsSpent(address,bytes32)";
8861            const SELECTOR: [u8; 4] = [187u8, 69u8, 254u8, 242u8];
8862            #[inline]
8863            fn new<'a>(
8864                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8865            ) -> Self {
8866                tuple.into()
8867            }
8868            #[inline]
8869            fn tokenize(&self) -> Self::Token<'_> {
8870                (
8871                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8872                        &self.delegationApprover,
8873                    ),
8874                    <alloy::sol_types::sol_data::FixedBytes<
8875                        32,
8876                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
8877                )
8878            }
8879            #[inline]
8880            fn abi_decode_returns(
8881                data: &[u8],
8882                validate: bool,
8883            ) -> alloy_sol_types::Result<Self::Return> {
8884                <Self::ReturnTuple<
8885                    '_,
8886                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8887                    .map(Into::into)
8888            }
8889        }
8890    };
8891    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8892    /**Function with signature `depositScalingFactor(address,address)` and selector `0xbfae3fd2`.
8893```solidity
8894function depositScalingFactor(address staker, address strategy) external view returns (uint256);
8895```*/
8896    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8897    #[derive(Clone)]
8898    pub struct depositScalingFactorCall {
8899        #[allow(missing_docs)]
8900        pub staker: alloy::sol_types::private::Address,
8901        #[allow(missing_docs)]
8902        pub strategy: alloy::sol_types::private::Address,
8903    }
8904    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8905    ///Container type for the return parameters of the [`depositScalingFactor(address,address)`](depositScalingFactorCall) function.
8906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8907    #[derive(Clone)]
8908    pub struct depositScalingFactorReturn {
8909        #[allow(missing_docs)]
8910        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8911    }
8912    #[allow(
8913        non_camel_case_types,
8914        non_snake_case,
8915        clippy::pub_underscore_fields,
8916        clippy::style
8917    )]
8918    const _: () = {
8919        use alloy::sol_types as alloy_sol_types;
8920        {
8921            #[doc(hidden)]
8922            type UnderlyingSolTuple<'a> = (
8923                alloy::sol_types::sol_data::Address,
8924                alloy::sol_types::sol_data::Address,
8925            );
8926            #[doc(hidden)]
8927            type UnderlyingRustTuple<'a> = (
8928                alloy::sol_types::private::Address,
8929                alloy::sol_types::private::Address,
8930            );
8931            #[cfg(test)]
8932            #[allow(dead_code, unreachable_patterns)]
8933            fn _type_assertion(
8934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8935            ) {
8936                match _t {
8937                    alloy_sol_types::private::AssertTypeEq::<
8938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8939                    >(_) => {}
8940                }
8941            }
8942            #[automatically_derived]
8943            #[doc(hidden)]
8944            impl ::core::convert::From<depositScalingFactorCall>
8945            for UnderlyingRustTuple<'_> {
8946                fn from(value: depositScalingFactorCall) -> Self {
8947                    (value.staker, value.strategy)
8948                }
8949            }
8950            #[automatically_derived]
8951            #[doc(hidden)]
8952            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8953            for depositScalingFactorCall {
8954                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8955                    Self {
8956                        staker: tuple.0,
8957                        strategy: tuple.1,
8958                    }
8959                }
8960            }
8961        }
8962        {
8963            #[doc(hidden)]
8964            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8965            #[doc(hidden)]
8966            type UnderlyingRustTuple<'a> = (
8967                alloy::sol_types::private::primitives::aliases::U256,
8968            );
8969            #[cfg(test)]
8970            #[allow(dead_code, unreachable_patterns)]
8971            fn _type_assertion(
8972                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8973            ) {
8974                match _t {
8975                    alloy_sol_types::private::AssertTypeEq::<
8976                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8977                    >(_) => {}
8978                }
8979            }
8980            #[automatically_derived]
8981            #[doc(hidden)]
8982            impl ::core::convert::From<depositScalingFactorReturn>
8983            for UnderlyingRustTuple<'_> {
8984                fn from(value: depositScalingFactorReturn) -> Self {
8985                    (value._0,)
8986                }
8987            }
8988            #[automatically_derived]
8989            #[doc(hidden)]
8990            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8991            for depositScalingFactorReturn {
8992                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8993                    Self { _0: tuple.0 }
8994                }
8995            }
8996        }
8997        #[automatically_derived]
8998        impl alloy_sol_types::SolCall for depositScalingFactorCall {
8999            type Parameters<'a> = (
9000                alloy::sol_types::sol_data::Address,
9001                alloy::sol_types::sol_data::Address,
9002            );
9003            type Token<'a> = <Self::Parameters<
9004                'a,
9005            > as alloy_sol_types::SolType>::Token<'a>;
9006            type Return = depositScalingFactorReturn;
9007            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9008            type ReturnToken<'a> = <Self::ReturnTuple<
9009                'a,
9010            > as alloy_sol_types::SolType>::Token<'a>;
9011            const SIGNATURE: &'static str = "depositScalingFactor(address,address)";
9012            const SELECTOR: [u8; 4] = [191u8, 174u8, 63u8, 210u8];
9013            #[inline]
9014            fn new<'a>(
9015                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9016            ) -> Self {
9017                tuple.into()
9018            }
9019            #[inline]
9020            fn tokenize(&self) -> Self::Token<'_> {
9021                (
9022                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9023                        &self.staker,
9024                    ),
9025                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9026                        &self.strategy,
9027                    ),
9028                )
9029            }
9030            #[inline]
9031            fn abi_decode_returns(
9032                data: &[u8],
9033                validate: bool,
9034            ) -> alloy_sol_types::Result<Self::Return> {
9035                <Self::ReturnTuple<
9036                    '_,
9037                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9038                    .map(Into::into)
9039            }
9040        }
9041    };
9042    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9043    /**Function with signature `domainSeparator()` and selector `0xf698da25`.
9044```solidity
9045function domainSeparator() external view returns (bytes32);
9046```*/
9047    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9048    #[derive(Clone)]
9049    pub struct domainSeparatorCall {}
9050    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9051    ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function.
9052    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9053    #[derive(Clone)]
9054    pub struct domainSeparatorReturn {
9055        #[allow(missing_docs)]
9056        pub _0: alloy::sol_types::private::FixedBytes<32>,
9057    }
9058    #[allow(
9059        non_camel_case_types,
9060        non_snake_case,
9061        clippy::pub_underscore_fields,
9062        clippy::style
9063    )]
9064    const _: () = {
9065        use alloy::sol_types as alloy_sol_types;
9066        {
9067            #[doc(hidden)]
9068            type UnderlyingSolTuple<'a> = ();
9069            #[doc(hidden)]
9070            type UnderlyingRustTuple<'a> = ();
9071            #[cfg(test)]
9072            #[allow(dead_code, unreachable_patterns)]
9073            fn _type_assertion(
9074                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9075            ) {
9076                match _t {
9077                    alloy_sol_types::private::AssertTypeEq::<
9078                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9079                    >(_) => {}
9080                }
9081            }
9082            #[automatically_derived]
9083            #[doc(hidden)]
9084            impl ::core::convert::From<domainSeparatorCall> for UnderlyingRustTuple<'_> {
9085                fn from(value: domainSeparatorCall) -> Self {
9086                    ()
9087                }
9088            }
9089            #[automatically_derived]
9090            #[doc(hidden)]
9091            impl ::core::convert::From<UnderlyingRustTuple<'_>> for domainSeparatorCall {
9092                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9093                    Self {}
9094                }
9095            }
9096        }
9097        {
9098            #[doc(hidden)]
9099            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9100            #[doc(hidden)]
9101            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9102            #[cfg(test)]
9103            #[allow(dead_code, unreachable_patterns)]
9104            fn _type_assertion(
9105                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9106            ) {
9107                match _t {
9108                    alloy_sol_types::private::AssertTypeEq::<
9109                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9110                    >(_) => {}
9111                }
9112            }
9113            #[automatically_derived]
9114            #[doc(hidden)]
9115            impl ::core::convert::From<domainSeparatorReturn>
9116            for UnderlyingRustTuple<'_> {
9117                fn from(value: domainSeparatorReturn) -> Self {
9118                    (value._0,)
9119                }
9120            }
9121            #[automatically_derived]
9122            #[doc(hidden)]
9123            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9124            for domainSeparatorReturn {
9125                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9126                    Self { _0: tuple.0 }
9127                }
9128            }
9129        }
9130        #[automatically_derived]
9131        impl alloy_sol_types::SolCall for domainSeparatorCall {
9132            type Parameters<'a> = ();
9133            type Token<'a> = <Self::Parameters<
9134                'a,
9135            > as alloy_sol_types::SolType>::Token<'a>;
9136            type Return = domainSeparatorReturn;
9137            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9138            type ReturnToken<'a> = <Self::ReturnTuple<
9139                'a,
9140            > as alloy_sol_types::SolType>::Token<'a>;
9141            const SIGNATURE: &'static str = "domainSeparator()";
9142            const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8];
9143            #[inline]
9144            fn new<'a>(
9145                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9146            ) -> Self {
9147                tuple.into()
9148            }
9149            #[inline]
9150            fn tokenize(&self) -> Self::Token<'_> {
9151                ()
9152            }
9153            #[inline]
9154            fn abi_decode_returns(
9155                data: &[u8],
9156                validate: bool,
9157            ) -> alloy_sol_types::Result<Self::Return> {
9158                <Self::ReturnTuple<
9159                    '_,
9160                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9161                    .map(Into::into)
9162            }
9163        }
9164    };
9165    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9166    /**Function with signature `eigenPodManager()` and selector `0x4665bcda`.
9167```solidity
9168function eigenPodManager() external view returns (address);
9169```*/
9170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9171    #[derive(Clone)]
9172    pub struct eigenPodManagerCall {}
9173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9174    ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function.
9175    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9176    #[derive(Clone)]
9177    pub struct eigenPodManagerReturn {
9178        #[allow(missing_docs)]
9179        pub _0: alloy::sol_types::private::Address,
9180    }
9181    #[allow(
9182        non_camel_case_types,
9183        non_snake_case,
9184        clippy::pub_underscore_fields,
9185        clippy::style
9186    )]
9187    const _: () = {
9188        use alloy::sol_types as alloy_sol_types;
9189        {
9190            #[doc(hidden)]
9191            type UnderlyingSolTuple<'a> = ();
9192            #[doc(hidden)]
9193            type UnderlyingRustTuple<'a> = ();
9194            #[cfg(test)]
9195            #[allow(dead_code, unreachable_patterns)]
9196            fn _type_assertion(
9197                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9198            ) {
9199                match _t {
9200                    alloy_sol_types::private::AssertTypeEq::<
9201                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9202                    >(_) => {}
9203                }
9204            }
9205            #[automatically_derived]
9206            #[doc(hidden)]
9207            impl ::core::convert::From<eigenPodManagerCall> for UnderlyingRustTuple<'_> {
9208                fn from(value: eigenPodManagerCall) -> Self {
9209                    ()
9210                }
9211            }
9212            #[automatically_derived]
9213            #[doc(hidden)]
9214            impl ::core::convert::From<UnderlyingRustTuple<'_>> for eigenPodManagerCall {
9215                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9216                    Self {}
9217                }
9218            }
9219        }
9220        {
9221            #[doc(hidden)]
9222            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9223            #[doc(hidden)]
9224            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9225            #[cfg(test)]
9226            #[allow(dead_code, unreachable_patterns)]
9227            fn _type_assertion(
9228                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9229            ) {
9230                match _t {
9231                    alloy_sol_types::private::AssertTypeEq::<
9232                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9233                    >(_) => {}
9234                }
9235            }
9236            #[automatically_derived]
9237            #[doc(hidden)]
9238            impl ::core::convert::From<eigenPodManagerReturn>
9239            for UnderlyingRustTuple<'_> {
9240                fn from(value: eigenPodManagerReturn) -> Self {
9241                    (value._0,)
9242                }
9243            }
9244            #[automatically_derived]
9245            #[doc(hidden)]
9246            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9247            for eigenPodManagerReturn {
9248                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9249                    Self { _0: tuple.0 }
9250                }
9251            }
9252        }
9253        #[automatically_derived]
9254        impl alloy_sol_types::SolCall for eigenPodManagerCall {
9255            type Parameters<'a> = ();
9256            type Token<'a> = <Self::Parameters<
9257                'a,
9258            > as alloy_sol_types::SolType>::Token<'a>;
9259            type Return = eigenPodManagerReturn;
9260            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9261            type ReturnToken<'a> = <Self::ReturnTuple<
9262                'a,
9263            > as alloy_sol_types::SolType>::Token<'a>;
9264            const SIGNATURE: &'static str = "eigenPodManager()";
9265            const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8];
9266            #[inline]
9267            fn new<'a>(
9268                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9269            ) -> Self {
9270                tuple.into()
9271            }
9272            #[inline]
9273            fn tokenize(&self) -> Self::Token<'_> {
9274                ()
9275            }
9276            #[inline]
9277            fn abi_decode_returns(
9278                data: &[u8],
9279                validate: bool,
9280            ) -> alloy_sol_types::Result<Self::Return> {
9281                <Self::ReturnTuple<
9282                    '_,
9283                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9284                    .map(Into::into)
9285            }
9286        }
9287    };
9288    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9289    /**Function with signature `getDepositedShares(address)` and selector `0x66d5ba93`.
9290```solidity
9291function getDepositedShares(address staker) external view returns (address[] memory, uint256[] memory);
9292```*/
9293    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9294    #[derive(Clone)]
9295    pub struct getDepositedSharesCall {
9296        #[allow(missing_docs)]
9297        pub staker: alloy::sol_types::private::Address,
9298    }
9299    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9300    ///Container type for the return parameters of the [`getDepositedShares(address)`](getDepositedSharesCall) function.
9301    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9302    #[derive(Clone)]
9303    pub struct getDepositedSharesReturn {
9304        #[allow(missing_docs)]
9305        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9306        #[allow(missing_docs)]
9307        pub _1: alloy::sol_types::private::Vec<
9308            alloy::sol_types::private::primitives::aliases::U256,
9309        >,
9310    }
9311    #[allow(
9312        non_camel_case_types,
9313        non_snake_case,
9314        clippy::pub_underscore_fields,
9315        clippy::style
9316    )]
9317    const _: () = {
9318        use alloy::sol_types as alloy_sol_types;
9319        {
9320            #[doc(hidden)]
9321            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9322            #[doc(hidden)]
9323            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9324            #[cfg(test)]
9325            #[allow(dead_code, unreachable_patterns)]
9326            fn _type_assertion(
9327                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9328            ) {
9329                match _t {
9330                    alloy_sol_types::private::AssertTypeEq::<
9331                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9332                    >(_) => {}
9333                }
9334            }
9335            #[automatically_derived]
9336            #[doc(hidden)]
9337            impl ::core::convert::From<getDepositedSharesCall>
9338            for UnderlyingRustTuple<'_> {
9339                fn from(value: getDepositedSharesCall) -> Self {
9340                    (value.staker,)
9341                }
9342            }
9343            #[automatically_derived]
9344            #[doc(hidden)]
9345            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9346            for getDepositedSharesCall {
9347                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9348                    Self { staker: tuple.0 }
9349                }
9350            }
9351        }
9352        {
9353            #[doc(hidden)]
9354            type UnderlyingSolTuple<'a> = (
9355                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9356                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
9357            );
9358            #[doc(hidden)]
9359            type UnderlyingRustTuple<'a> = (
9360                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9361                alloy::sol_types::private::Vec<
9362                    alloy::sol_types::private::primitives::aliases::U256,
9363                >,
9364            );
9365            #[cfg(test)]
9366            #[allow(dead_code, unreachable_patterns)]
9367            fn _type_assertion(
9368                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9369            ) {
9370                match _t {
9371                    alloy_sol_types::private::AssertTypeEq::<
9372                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9373                    >(_) => {}
9374                }
9375            }
9376            #[automatically_derived]
9377            #[doc(hidden)]
9378            impl ::core::convert::From<getDepositedSharesReturn>
9379            for UnderlyingRustTuple<'_> {
9380                fn from(value: getDepositedSharesReturn) -> Self {
9381                    (value._0, value._1)
9382                }
9383            }
9384            #[automatically_derived]
9385            #[doc(hidden)]
9386            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9387            for getDepositedSharesReturn {
9388                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9389                    Self { _0: tuple.0, _1: tuple.1 }
9390                }
9391            }
9392        }
9393        #[automatically_derived]
9394        impl alloy_sol_types::SolCall for getDepositedSharesCall {
9395            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9396            type Token<'a> = <Self::Parameters<
9397                'a,
9398            > as alloy_sol_types::SolType>::Token<'a>;
9399            type Return = getDepositedSharesReturn;
9400            type ReturnTuple<'a> = (
9401                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9402                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
9403            );
9404            type ReturnToken<'a> = <Self::ReturnTuple<
9405                'a,
9406            > as alloy_sol_types::SolType>::Token<'a>;
9407            const SIGNATURE: &'static str = "getDepositedShares(address)";
9408            const SELECTOR: [u8; 4] = [102u8, 213u8, 186u8, 147u8];
9409            #[inline]
9410            fn new<'a>(
9411                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9412            ) -> Self {
9413                tuple.into()
9414            }
9415            #[inline]
9416            fn tokenize(&self) -> Self::Token<'_> {
9417                (
9418                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9419                        &self.staker,
9420                    ),
9421                )
9422            }
9423            #[inline]
9424            fn abi_decode_returns(
9425                data: &[u8],
9426                validate: bool,
9427            ) -> alloy_sol_types::Result<Self::Return> {
9428                <Self::ReturnTuple<
9429                    '_,
9430                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9431                    .map(Into::into)
9432            }
9433        }
9434    };
9435    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9436    /**Function with signature `getOperatorShares(address,address[])` and selector `0x90041347`.
9437```solidity
9438function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory);
9439```*/
9440    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9441    #[derive(Clone)]
9442    pub struct getOperatorSharesCall {
9443        #[allow(missing_docs)]
9444        pub operator: alloy::sol_types::private::Address,
9445        #[allow(missing_docs)]
9446        pub strategies: alloy::sol_types::private::Vec<
9447            alloy::sol_types::private::Address,
9448        >,
9449    }
9450    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9451    ///Container type for the return parameters of the [`getOperatorShares(address,address[])`](getOperatorSharesCall) function.
9452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9453    #[derive(Clone)]
9454    pub struct getOperatorSharesReturn {
9455        #[allow(missing_docs)]
9456        pub _0: alloy::sol_types::private::Vec<
9457            alloy::sol_types::private::primitives::aliases::U256,
9458        >,
9459    }
9460    #[allow(
9461        non_camel_case_types,
9462        non_snake_case,
9463        clippy::pub_underscore_fields,
9464        clippy::style
9465    )]
9466    const _: () = {
9467        use alloy::sol_types as alloy_sol_types;
9468        {
9469            #[doc(hidden)]
9470            type UnderlyingSolTuple<'a> = (
9471                alloy::sol_types::sol_data::Address,
9472                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9473            );
9474            #[doc(hidden)]
9475            type UnderlyingRustTuple<'a> = (
9476                alloy::sol_types::private::Address,
9477                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9478            );
9479            #[cfg(test)]
9480            #[allow(dead_code, unreachable_patterns)]
9481            fn _type_assertion(
9482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9483            ) {
9484                match _t {
9485                    alloy_sol_types::private::AssertTypeEq::<
9486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9487                    >(_) => {}
9488                }
9489            }
9490            #[automatically_derived]
9491            #[doc(hidden)]
9492            impl ::core::convert::From<getOperatorSharesCall>
9493            for UnderlyingRustTuple<'_> {
9494                fn from(value: getOperatorSharesCall) -> Self {
9495                    (value.operator, value.strategies)
9496                }
9497            }
9498            #[automatically_derived]
9499            #[doc(hidden)]
9500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9501            for getOperatorSharesCall {
9502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9503                    Self {
9504                        operator: tuple.0,
9505                        strategies: tuple.1,
9506                    }
9507                }
9508            }
9509        }
9510        {
9511            #[doc(hidden)]
9512            type UnderlyingSolTuple<'a> = (
9513                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
9514            );
9515            #[doc(hidden)]
9516            type UnderlyingRustTuple<'a> = (
9517                alloy::sol_types::private::Vec<
9518                    alloy::sol_types::private::primitives::aliases::U256,
9519                >,
9520            );
9521            #[cfg(test)]
9522            #[allow(dead_code, unreachable_patterns)]
9523            fn _type_assertion(
9524                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9525            ) {
9526                match _t {
9527                    alloy_sol_types::private::AssertTypeEq::<
9528                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9529                    >(_) => {}
9530                }
9531            }
9532            #[automatically_derived]
9533            #[doc(hidden)]
9534            impl ::core::convert::From<getOperatorSharesReturn>
9535            for UnderlyingRustTuple<'_> {
9536                fn from(value: getOperatorSharesReturn) -> Self {
9537                    (value._0,)
9538                }
9539            }
9540            #[automatically_derived]
9541            #[doc(hidden)]
9542            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9543            for getOperatorSharesReturn {
9544                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9545                    Self { _0: tuple.0 }
9546                }
9547            }
9548        }
9549        #[automatically_derived]
9550        impl alloy_sol_types::SolCall for getOperatorSharesCall {
9551            type Parameters<'a> = (
9552                alloy::sol_types::sol_data::Address,
9553                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9554            );
9555            type Token<'a> = <Self::Parameters<
9556                'a,
9557            > as alloy_sol_types::SolType>::Token<'a>;
9558            type Return = getOperatorSharesReturn;
9559            type ReturnTuple<'a> = (
9560                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
9561            );
9562            type ReturnToken<'a> = <Self::ReturnTuple<
9563                'a,
9564            > as alloy_sol_types::SolType>::Token<'a>;
9565            const SIGNATURE: &'static str = "getOperatorShares(address,address[])";
9566            const SELECTOR: [u8; 4] = [144u8, 4u8, 19u8, 71u8];
9567            #[inline]
9568            fn new<'a>(
9569                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9570            ) -> Self {
9571                tuple.into()
9572            }
9573            #[inline]
9574            fn tokenize(&self) -> Self::Token<'_> {
9575                (
9576                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9577                        &self.operator,
9578                    ),
9579                    <alloy::sol_types::sol_data::Array<
9580                        alloy::sol_types::sol_data::Address,
9581                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
9582                )
9583            }
9584            #[inline]
9585            fn abi_decode_returns(
9586                data: &[u8],
9587                validate: bool,
9588            ) -> alloy_sol_types::Result<Self::Return> {
9589                <Self::ReturnTuple<
9590                    '_,
9591                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9592                    .map(Into::into)
9593            }
9594        }
9595    };
9596    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9597    /**Function with signature `getOperatorsShares(address[],address[])` and selector `0xf0e0e676`.
9598```solidity
9599function getOperatorsShares(address[] memory operators, address[] memory strategies) external view returns (uint256[][] memory);
9600```*/
9601    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9602    #[derive(Clone)]
9603    pub struct getOperatorsSharesCall {
9604        #[allow(missing_docs)]
9605        pub operators: alloy::sol_types::private::Vec<
9606            alloy::sol_types::private::Address,
9607        >,
9608        #[allow(missing_docs)]
9609        pub strategies: alloy::sol_types::private::Vec<
9610            alloy::sol_types::private::Address,
9611        >,
9612    }
9613    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9614    ///Container type for the return parameters of the [`getOperatorsShares(address[],address[])`](getOperatorsSharesCall) function.
9615    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9616    #[derive(Clone)]
9617    pub struct getOperatorsSharesReturn {
9618        #[allow(missing_docs)]
9619        pub _0: alloy::sol_types::private::Vec<
9620            alloy::sol_types::private::Vec<
9621                alloy::sol_types::private::primitives::aliases::U256,
9622            >,
9623        >,
9624    }
9625    #[allow(
9626        non_camel_case_types,
9627        non_snake_case,
9628        clippy::pub_underscore_fields,
9629        clippy::style
9630    )]
9631    const _: () = {
9632        use alloy::sol_types as alloy_sol_types;
9633        {
9634            #[doc(hidden)]
9635            type UnderlyingSolTuple<'a> = (
9636                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9637                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9638            );
9639            #[doc(hidden)]
9640            type UnderlyingRustTuple<'a> = (
9641                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9642                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9643            );
9644            #[cfg(test)]
9645            #[allow(dead_code, unreachable_patterns)]
9646            fn _type_assertion(
9647                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9648            ) {
9649                match _t {
9650                    alloy_sol_types::private::AssertTypeEq::<
9651                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9652                    >(_) => {}
9653                }
9654            }
9655            #[automatically_derived]
9656            #[doc(hidden)]
9657            impl ::core::convert::From<getOperatorsSharesCall>
9658            for UnderlyingRustTuple<'_> {
9659                fn from(value: getOperatorsSharesCall) -> Self {
9660                    (value.operators, value.strategies)
9661                }
9662            }
9663            #[automatically_derived]
9664            #[doc(hidden)]
9665            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9666            for getOperatorsSharesCall {
9667                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9668                    Self {
9669                        operators: tuple.0,
9670                        strategies: tuple.1,
9671                    }
9672                }
9673            }
9674        }
9675        {
9676            #[doc(hidden)]
9677            type UnderlyingSolTuple<'a> = (
9678                alloy::sol_types::sol_data::Array<
9679                    alloy::sol_types::sol_data::Array<
9680                        alloy::sol_types::sol_data::Uint<256>,
9681                    >,
9682                >,
9683            );
9684            #[doc(hidden)]
9685            type UnderlyingRustTuple<'a> = (
9686                alloy::sol_types::private::Vec<
9687                    alloy::sol_types::private::Vec<
9688                        alloy::sol_types::private::primitives::aliases::U256,
9689                    >,
9690                >,
9691            );
9692            #[cfg(test)]
9693            #[allow(dead_code, unreachable_patterns)]
9694            fn _type_assertion(
9695                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9696            ) {
9697                match _t {
9698                    alloy_sol_types::private::AssertTypeEq::<
9699                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9700                    >(_) => {}
9701                }
9702            }
9703            #[automatically_derived]
9704            #[doc(hidden)]
9705            impl ::core::convert::From<getOperatorsSharesReturn>
9706            for UnderlyingRustTuple<'_> {
9707                fn from(value: getOperatorsSharesReturn) -> Self {
9708                    (value._0,)
9709                }
9710            }
9711            #[automatically_derived]
9712            #[doc(hidden)]
9713            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9714            for getOperatorsSharesReturn {
9715                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9716                    Self { _0: tuple.0 }
9717                }
9718            }
9719        }
9720        #[automatically_derived]
9721        impl alloy_sol_types::SolCall for getOperatorsSharesCall {
9722            type Parameters<'a> = (
9723                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9724                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9725            );
9726            type Token<'a> = <Self::Parameters<
9727                'a,
9728            > as alloy_sol_types::SolType>::Token<'a>;
9729            type Return = getOperatorsSharesReturn;
9730            type ReturnTuple<'a> = (
9731                alloy::sol_types::sol_data::Array<
9732                    alloy::sol_types::sol_data::Array<
9733                        alloy::sol_types::sol_data::Uint<256>,
9734                    >,
9735                >,
9736            );
9737            type ReturnToken<'a> = <Self::ReturnTuple<
9738                'a,
9739            > as alloy_sol_types::SolType>::Token<'a>;
9740            const SIGNATURE: &'static str = "getOperatorsShares(address[],address[])";
9741            const SELECTOR: [u8; 4] = [240u8, 224u8, 230u8, 118u8];
9742            #[inline]
9743            fn new<'a>(
9744                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9745            ) -> Self {
9746                tuple.into()
9747            }
9748            #[inline]
9749            fn tokenize(&self) -> Self::Token<'_> {
9750                (
9751                    <alloy::sol_types::sol_data::Array<
9752                        alloy::sol_types::sol_data::Address,
9753                    > as alloy_sol_types::SolType>::tokenize(&self.operators),
9754                    <alloy::sol_types::sol_data::Array<
9755                        alloy::sol_types::sol_data::Address,
9756                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
9757                )
9758            }
9759            #[inline]
9760            fn abi_decode_returns(
9761                data: &[u8],
9762                validate: bool,
9763            ) -> alloy_sol_types::Result<Self::Return> {
9764                <Self::ReturnTuple<
9765                    '_,
9766                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9767                    .map(Into::into)
9768            }
9769        }
9770    };
9771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9772    /**Function with signature `getQueuedWithdrawal(bytes32)` and selector `0x5d975e88`.
9773```solidity
9774function getQueuedWithdrawal(bytes32 withdrawalRoot) external view returns (IDelegationManagerTypes.Withdrawal memory withdrawal, uint256[] memory shares);
9775```*/
9776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9777    #[derive(Clone)]
9778    pub struct getQueuedWithdrawalCall {
9779        #[allow(missing_docs)]
9780        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
9781    }
9782    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9783    ///Container type for the return parameters of the [`getQueuedWithdrawal(bytes32)`](getQueuedWithdrawalCall) function.
9784    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9785    #[derive(Clone)]
9786    pub struct getQueuedWithdrawalReturn {
9787        #[allow(missing_docs)]
9788        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
9789        #[allow(missing_docs)]
9790        pub shares: alloy::sol_types::private::Vec<
9791            alloy::sol_types::private::primitives::aliases::U256,
9792        >,
9793    }
9794    #[allow(
9795        non_camel_case_types,
9796        non_snake_case,
9797        clippy::pub_underscore_fields,
9798        clippy::style
9799    )]
9800    const _: () = {
9801        use alloy::sol_types as alloy_sol_types;
9802        {
9803            #[doc(hidden)]
9804            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9805            #[doc(hidden)]
9806            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9807            #[cfg(test)]
9808            #[allow(dead_code, unreachable_patterns)]
9809            fn _type_assertion(
9810                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9811            ) {
9812                match _t {
9813                    alloy_sol_types::private::AssertTypeEq::<
9814                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9815                    >(_) => {}
9816                }
9817            }
9818            #[automatically_derived]
9819            #[doc(hidden)]
9820            impl ::core::convert::From<getQueuedWithdrawalCall>
9821            for UnderlyingRustTuple<'_> {
9822                fn from(value: getQueuedWithdrawalCall) -> Self {
9823                    (value.withdrawalRoot,)
9824                }
9825            }
9826            #[automatically_derived]
9827            #[doc(hidden)]
9828            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9829            for getQueuedWithdrawalCall {
9830                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9831                    Self { withdrawalRoot: tuple.0 }
9832                }
9833            }
9834        }
9835        {
9836            #[doc(hidden)]
9837            type UnderlyingSolTuple<'a> = (
9838                IDelegationManagerTypes::Withdrawal,
9839                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
9840            );
9841            #[doc(hidden)]
9842            type UnderlyingRustTuple<'a> = (
9843                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
9844                alloy::sol_types::private::Vec<
9845                    alloy::sol_types::private::primitives::aliases::U256,
9846                >,
9847            );
9848            #[cfg(test)]
9849            #[allow(dead_code, unreachable_patterns)]
9850            fn _type_assertion(
9851                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9852            ) {
9853                match _t {
9854                    alloy_sol_types::private::AssertTypeEq::<
9855                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9856                    >(_) => {}
9857                }
9858            }
9859            #[automatically_derived]
9860            #[doc(hidden)]
9861            impl ::core::convert::From<getQueuedWithdrawalReturn>
9862            for UnderlyingRustTuple<'_> {
9863                fn from(value: getQueuedWithdrawalReturn) -> Self {
9864                    (value.withdrawal, value.shares)
9865                }
9866            }
9867            #[automatically_derived]
9868            #[doc(hidden)]
9869            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9870            for getQueuedWithdrawalReturn {
9871                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9872                    Self {
9873                        withdrawal: tuple.0,
9874                        shares: tuple.1,
9875                    }
9876                }
9877            }
9878        }
9879        #[automatically_derived]
9880        impl alloy_sol_types::SolCall for getQueuedWithdrawalCall {
9881            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9882            type Token<'a> = <Self::Parameters<
9883                'a,
9884            > as alloy_sol_types::SolType>::Token<'a>;
9885            type Return = getQueuedWithdrawalReturn;
9886            type ReturnTuple<'a> = (
9887                IDelegationManagerTypes::Withdrawal,
9888                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
9889            );
9890            type ReturnToken<'a> = <Self::ReturnTuple<
9891                'a,
9892            > as alloy_sol_types::SolType>::Token<'a>;
9893            const SIGNATURE: &'static str = "getQueuedWithdrawal(bytes32)";
9894            const SELECTOR: [u8; 4] = [93u8, 151u8, 94u8, 136u8];
9895            #[inline]
9896            fn new<'a>(
9897                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9898            ) -> Self {
9899                tuple.into()
9900            }
9901            #[inline]
9902            fn tokenize(&self) -> Self::Token<'_> {
9903                (
9904                    <alloy::sol_types::sol_data::FixedBytes<
9905                        32,
9906                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
9907                )
9908            }
9909            #[inline]
9910            fn abi_decode_returns(
9911                data: &[u8],
9912                validate: bool,
9913            ) -> alloy_sol_types::Result<Self::Return> {
9914                <Self::ReturnTuple<
9915                    '_,
9916                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9917                    .map(Into::into)
9918            }
9919        }
9920    };
9921    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9922    /**Function with signature `getQueuedWithdrawalRoots(address)` and selector `0xfd8aa88d`.
9923```solidity
9924function getQueuedWithdrawalRoots(address staker) external view returns (bytes32[] memory);
9925```*/
9926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9927    #[derive(Clone)]
9928    pub struct getQueuedWithdrawalRootsCall {
9929        #[allow(missing_docs)]
9930        pub staker: alloy::sol_types::private::Address,
9931    }
9932    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9933    ///Container type for the return parameters of the [`getQueuedWithdrawalRoots(address)`](getQueuedWithdrawalRootsCall) function.
9934    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9935    #[derive(Clone)]
9936    pub struct getQueuedWithdrawalRootsReturn {
9937        #[allow(missing_docs)]
9938        pub _0: alloy::sol_types::private::Vec<
9939            alloy::sol_types::private::FixedBytes<32>,
9940        >,
9941    }
9942    #[allow(
9943        non_camel_case_types,
9944        non_snake_case,
9945        clippy::pub_underscore_fields,
9946        clippy::style
9947    )]
9948    const _: () = {
9949        use alloy::sol_types as alloy_sol_types;
9950        {
9951            #[doc(hidden)]
9952            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9953            #[doc(hidden)]
9954            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9955            #[cfg(test)]
9956            #[allow(dead_code, unreachable_patterns)]
9957            fn _type_assertion(
9958                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9959            ) {
9960                match _t {
9961                    alloy_sol_types::private::AssertTypeEq::<
9962                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9963                    >(_) => {}
9964                }
9965            }
9966            #[automatically_derived]
9967            #[doc(hidden)]
9968            impl ::core::convert::From<getQueuedWithdrawalRootsCall>
9969            for UnderlyingRustTuple<'_> {
9970                fn from(value: getQueuedWithdrawalRootsCall) -> Self {
9971                    (value.staker,)
9972                }
9973            }
9974            #[automatically_derived]
9975            #[doc(hidden)]
9976            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9977            for getQueuedWithdrawalRootsCall {
9978                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9979                    Self { staker: tuple.0 }
9980                }
9981            }
9982        }
9983        {
9984            #[doc(hidden)]
9985            type UnderlyingSolTuple<'a> = (
9986                alloy::sol_types::sol_data::Array<
9987                    alloy::sol_types::sol_data::FixedBytes<32>,
9988                >,
9989            );
9990            #[doc(hidden)]
9991            type UnderlyingRustTuple<'a> = (
9992                alloy::sol_types::private::Vec<
9993                    alloy::sol_types::private::FixedBytes<32>,
9994                >,
9995            );
9996            #[cfg(test)]
9997            #[allow(dead_code, unreachable_patterns)]
9998            fn _type_assertion(
9999                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10000            ) {
10001                match _t {
10002                    alloy_sol_types::private::AssertTypeEq::<
10003                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10004                    >(_) => {}
10005                }
10006            }
10007            #[automatically_derived]
10008            #[doc(hidden)]
10009            impl ::core::convert::From<getQueuedWithdrawalRootsReturn>
10010            for UnderlyingRustTuple<'_> {
10011                fn from(value: getQueuedWithdrawalRootsReturn) -> Self {
10012                    (value._0,)
10013                }
10014            }
10015            #[automatically_derived]
10016            #[doc(hidden)]
10017            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10018            for getQueuedWithdrawalRootsReturn {
10019                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10020                    Self { _0: tuple.0 }
10021                }
10022            }
10023        }
10024        #[automatically_derived]
10025        impl alloy_sol_types::SolCall for getQueuedWithdrawalRootsCall {
10026            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10027            type Token<'a> = <Self::Parameters<
10028                'a,
10029            > as alloy_sol_types::SolType>::Token<'a>;
10030            type Return = getQueuedWithdrawalRootsReturn;
10031            type ReturnTuple<'a> = (
10032                alloy::sol_types::sol_data::Array<
10033                    alloy::sol_types::sol_data::FixedBytes<32>,
10034                >,
10035            );
10036            type ReturnToken<'a> = <Self::ReturnTuple<
10037                'a,
10038            > as alloy_sol_types::SolType>::Token<'a>;
10039            const SIGNATURE: &'static str = "getQueuedWithdrawalRoots(address)";
10040            const SELECTOR: [u8; 4] = [253u8, 138u8, 168u8, 141u8];
10041            #[inline]
10042            fn new<'a>(
10043                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10044            ) -> Self {
10045                tuple.into()
10046            }
10047            #[inline]
10048            fn tokenize(&self) -> Self::Token<'_> {
10049                (
10050                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10051                        &self.staker,
10052                    ),
10053                )
10054            }
10055            #[inline]
10056            fn abi_decode_returns(
10057                data: &[u8],
10058                validate: bool,
10059            ) -> alloy_sol_types::Result<Self::Return> {
10060                <Self::ReturnTuple<
10061                    '_,
10062                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10063                    .map(Into::into)
10064            }
10065        }
10066    };
10067    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10068    /**Function with signature `getQueuedWithdrawals(address)` and selector `0x5dd68579`.
10069```solidity
10070function getQueuedWithdrawals(address staker) external view returns (IDelegationManagerTypes.Withdrawal[] memory withdrawals, uint256[][] memory shares);
10071```*/
10072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10073    #[derive(Clone)]
10074    pub struct getQueuedWithdrawalsCall {
10075        #[allow(missing_docs)]
10076        pub staker: alloy::sol_types::private::Address,
10077    }
10078    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10079    ///Container type for the return parameters of the [`getQueuedWithdrawals(address)`](getQueuedWithdrawalsCall) function.
10080    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10081    #[derive(Clone)]
10082    pub struct getQueuedWithdrawalsReturn {
10083        #[allow(missing_docs)]
10084        pub withdrawals: alloy::sol_types::private::Vec<
10085            <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
10086        >,
10087        #[allow(missing_docs)]
10088        pub shares: alloy::sol_types::private::Vec<
10089            alloy::sol_types::private::Vec<
10090                alloy::sol_types::private::primitives::aliases::U256,
10091            >,
10092        >,
10093    }
10094    #[allow(
10095        non_camel_case_types,
10096        non_snake_case,
10097        clippy::pub_underscore_fields,
10098        clippy::style
10099    )]
10100    const _: () = {
10101        use alloy::sol_types as alloy_sol_types;
10102        {
10103            #[doc(hidden)]
10104            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10105            #[doc(hidden)]
10106            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10107            #[cfg(test)]
10108            #[allow(dead_code, unreachable_patterns)]
10109            fn _type_assertion(
10110                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10111            ) {
10112                match _t {
10113                    alloy_sol_types::private::AssertTypeEq::<
10114                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10115                    >(_) => {}
10116                }
10117            }
10118            #[automatically_derived]
10119            #[doc(hidden)]
10120            impl ::core::convert::From<getQueuedWithdrawalsCall>
10121            for UnderlyingRustTuple<'_> {
10122                fn from(value: getQueuedWithdrawalsCall) -> Self {
10123                    (value.staker,)
10124                }
10125            }
10126            #[automatically_derived]
10127            #[doc(hidden)]
10128            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10129            for getQueuedWithdrawalsCall {
10130                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10131                    Self { staker: tuple.0 }
10132                }
10133            }
10134        }
10135        {
10136            #[doc(hidden)]
10137            type UnderlyingSolTuple<'a> = (
10138                alloy::sol_types::sol_data::Array<IDelegationManagerTypes::Withdrawal>,
10139                alloy::sol_types::sol_data::Array<
10140                    alloy::sol_types::sol_data::Array<
10141                        alloy::sol_types::sol_data::Uint<256>,
10142                    >,
10143                >,
10144            );
10145            #[doc(hidden)]
10146            type UnderlyingRustTuple<'a> = (
10147                alloy::sol_types::private::Vec<
10148                    <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
10149                >,
10150                alloy::sol_types::private::Vec<
10151                    alloy::sol_types::private::Vec<
10152                        alloy::sol_types::private::primitives::aliases::U256,
10153                    >,
10154                >,
10155            );
10156            #[cfg(test)]
10157            #[allow(dead_code, unreachable_patterns)]
10158            fn _type_assertion(
10159                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10160            ) {
10161                match _t {
10162                    alloy_sol_types::private::AssertTypeEq::<
10163                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10164                    >(_) => {}
10165                }
10166            }
10167            #[automatically_derived]
10168            #[doc(hidden)]
10169            impl ::core::convert::From<getQueuedWithdrawalsReturn>
10170            for UnderlyingRustTuple<'_> {
10171                fn from(value: getQueuedWithdrawalsReturn) -> Self {
10172                    (value.withdrawals, value.shares)
10173                }
10174            }
10175            #[automatically_derived]
10176            #[doc(hidden)]
10177            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10178            for getQueuedWithdrawalsReturn {
10179                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10180                    Self {
10181                        withdrawals: tuple.0,
10182                        shares: tuple.1,
10183                    }
10184                }
10185            }
10186        }
10187        #[automatically_derived]
10188        impl alloy_sol_types::SolCall for getQueuedWithdrawalsCall {
10189            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10190            type Token<'a> = <Self::Parameters<
10191                'a,
10192            > as alloy_sol_types::SolType>::Token<'a>;
10193            type Return = getQueuedWithdrawalsReturn;
10194            type ReturnTuple<'a> = (
10195                alloy::sol_types::sol_data::Array<IDelegationManagerTypes::Withdrawal>,
10196                alloy::sol_types::sol_data::Array<
10197                    alloy::sol_types::sol_data::Array<
10198                        alloy::sol_types::sol_data::Uint<256>,
10199                    >,
10200                >,
10201            );
10202            type ReturnToken<'a> = <Self::ReturnTuple<
10203                'a,
10204            > as alloy_sol_types::SolType>::Token<'a>;
10205            const SIGNATURE: &'static str = "getQueuedWithdrawals(address)";
10206            const SELECTOR: [u8; 4] = [93u8, 214u8, 133u8, 121u8];
10207            #[inline]
10208            fn new<'a>(
10209                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10210            ) -> Self {
10211                tuple.into()
10212            }
10213            #[inline]
10214            fn tokenize(&self) -> Self::Token<'_> {
10215                (
10216                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10217                        &self.staker,
10218                    ),
10219                )
10220            }
10221            #[inline]
10222            fn abi_decode_returns(
10223                data: &[u8],
10224                validate: bool,
10225            ) -> alloy_sol_types::Result<Self::Return> {
10226                <Self::ReturnTuple<
10227                    '_,
10228                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10229                    .map(Into::into)
10230            }
10231        }
10232    };
10233    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10234    /**Function with signature `getSlashableSharesInQueue(address,address)` and selector `0x6e174448`.
10235```solidity
10236function getSlashableSharesInQueue(address operator, address strategy) external view returns (uint256);
10237```*/
10238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10239    #[derive(Clone)]
10240    pub struct getSlashableSharesInQueueCall {
10241        #[allow(missing_docs)]
10242        pub operator: alloy::sol_types::private::Address,
10243        #[allow(missing_docs)]
10244        pub strategy: alloy::sol_types::private::Address,
10245    }
10246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10247    ///Container type for the return parameters of the [`getSlashableSharesInQueue(address,address)`](getSlashableSharesInQueueCall) function.
10248    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10249    #[derive(Clone)]
10250    pub struct getSlashableSharesInQueueReturn {
10251        #[allow(missing_docs)]
10252        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10253    }
10254    #[allow(
10255        non_camel_case_types,
10256        non_snake_case,
10257        clippy::pub_underscore_fields,
10258        clippy::style
10259    )]
10260    const _: () = {
10261        use alloy::sol_types as alloy_sol_types;
10262        {
10263            #[doc(hidden)]
10264            type UnderlyingSolTuple<'a> = (
10265                alloy::sol_types::sol_data::Address,
10266                alloy::sol_types::sol_data::Address,
10267            );
10268            #[doc(hidden)]
10269            type UnderlyingRustTuple<'a> = (
10270                alloy::sol_types::private::Address,
10271                alloy::sol_types::private::Address,
10272            );
10273            #[cfg(test)]
10274            #[allow(dead_code, unreachable_patterns)]
10275            fn _type_assertion(
10276                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10277            ) {
10278                match _t {
10279                    alloy_sol_types::private::AssertTypeEq::<
10280                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10281                    >(_) => {}
10282                }
10283            }
10284            #[automatically_derived]
10285            #[doc(hidden)]
10286            impl ::core::convert::From<getSlashableSharesInQueueCall>
10287            for UnderlyingRustTuple<'_> {
10288                fn from(value: getSlashableSharesInQueueCall) -> Self {
10289                    (value.operator, value.strategy)
10290                }
10291            }
10292            #[automatically_derived]
10293            #[doc(hidden)]
10294            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10295            for getSlashableSharesInQueueCall {
10296                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10297                    Self {
10298                        operator: tuple.0,
10299                        strategy: tuple.1,
10300                    }
10301                }
10302            }
10303        }
10304        {
10305            #[doc(hidden)]
10306            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10307            #[doc(hidden)]
10308            type UnderlyingRustTuple<'a> = (
10309                alloy::sol_types::private::primitives::aliases::U256,
10310            );
10311            #[cfg(test)]
10312            #[allow(dead_code, unreachable_patterns)]
10313            fn _type_assertion(
10314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10315            ) {
10316                match _t {
10317                    alloy_sol_types::private::AssertTypeEq::<
10318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10319                    >(_) => {}
10320                }
10321            }
10322            #[automatically_derived]
10323            #[doc(hidden)]
10324            impl ::core::convert::From<getSlashableSharesInQueueReturn>
10325            for UnderlyingRustTuple<'_> {
10326                fn from(value: getSlashableSharesInQueueReturn) -> Self {
10327                    (value._0,)
10328                }
10329            }
10330            #[automatically_derived]
10331            #[doc(hidden)]
10332            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10333            for getSlashableSharesInQueueReturn {
10334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10335                    Self { _0: tuple.0 }
10336                }
10337            }
10338        }
10339        #[automatically_derived]
10340        impl alloy_sol_types::SolCall for getSlashableSharesInQueueCall {
10341            type Parameters<'a> = (
10342                alloy::sol_types::sol_data::Address,
10343                alloy::sol_types::sol_data::Address,
10344            );
10345            type Token<'a> = <Self::Parameters<
10346                'a,
10347            > as alloy_sol_types::SolType>::Token<'a>;
10348            type Return = getSlashableSharesInQueueReturn;
10349            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10350            type ReturnToken<'a> = <Self::ReturnTuple<
10351                'a,
10352            > as alloy_sol_types::SolType>::Token<'a>;
10353            const SIGNATURE: &'static str = "getSlashableSharesInQueue(address,address)";
10354            const SELECTOR: [u8; 4] = [110u8, 23u8, 68u8, 72u8];
10355            #[inline]
10356            fn new<'a>(
10357                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10358            ) -> Self {
10359                tuple.into()
10360            }
10361            #[inline]
10362            fn tokenize(&self) -> Self::Token<'_> {
10363                (
10364                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10365                        &self.operator,
10366                    ),
10367                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10368                        &self.strategy,
10369                    ),
10370                )
10371            }
10372            #[inline]
10373            fn abi_decode_returns(
10374                data: &[u8],
10375                validate: bool,
10376            ) -> alloy_sol_types::Result<Self::Return> {
10377                <Self::ReturnTuple<
10378                    '_,
10379                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10380                    .map(Into::into)
10381            }
10382        }
10383    };
10384    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10385    /**Function with signature `getWithdrawableShares(address,address[])` and selector `0xc978f7ac`.
10386```solidity
10387function getWithdrawableShares(address staker, address[] memory strategies) external view returns (uint256[] memory withdrawableShares, uint256[] memory depositShares);
10388```*/
10389    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10390    #[derive(Clone)]
10391    pub struct getWithdrawableSharesCall {
10392        #[allow(missing_docs)]
10393        pub staker: alloy::sol_types::private::Address,
10394        #[allow(missing_docs)]
10395        pub strategies: alloy::sol_types::private::Vec<
10396            alloy::sol_types::private::Address,
10397        >,
10398    }
10399    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10400    ///Container type for the return parameters of the [`getWithdrawableShares(address,address[])`](getWithdrawableSharesCall) function.
10401    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10402    #[derive(Clone)]
10403    pub struct getWithdrawableSharesReturn {
10404        #[allow(missing_docs)]
10405        pub withdrawableShares: alloy::sol_types::private::Vec<
10406            alloy::sol_types::private::primitives::aliases::U256,
10407        >,
10408        #[allow(missing_docs)]
10409        pub depositShares: alloy::sol_types::private::Vec<
10410            alloy::sol_types::private::primitives::aliases::U256,
10411        >,
10412    }
10413    #[allow(
10414        non_camel_case_types,
10415        non_snake_case,
10416        clippy::pub_underscore_fields,
10417        clippy::style
10418    )]
10419    const _: () = {
10420        use alloy::sol_types as alloy_sol_types;
10421        {
10422            #[doc(hidden)]
10423            type UnderlyingSolTuple<'a> = (
10424                alloy::sol_types::sol_data::Address,
10425                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10426            );
10427            #[doc(hidden)]
10428            type UnderlyingRustTuple<'a> = (
10429                alloy::sol_types::private::Address,
10430                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10431            );
10432            #[cfg(test)]
10433            #[allow(dead_code, unreachable_patterns)]
10434            fn _type_assertion(
10435                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10436            ) {
10437                match _t {
10438                    alloy_sol_types::private::AssertTypeEq::<
10439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10440                    >(_) => {}
10441                }
10442            }
10443            #[automatically_derived]
10444            #[doc(hidden)]
10445            impl ::core::convert::From<getWithdrawableSharesCall>
10446            for UnderlyingRustTuple<'_> {
10447                fn from(value: getWithdrawableSharesCall) -> Self {
10448                    (value.staker, value.strategies)
10449                }
10450            }
10451            #[automatically_derived]
10452            #[doc(hidden)]
10453            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10454            for getWithdrawableSharesCall {
10455                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10456                    Self {
10457                        staker: tuple.0,
10458                        strategies: tuple.1,
10459                    }
10460                }
10461            }
10462        }
10463        {
10464            #[doc(hidden)]
10465            type UnderlyingSolTuple<'a> = (
10466                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
10467                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
10468            );
10469            #[doc(hidden)]
10470            type UnderlyingRustTuple<'a> = (
10471                alloy::sol_types::private::Vec<
10472                    alloy::sol_types::private::primitives::aliases::U256,
10473                >,
10474                alloy::sol_types::private::Vec<
10475                    alloy::sol_types::private::primitives::aliases::U256,
10476                >,
10477            );
10478            #[cfg(test)]
10479            #[allow(dead_code, unreachable_patterns)]
10480            fn _type_assertion(
10481                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10482            ) {
10483                match _t {
10484                    alloy_sol_types::private::AssertTypeEq::<
10485                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10486                    >(_) => {}
10487                }
10488            }
10489            #[automatically_derived]
10490            #[doc(hidden)]
10491            impl ::core::convert::From<getWithdrawableSharesReturn>
10492            for UnderlyingRustTuple<'_> {
10493                fn from(value: getWithdrawableSharesReturn) -> Self {
10494                    (value.withdrawableShares, value.depositShares)
10495                }
10496            }
10497            #[automatically_derived]
10498            #[doc(hidden)]
10499            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10500            for getWithdrawableSharesReturn {
10501                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10502                    Self {
10503                        withdrawableShares: tuple.0,
10504                        depositShares: tuple.1,
10505                    }
10506                }
10507            }
10508        }
10509        #[automatically_derived]
10510        impl alloy_sol_types::SolCall for getWithdrawableSharesCall {
10511            type Parameters<'a> = (
10512                alloy::sol_types::sol_data::Address,
10513                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10514            );
10515            type Token<'a> = <Self::Parameters<
10516                'a,
10517            > as alloy_sol_types::SolType>::Token<'a>;
10518            type Return = getWithdrawableSharesReturn;
10519            type ReturnTuple<'a> = (
10520                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
10521                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
10522            );
10523            type ReturnToken<'a> = <Self::ReturnTuple<
10524                'a,
10525            > as alloy_sol_types::SolType>::Token<'a>;
10526            const SIGNATURE: &'static str = "getWithdrawableShares(address,address[])";
10527            const SELECTOR: [u8; 4] = [201u8, 120u8, 247u8, 172u8];
10528            #[inline]
10529            fn new<'a>(
10530                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10531            ) -> Self {
10532                tuple.into()
10533            }
10534            #[inline]
10535            fn tokenize(&self) -> Self::Token<'_> {
10536                (
10537                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10538                        &self.staker,
10539                    ),
10540                    <alloy::sol_types::sol_data::Array<
10541                        alloy::sol_types::sol_data::Address,
10542                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
10543                )
10544            }
10545            #[inline]
10546            fn abi_decode_returns(
10547                data: &[u8],
10548                validate: bool,
10549            ) -> alloy_sol_types::Result<Self::Return> {
10550                <Self::ReturnTuple<
10551                    '_,
10552                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10553                    .map(Into::into)
10554            }
10555        }
10556    };
10557    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10558    /**Function with signature `increaseDelegatedShares(address,address,uint256,uint256)` and selector `0x3c651cf2`.
10559```solidity
10560function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) external;
10561```*/
10562    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10563    #[derive(Clone)]
10564    pub struct increaseDelegatedSharesCall {
10565        #[allow(missing_docs)]
10566        pub staker: alloy::sol_types::private::Address,
10567        #[allow(missing_docs)]
10568        pub strategy: alloy::sol_types::private::Address,
10569        #[allow(missing_docs)]
10570        pub prevDepositShares: alloy::sol_types::private::primitives::aliases::U256,
10571        #[allow(missing_docs)]
10572        pub addedShares: alloy::sol_types::private::primitives::aliases::U256,
10573    }
10574    ///Container type for the return parameters of the [`increaseDelegatedShares(address,address,uint256,uint256)`](increaseDelegatedSharesCall) function.
10575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10576    #[derive(Clone)]
10577    pub struct increaseDelegatedSharesReturn {}
10578    #[allow(
10579        non_camel_case_types,
10580        non_snake_case,
10581        clippy::pub_underscore_fields,
10582        clippy::style
10583    )]
10584    const _: () = {
10585        use alloy::sol_types as alloy_sol_types;
10586        {
10587            #[doc(hidden)]
10588            type UnderlyingSolTuple<'a> = (
10589                alloy::sol_types::sol_data::Address,
10590                alloy::sol_types::sol_data::Address,
10591                alloy::sol_types::sol_data::Uint<256>,
10592                alloy::sol_types::sol_data::Uint<256>,
10593            );
10594            #[doc(hidden)]
10595            type UnderlyingRustTuple<'a> = (
10596                alloy::sol_types::private::Address,
10597                alloy::sol_types::private::Address,
10598                alloy::sol_types::private::primitives::aliases::U256,
10599                alloy::sol_types::private::primitives::aliases::U256,
10600            );
10601            #[cfg(test)]
10602            #[allow(dead_code, unreachable_patterns)]
10603            fn _type_assertion(
10604                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10605            ) {
10606                match _t {
10607                    alloy_sol_types::private::AssertTypeEq::<
10608                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10609                    >(_) => {}
10610                }
10611            }
10612            #[automatically_derived]
10613            #[doc(hidden)]
10614            impl ::core::convert::From<increaseDelegatedSharesCall>
10615            for UnderlyingRustTuple<'_> {
10616                fn from(value: increaseDelegatedSharesCall) -> Self {
10617                    (
10618                        value.staker,
10619                        value.strategy,
10620                        value.prevDepositShares,
10621                        value.addedShares,
10622                    )
10623                }
10624            }
10625            #[automatically_derived]
10626            #[doc(hidden)]
10627            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10628            for increaseDelegatedSharesCall {
10629                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10630                    Self {
10631                        staker: tuple.0,
10632                        strategy: tuple.1,
10633                        prevDepositShares: tuple.2,
10634                        addedShares: tuple.3,
10635                    }
10636                }
10637            }
10638        }
10639        {
10640            #[doc(hidden)]
10641            type UnderlyingSolTuple<'a> = ();
10642            #[doc(hidden)]
10643            type UnderlyingRustTuple<'a> = ();
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<increaseDelegatedSharesReturn>
10658            for UnderlyingRustTuple<'_> {
10659                fn from(value: increaseDelegatedSharesReturn) -> Self {
10660                    ()
10661                }
10662            }
10663            #[automatically_derived]
10664            #[doc(hidden)]
10665            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10666            for increaseDelegatedSharesReturn {
10667                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10668                    Self {}
10669                }
10670            }
10671        }
10672        #[automatically_derived]
10673        impl alloy_sol_types::SolCall for increaseDelegatedSharesCall {
10674            type Parameters<'a> = (
10675                alloy::sol_types::sol_data::Address,
10676                alloy::sol_types::sol_data::Address,
10677                alloy::sol_types::sol_data::Uint<256>,
10678                alloy::sol_types::sol_data::Uint<256>,
10679            );
10680            type Token<'a> = <Self::Parameters<
10681                'a,
10682            > as alloy_sol_types::SolType>::Token<'a>;
10683            type Return = increaseDelegatedSharesReturn;
10684            type ReturnTuple<'a> = ();
10685            type ReturnToken<'a> = <Self::ReturnTuple<
10686                'a,
10687            > as alloy_sol_types::SolType>::Token<'a>;
10688            const SIGNATURE: &'static str = "increaseDelegatedShares(address,address,uint256,uint256)";
10689            const SELECTOR: [u8; 4] = [60u8, 101u8, 28u8, 242u8];
10690            #[inline]
10691            fn new<'a>(
10692                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10693            ) -> Self {
10694                tuple.into()
10695            }
10696            #[inline]
10697            fn tokenize(&self) -> Self::Token<'_> {
10698                (
10699                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10700                        &self.staker,
10701                    ),
10702                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10703                        &self.strategy,
10704                    ),
10705                    <alloy::sol_types::sol_data::Uint<
10706                        256,
10707                    > as alloy_sol_types::SolType>::tokenize(&self.prevDepositShares),
10708                    <alloy::sol_types::sol_data::Uint<
10709                        256,
10710                    > as alloy_sol_types::SolType>::tokenize(&self.addedShares),
10711                )
10712            }
10713            #[inline]
10714            fn abi_decode_returns(
10715                data: &[u8],
10716                validate: bool,
10717            ) -> alloy_sol_types::Result<Self::Return> {
10718                <Self::ReturnTuple<
10719                    '_,
10720                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10721                    .map(Into::into)
10722            }
10723        }
10724    };
10725    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10726    /**Function with signature `initialize(address,uint256)` and selector `0xcd6dc687`.
10727```solidity
10728function initialize(address initialOwner, uint256 initialPausedStatus) external;
10729```*/
10730    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10731    #[derive(Clone)]
10732    pub struct initializeCall {
10733        #[allow(missing_docs)]
10734        pub initialOwner: alloy::sol_types::private::Address,
10735        #[allow(missing_docs)]
10736        pub initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
10737    }
10738    ///Container type for the return parameters of the [`initialize(address,uint256)`](initializeCall) function.
10739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10740    #[derive(Clone)]
10741    pub struct initializeReturn {}
10742    #[allow(
10743        non_camel_case_types,
10744        non_snake_case,
10745        clippy::pub_underscore_fields,
10746        clippy::style
10747    )]
10748    const _: () = {
10749        use alloy::sol_types as alloy_sol_types;
10750        {
10751            #[doc(hidden)]
10752            type UnderlyingSolTuple<'a> = (
10753                alloy::sol_types::sol_data::Address,
10754                alloy::sol_types::sol_data::Uint<256>,
10755            );
10756            #[doc(hidden)]
10757            type UnderlyingRustTuple<'a> = (
10758                alloy::sol_types::private::Address,
10759                alloy::sol_types::private::primitives::aliases::U256,
10760            );
10761            #[cfg(test)]
10762            #[allow(dead_code, unreachable_patterns)]
10763            fn _type_assertion(
10764                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10765            ) {
10766                match _t {
10767                    alloy_sol_types::private::AssertTypeEq::<
10768                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10769                    >(_) => {}
10770                }
10771            }
10772            #[automatically_derived]
10773            #[doc(hidden)]
10774            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10775                fn from(value: initializeCall) -> Self {
10776                    (value.initialOwner, value.initialPausedStatus)
10777                }
10778            }
10779            #[automatically_derived]
10780            #[doc(hidden)]
10781            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10782                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10783                    Self {
10784                        initialOwner: tuple.0,
10785                        initialPausedStatus: tuple.1,
10786                    }
10787                }
10788            }
10789        }
10790        {
10791            #[doc(hidden)]
10792            type UnderlyingSolTuple<'a> = ();
10793            #[doc(hidden)]
10794            type UnderlyingRustTuple<'a> = ();
10795            #[cfg(test)]
10796            #[allow(dead_code, unreachable_patterns)]
10797            fn _type_assertion(
10798                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10799            ) {
10800                match _t {
10801                    alloy_sol_types::private::AssertTypeEq::<
10802                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10803                    >(_) => {}
10804                }
10805            }
10806            #[automatically_derived]
10807            #[doc(hidden)]
10808            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10809                fn from(value: initializeReturn) -> Self {
10810                    ()
10811                }
10812            }
10813            #[automatically_derived]
10814            #[doc(hidden)]
10815            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10816                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10817                    Self {}
10818                }
10819            }
10820        }
10821        #[automatically_derived]
10822        impl alloy_sol_types::SolCall for initializeCall {
10823            type Parameters<'a> = (
10824                alloy::sol_types::sol_data::Address,
10825                alloy::sol_types::sol_data::Uint<256>,
10826            );
10827            type Token<'a> = <Self::Parameters<
10828                'a,
10829            > as alloy_sol_types::SolType>::Token<'a>;
10830            type Return = initializeReturn;
10831            type ReturnTuple<'a> = ();
10832            type ReturnToken<'a> = <Self::ReturnTuple<
10833                'a,
10834            > as alloy_sol_types::SolType>::Token<'a>;
10835            const SIGNATURE: &'static str = "initialize(address,uint256)";
10836            const SELECTOR: [u8; 4] = [205u8, 109u8, 198u8, 135u8];
10837            #[inline]
10838            fn new<'a>(
10839                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10840            ) -> Self {
10841                tuple.into()
10842            }
10843            #[inline]
10844            fn tokenize(&self) -> Self::Token<'_> {
10845                (
10846                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10847                        &self.initialOwner,
10848                    ),
10849                    <alloy::sol_types::sol_data::Uint<
10850                        256,
10851                    > as alloy_sol_types::SolType>::tokenize(&self.initialPausedStatus),
10852                )
10853            }
10854            #[inline]
10855            fn abi_decode_returns(
10856                data: &[u8],
10857                validate: bool,
10858            ) -> alloy_sol_types::Result<Self::Return> {
10859                <Self::ReturnTuple<
10860                    '_,
10861                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10862                    .map(Into::into)
10863            }
10864        }
10865    };
10866    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10867    /**Function with signature `isDelegated(address)` and selector `0x3e28391d`.
10868```solidity
10869function isDelegated(address staker) external view returns (bool);
10870```*/
10871    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10872    #[derive(Clone)]
10873    pub struct isDelegatedCall {
10874        #[allow(missing_docs)]
10875        pub staker: alloy::sol_types::private::Address,
10876    }
10877    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10878    ///Container type for the return parameters of the [`isDelegated(address)`](isDelegatedCall) function.
10879    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10880    #[derive(Clone)]
10881    pub struct isDelegatedReturn {
10882        #[allow(missing_docs)]
10883        pub _0: bool,
10884    }
10885    #[allow(
10886        non_camel_case_types,
10887        non_snake_case,
10888        clippy::pub_underscore_fields,
10889        clippy::style
10890    )]
10891    const _: () = {
10892        use alloy::sol_types as alloy_sol_types;
10893        {
10894            #[doc(hidden)]
10895            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10896            #[doc(hidden)]
10897            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10898            #[cfg(test)]
10899            #[allow(dead_code, unreachable_patterns)]
10900            fn _type_assertion(
10901                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10902            ) {
10903                match _t {
10904                    alloy_sol_types::private::AssertTypeEq::<
10905                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10906                    >(_) => {}
10907                }
10908            }
10909            #[automatically_derived]
10910            #[doc(hidden)]
10911            impl ::core::convert::From<isDelegatedCall> for UnderlyingRustTuple<'_> {
10912                fn from(value: isDelegatedCall) -> Self {
10913                    (value.staker,)
10914                }
10915            }
10916            #[automatically_derived]
10917            #[doc(hidden)]
10918            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isDelegatedCall {
10919                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10920                    Self { staker: tuple.0 }
10921                }
10922            }
10923        }
10924        {
10925            #[doc(hidden)]
10926            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10927            #[doc(hidden)]
10928            type UnderlyingRustTuple<'a> = (bool,);
10929            #[cfg(test)]
10930            #[allow(dead_code, unreachable_patterns)]
10931            fn _type_assertion(
10932                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10933            ) {
10934                match _t {
10935                    alloy_sol_types::private::AssertTypeEq::<
10936                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10937                    >(_) => {}
10938                }
10939            }
10940            #[automatically_derived]
10941            #[doc(hidden)]
10942            impl ::core::convert::From<isDelegatedReturn> for UnderlyingRustTuple<'_> {
10943                fn from(value: isDelegatedReturn) -> Self {
10944                    (value._0,)
10945                }
10946            }
10947            #[automatically_derived]
10948            #[doc(hidden)]
10949            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isDelegatedReturn {
10950                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10951                    Self { _0: tuple.0 }
10952                }
10953            }
10954        }
10955        #[automatically_derived]
10956        impl alloy_sol_types::SolCall for isDelegatedCall {
10957            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10958            type Token<'a> = <Self::Parameters<
10959                'a,
10960            > as alloy_sol_types::SolType>::Token<'a>;
10961            type Return = isDelegatedReturn;
10962            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10963            type ReturnToken<'a> = <Self::ReturnTuple<
10964                'a,
10965            > as alloy_sol_types::SolType>::Token<'a>;
10966            const SIGNATURE: &'static str = "isDelegated(address)";
10967            const SELECTOR: [u8; 4] = [62u8, 40u8, 57u8, 29u8];
10968            #[inline]
10969            fn new<'a>(
10970                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10971            ) -> Self {
10972                tuple.into()
10973            }
10974            #[inline]
10975            fn tokenize(&self) -> Self::Token<'_> {
10976                (
10977                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10978                        &self.staker,
10979                    ),
10980                )
10981            }
10982            #[inline]
10983            fn abi_decode_returns(
10984                data: &[u8],
10985                validate: bool,
10986            ) -> alloy_sol_types::Result<Self::Return> {
10987                <Self::ReturnTuple<
10988                    '_,
10989                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10990                    .map(Into::into)
10991            }
10992        }
10993    };
10994    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10995    /**Function with signature `isOperator(address)` and selector `0x6d70f7ae`.
10996```solidity
10997function isOperator(address operator) external view returns (bool);
10998```*/
10999    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11000    #[derive(Clone)]
11001    pub struct isOperatorCall {
11002        #[allow(missing_docs)]
11003        pub operator: alloy::sol_types::private::Address,
11004    }
11005    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11006    ///Container type for the return parameters of the [`isOperator(address)`](isOperatorCall) function.
11007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11008    #[derive(Clone)]
11009    pub struct isOperatorReturn {
11010        #[allow(missing_docs)]
11011        pub _0: bool,
11012    }
11013    #[allow(
11014        non_camel_case_types,
11015        non_snake_case,
11016        clippy::pub_underscore_fields,
11017        clippy::style
11018    )]
11019    const _: () = {
11020        use alloy::sol_types as alloy_sol_types;
11021        {
11022            #[doc(hidden)]
11023            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11024            #[doc(hidden)]
11025            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11026            #[cfg(test)]
11027            #[allow(dead_code, unreachable_patterns)]
11028            fn _type_assertion(
11029                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11030            ) {
11031                match _t {
11032                    alloy_sol_types::private::AssertTypeEq::<
11033                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11034                    >(_) => {}
11035                }
11036            }
11037            #[automatically_derived]
11038            #[doc(hidden)]
11039            impl ::core::convert::From<isOperatorCall> for UnderlyingRustTuple<'_> {
11040                fn from(value: isOperatorCall) -> Self {
11041                    (value.operator,)
11042                }
11043            }
11044            #[automatically_derived]
11045            #[doc(hidden)]
11046            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperatorCall {
11047                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11048                    Self { operator: tuple.0 }
11049                }
11050            }
11051        }
11052        {
11053            #[doc(hidden)]
11054            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11055            #[doc(hidden)]
11056            type UnderlyingRustTuple<'a> = (bool,);
11057            #[cfg(test)]
11058            #[allow(dead_code, unreachable_patterns)]
11059            fn _type_assertion(
11060                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11061            ) {
11062                match _t {
11063                    alloy_sol_types::private::AssertTypeEq::<
11064                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11065                    >(_) => {}
11066                }
11067            }
11068            #[automatically_derived]
11069            #[doc(hidden)]
11070            impl ::core::convert::From<isOperatorReturn> for UnderlyingRustTuple<'_> {
11071                fn from(value: isOperatorReturn) -> Self {
11072                    (value._0,)
11073                }
11074            }
11075            #[automatically_derived]
11076            #[doc(hidden)]
11077            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperatorReturn {
11078                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11079                    Self { _0: tuple.0 }
11080                }
11081            }
11082        }
11083        #[automatically_derived]
11084        impl alloy_sol_types::SolCall for isOperatorCall {
11085            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11086            type Token<'a> = <Self::Parameters<
11087                'a,
11088            > as alloy_sol_types::SolType>::Token<'a>;
11089            type Return = isOperatorReturn;
11090            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11091            type ReturnToken<'a> = <Self::ReturnTuple<
11092                'a,
11093            > as alloy_sol_types::SolType>::Token<'a>;
11094            const SIGNATURE: &'static str = "isOperator(address)";
11095            const SELECTOR: [u8; 4] = [109u8, 112u8, 247u8, 174u8];
11096            #[inline]
11097            fn new<'a>(
11098                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11099            ) -> Self {
11100                tuple.into()
11101            }
11102            #[inline]
11103            fn tokenize(&self) -> Self::Token<'_> {
11104                (
11105                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11106                        &self.operator,
11107                    ),
11108                )
11109            }
11110            #[inline]
11111            fn abi_decode_returns(
11112                data: &[u8],
11113                validate: bool,
11114            ) -> alloy_sol_types::Result<Self::Return> {
11115                <Self::ReturnTuple<
11116                    '_,
11117                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11118                    .map(Into::into)
11119            }
11120        }
11121    };
11122    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11123    /**Function with signature `minWithdrawalDelayBlocks()` and selector `0xc448feb8`.
11124```solidity
11125function minWithdrawalDelayBlocks() external view returns (uint32);
11126```*/
11127    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11128    #[derive(Clone)]
11129    pub struct minWithdrawalDelayBlocksCall {}
11130    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11131    ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function.
11132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11133    #[derive(Clone)]
11134    pub struct minWithdrawalDelayBlocksReturn {
11135        #[allow(missing_docs)]
11136        pub _0: u32,
11137    }
11138    #[allow(
11139        non_camel_case_types,
11140        non_snake_case,
11141        clippy::pub_underscore_fields,
11142        clippy::style
11143    )]
11144    const _: () = {
11145        use alloy::sol_types as alloy_sol_types;
11146        {
11147            #[doc(hidden)]
11148            type UnderlyingSolTuple<'a> = ();
11149            #[doc(hidden)]
11150            type UnderlyingRustTuple<'a> = ();
11151            #[cfg(test)]
11152            #[allow(dead_code, unreachable_patterns)]
11153            fn _type_assertion(
11154                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11155            ) {
11156                match _t {
11157                    alloy_sol_types::private::AssertTypeEq::<
11158                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11159                    >(_) => {}
11160                }
11161            }
11162            #[automatically_derived]
11163            #[doc(hidden)]
11164            impl ::core::convert::From<minWithdrawalDelayBlocksCall>
11165            for UnderlyingRustTuple<'_> {
11166                fn from(value: minWithdrawalDelayBlocksCall) -> Self {
11167                    ()
11168                }
11169            }
11170            #[automatically_derived]
11171            #[doc(hidden)]
11172            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11173            for minWithdrawalDelayBlocksCall {
11174                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11175                    Self {}
11176                }
11177            }
11178        }
11179        {
11180            #[doc(hidden)]
11181            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11182            #[doc(hidden)]
11183            type UnderlyingRustTuple<'a> = (u32,);
11184            #[cfg(test)]
11185            #[allow(dead_code, unreachable_patterns)]
11186            fn _type_assertion(
11187                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11188            ) {
11189                match _t {
11190                    alloy_sol_types::private::AssertTypeEq::<
11191                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11192                    >(_) => {}
11193                }
11194            }
11195            #[automatically_derived]
11196            #[doc(hidden)]
11197            impl ::core::convert::From<minWithdrawalDelayBlocksReturn>
11198            for UnderlyingRustTuple<'_> {
11199                fn from(value: minWithdrawalDelayBlocksReturn) -> Self {
11200                    (value._0,)
11201                }
11202            }
11203            #[automatically_derived]
11204            #[doc(hidden)]
11205            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11206            for minWithdrawalDelayBlocksReturn {
11207                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11208                    Self { _0: tuple.0 }
11209                }
11210            }
11211        }
11212        #[automatically_derived]
11213        impl alloy_sol_types::SolCall for minWithdrawalDelayBlocksCall {
11214            type Parameters<'a> = ();
11215            type Token<'a> = <Self::Parameters<
11216                'a,
11217            > as alloy_sol_types::SolType>::Token<'a>;
11218            type Return = minWithdrawalDelayBlocksReturn;
11219            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11220            type ReturnToken<'a> = <Self::ReturnTuple<
11221                'a,
11222            > as alloy_sol_types::SolType>::Token<'a>;
11223            const SIGNATURE: &'static str = "minWithdrawalDelayBlocks()";
11224            const SELECTOR: [u8; 4] = [196u8, 72u8, 254u8, 184u8];
11225            #[inline]
11226            fn new<'a>(
11227                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11228            ) -> Self {
11229                tuple.into()
11230            }
11231            #[inline]
11232            fn tokenize(&self) -> Self::Token<'_> {
11233                ()
11234            }
11235            #[inline]
11236            fn abi_decode_returns(
11237                data: &[u8],
11238                validate: bool,
11239            ) -> alloy_sol_types::Result<Self::Return> {
11240                <Self::ReturnTuple<
11241                    '_,
11242                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11243                    .map(Into::into)
11244            }
11245        }
11246    };
11247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11248    /**Function with signature `modifyOperatorDetails(address,address)` and selector `0x54b7c96c`.
11249```solidity
11250function modifyOperatorDetails(address operator, address newDelegationApprover) external;
11251```*/
11252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11253    #[derive(Clone)]
11254    pub struct modifyOperatorDetailsCall {
11255        #[allow(missing_docs)]
11256        pub operator: alloy::sol_types::private::Address,
11257        #[allow(missing_docs)]
11258        pub newDelegationApprover: alloy::sol_types::private::Address,
11259    }
11260    ///Container type for the return parameters of the [`modifyOperatorDetails(address,address)`](modifyOperatorDetailsCall) function.
11261    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11262    #[derive(Clone)]
11263    pub struct modifyOperatorDetailsReturn {}
11264    #[allow(
11265        non_camel_case_types,
11266        non_snake_case,
11267        clippy::pub_underscore_fields,
11268        clippy::style
11269    )]
11270    const _: () = {
11271        use alloy::sol_types as alloy_sol_types;
11272        {
11273            #[doc(hidden)]
11274            type UnderlyingSolTuple<'a> = (
11275                alloy::sol_types::sol_data::Address,
11276                alloy::sol_types::sol_data::Address,
11277            );
11278            #[doc(hidden)]
11279            type UnderlyingRustTuple<'a> = (
11280                alloy::sol_types::private::Address,
11281                alloy::sol_types::private::Address,
11282            );
11283            #[cfg(test)]
11284            #[allow(dead_code, unreachable_patterns)]
11285            fn _type_assertion(
11286                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11287            ) {
11288                match _t {
11289                    alloy_sol_types::private::AssertTypeEq::<
11290                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11291                    >(_) => {}
11292                }
11293            }
11294            #[automatically_derived]
11295            #[doc(hidden)]
11296            impl ::core::convert::From<modifyOperatorDetailsCall>
11297            for UnderlyingRustTuple<'_> {
11298                fn from(value: modifyOperatorDetailsCall) -> Self {
11299                    (value.operator, value.newDelegationApprover)
11300                }
11301            }
11302            #[automatically_derived]
11303            #[doc(hidden)]
11304            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11305            for modifyOperatorDetailsCall {
11306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11307                    Self {
11308                        operator: tuple.0,
11309                        newDelegationApprover: tuple.1,
11310                    }
11311                }
11312            }
11313        }
11314        {
11315            #[doc(hidden)]
11316            type UnderlyingSolTuple<'a> = ();
11317            #[doc(hidden)]
11318            type UnderlyingRustTuple<'a> = ();
11319            #[cfg(test)]
11320            #[allow(dead_code, unreachable_patterns)]
11321            fn _type_assertion(
11322                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11323            ) {
11324                match _t {
11325                    alloy_sol_types::private::AssertTypeEq::<
11326                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11327                    >(_) => {}
11328                }
11329            }
11330            #[automatically_derived]
11331            #[doc(hidden)]
11332            impl ::core::convert::From<modifyOperatorDetailsReturn>
11333            for UnderlyingRustTuple<'_> {
11334                fn from(value: modifyOperatorDetailsReturn) -> Self {
11335                    ()
11336                }
11337            }
11338            #[automatically_derived]
11339            #[doc(hidden)]
11340            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11341            for modifyOperatorDetailsReturn {
11342                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11343                    Self {}
11344                }
11345            }
11346        }
11347        #[automatically_derived]
11348        impl alloy_sol_types::SolCall for modifyOperatorDetailsCall {
11349            type Parameters<'a> = (
11350                alloy::sol_types::sol_data::Address,
11351                alloy::sol_types::sol_data::Address,
11352            );
11353            type Token<'a> = <Self::Parameters<
11354                'a,
11355            > as alloy_sol_types::SolType>::Token<'a>;
11356            type Return = modifyOperatorDetailsReturn;
11357            type ReturnTuple<'a> = ();
11358            type ReturnToken<'a> = <Self::ReturnTuple<
11359                'a,
11360            > as alloy_sol_types::SolType>::Token<'a>;
11361            const SIGNATURE: &'static str = "modifyOperatorDetails(address,address)";
11362            const SELECTOR: [u8; 4] = [84u8, 183u8, 201u8, 108u8];
11363            #[inline]
11364            fn new<'a>(
11365                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11366            ) -> Self {
11367                tuple.into()
11368            }
11369            #[inline]
11370            fn tokenize(&self) -> Self::Token<'_> {
11371                (
11372                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11373                        &self.operator,
11374                    ),
11375                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11376                        &self.newDelegationApprover,
11377                    ),
11378                )
11379            }
11380            #[inline]
11381            fn abi_decode_returns(
11382                data: &[u8],
11383                validate: bool,
11384            ) -> alloy_sol_types::Result<Self::Return> {
11385                <Self::ReturnTuple<
11386                    '_,
11387                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11388                    .map(Into::into)
11389            }
11390        }
11391    };
11392    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11393    /**Function with signature `operatorShares(address,address)` and selector `0x778e55f3`.
11394```solidity
11395function operatorShares(address operator, address strategy) external view returns (uint256 shares);
11396```*/
11397    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11398    #[derive(Clone)]
11399    pub struct operatorSharesCall {
11400        #[allow(missing_docs)]
11401        pub operator: alloy::sol_types::private::Address,
11402        #[allow(missing_docs)]
11403        pub strategy: alloy::sol_types::private::Address,
11404    }
11405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11406    ///Container type for the return parameters of the [`operatorShares(address,address)`](operatorSharesCall) function.
11407    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11408    #[derive(Clone)]
11409    pub struct operatorSharesReturn {
11410        #[allow(missing_docs)]
11411        pub shares: alloy::sol_types::private::primitives::aliases::U256,
11412    }
11413    #[allow(
11414        non_camel_case_types,
11415        non_snake_case,
11416        clippy::pub_underscore_fields,
11417        clippy::style
11418    )]
11419    const _: () = {
11420        use alloy::sol_types as alloy_sol_types;
11421        {
11422            #[doc(hidden)]
11423            type UnderlyingSolTuple<'a> = (
11424                alloy::sol_types::sol_data::Address,
11425                alloy::sol_types::sol_data::Address,
11426            );
11427            #[doc(hidden)]
11428            type UnderlyingRustTuple<'a> = (
11429                alloy::sol_types::private::Address,
11430                alloy::sol_types::private::Address,
11431            );
11432            #[cfg(test)]
11433            #[allow(dead_code, unreachable_patterns)]
11434            fn _type_assertion(
11435                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11436            ) {
11437                match _t {
11438                    alloy_sol_types::private::AssertTypeEq::<
11439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11440                    >(_) => {}
11441                }
11442            }
11443            #[automatically_derived]
11444            #[doc(hidden)]
11445            impl ::core::convert::From<operatorSharesCall> for UnderlyingRustTuple<'_> {
11446                fn from(value: operatorSharesCall) -> Self {
11447                    (value.operator, value.strategy)
11448                }
11449            }
11450            #[automatically_derived]
11451            #[doc(hidden)]
11452            impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorSharesCall {
11453                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11454                    Self {
11455                        operator: tuple.0,
11456                        strategy: tuple.1,
11457                    }
11458                }
11459            }
11460        }
11461        {
11462            #[doc(hidden)]
11463            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11464            #[doc(hidden)]
11465            type UnderlyingRustTuple<'a> = (
11466                alloy::sol_types::private::primitives::aliases::U256,
11467            );
11468            #[cfg(test)]
11469            #[allow(dead_code, unreachable_patterns)]
11470            fn _type_assertion(
11471                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11472            ) {
11473                match _t {
11474                    alloy_sol_types::private::AssertTypeEq::<
11475                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11476                    >(_) => {}
11477                }
11478            }
11479            #[automatically_derived]
11480            #[doc(hidden)]
11481            impl ::core::convert::From<operatorSharesReturn>
11482            for UnderlyingRustTuple<'_> {
11483                fn from(value: operatorSharesReturn) -> Self {
11484                    (value.shares,)
11485                }
11486            }
11487            #[automatically_derived]
11488            #[doc(hidden)]
11489            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11490            for operatorSharesReturn {
11491                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11492                    Self { shares: tuple.0 }
11493                }
11494            }
11495        }
11496        #[automatically_derived]
11497        impl alloy_sol_types::SolCall for operatorSharesCall {
11498            type Parameters<'a> = (
11499                alloy::sol_types::sol_data::Address,
11500                alloy::sol_types::sol_data::Address,
11501            );
11502            type Token<'a> = <Self::Parameters<
11503                'a,
11504            > as alloy_sol_types::SolType>::Token<'a>;
11505            type Return = operatorSharesReturn;
11506            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11507            type ReturnToken<'a> = <Self::ReturnTuple<
11508                'a,
11509            > as alloy_sol_types::SolType>::Token<'a>;
11510            const SIGNATURE: &'static str = "operatorShares(address,address)";
11511            const SELECTOR: [u8; 4] = [119u8, 142u8, 85u8, 243u8];
11512            #[inline]
11513            fn new<'a>(
11514                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11515            ) -> Self {
11516                tuple.into()
11517            }
11518            #[inline]
11519            fn tokenize(&self) -> Self::Token<'_> {
11520                (
11521                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11522                        &self.operator,
11523                    ),
11524                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11525                        &self.strategy,
11526                    ),
11527                )
11528            }
11529            #[inline]
11530            fn abi_decode_returns(
11531                data: &[u8],
11532                validate: bool,
11533            ) -> alloy_sol_types::Result<Self::Return> {
11534                <Self::ReturnTuple<
11535                    '_,
11536                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11537                    .map(Into::into)
11538            }
11539        }
11540    };
11541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11542    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11543```solidity
11544function owner() external view returns (address);
11545```*/
11546    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11547    #[derive(Clone)]
11548    pub struct ownerCall {}
11549    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11550    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11552    #[derive(Clone)]
11553    pub struct ownerReturn {
11554        #[allow(missing_docs)]
11555        pub _0: alloy::sol_types::private::Address,
11556    }
11557    #[allow(
11558        non_camel_case_types,
11559        non_snake_case,
11560        clippy::pub_underscore_fields,
11561        clippy::style
11562    )]
11563    const _: () = {
11564        use alloy::sol_types as alloy_sol_types;
11565        {
11566            #[doc(hidden)]
11567            type UnderlyingSolTuple<'a> = ();
11568            #[doc(hidden)]
11569            type UnderlyingRustTuple<'a> = ();
11570            #[cfg(test)]
11571            #[allow(dead_code, unreachable_patterns)]
11572            fn _type_assertion(
11573                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11574            ) {
11575                match _t {
11576                    alloy_sol_types::private::AssertTypeEq::<
11577                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11578                    >(_) => {}
11579                }
11580            }
11581            #[automatically_derived]
11582            #[doc(hidden)]
11583            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11584                fn from(value: ownerCall) -> Self {
11585                    ()
11586                }
11587            }
11588            #[automatically_derived]
11589            #[doc(hidden)]
11590            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11591                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11592                    Self {}
11593                }
11594            }
11595        }
11596        {
11597            #[doc(hidden)]
11598            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11599            #[doc(hidden)]
11600            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11601            #[cfg(test)]
11602            #[allow(dead_code, unreachable_patterns)]
11603            fn _type_assertion(
11604                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11605            ) {
11606                match _t {
11607                    alloy_sol_types::private::AssertTypeEq::<
11608                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11609                    >(_) => {}
11610                }
11611            }
11612            #[automatically_derived]
11613            #[doc(hidden)]
11614            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11615                fn from(value: ownerReturn) -> Self {
11616                    (value._0,)
11617                }
11618            }
11619            #[automatically_derived]
11620            #[doc(hidden)]
11621            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11622                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11623                    Self { _0: tuple.0 }
11624                }
11625            }
11626        }
11627        #[automatically_derived]
11628        impl alloy_sol_types::SolCall for ownerCall {
11629            type Parameters<'a> = ();
11630            type Token<'a> = <Self::Parameters<
11631                'a,
11632            > as alloy_sol_types::SolType>::Token<'a>;
11633            type Return = ownerReturn;
11634            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11635            type ReturnToken<'a> = <Self::ReturnTuple<
11636                'a,
11637            > as alloy_sol_types::SolType>::Token<'a>;
11638            const SIGNATURE: &'static str = "owner()";
11639            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11640            #[inline]
11641            fn new<'a>(
11642                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11643            ) -> Self {
11644                tuple.into()
11645            }
11646            #[inline]
11647            fn tokenize(&self) -> Self::Token<'_> {
11648                ()
11649            }
11650            #[inline]
11651            fn abi_decode_returns(
11652                data: &[u8],
11653                validate: bool,
11654            ) -> alloy_sol_types::Result<Self::Return> {
11655                <Self::ReturnTuple<
11656                    '_,
11657                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11658                    .map(Into::into)
11659            }
11660        }
11661    };
11662    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11663    /**Function with signature `pause(uint256)` and selector `0x136439dd`.
11664```solidity
11665function pause(uint256 newPausedStatus) external;
11666```*/
11667    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11668    #[derive(Clone)]
11669    pub struct pauseCall {
11670        #[allow(missing_docs)]
11671        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
11672    }
11673    ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function.
11674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11675    #[derive(Clone)]
11676    pub struct pauseReturn {}
11677    #[allow(
11678        non_camel_case_types,
11679        non_snake_case,
11680        clippy::pub_underscore_fields,
11681        clippy::style
11682    )]
11683    const _: () = {
11684        use alloy::sol_types as alloy_sol_types;
11685        {
11686            #[doc(hidden)]
11687            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11688            #[doc(hidden)]
11689            type UnderlyingRustTuple<'a> = (
11690                alloy::sol_types::private::primitives::aliases::U256,
11691            );
11692            #[cfg(test)]
11693            #[allow(dead_code, unreachable_patterns)]
11694            fn _type_assertion(
11695                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11696            ) {
11697                match _t {
11698                    alloy_sol_types::private::AssertTypeEq::<
11699                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11700                    >(_) => {}
11701                }
11702            }
11703            #[automatically_derived]
11704            #[doc(hidden)]
11705            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
11706                fn from(value: pauseCall) -> Self {
11707                    (value.newPausedStatus,)
11708                }
11709            }
11710            #[automatically_derived]
11711            #[doc(hidden)]
11712            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
11713                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11714                    Self { newPausedStatus: tuple.0 }
11715                }
11716            }
11717        }
11718        {
11719            #[doc(hidden)]
11720            type UnderlyingSolTuple<'a> = ();
11721            #[doc(hidden)]
11722            type UnderlyingRustTuple<'a> = ();
11723            #[cfg(test)]
11724            #[allow(dead_code, unreachable_patterns)]
11725            fn _type_assertion(
11726                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11727            ) {
11728                match _t {
11729                    alloy_sol_types::private::AssertTypeEq::<
11730                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11731                    >(_) => {}
11732                }
11733            }
11734            #[automatically_derived]
11735            #[doc(hidden)]
11736            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
11737                fn from(value: pauseReturn) -> Self {
11738                    ()
11739                }
11740            }
11741            #[automatically_derived]
11742            #[doc(hidden)]
11743            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
11744                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11745                    Self {}
11746                }
11747            }
11748        }
11749        #[automatically_derived]
11750        impl alloy_sol_types::SolCall for pauseCall {
11751            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11752            type Token<'a> = <Self::Parameters<
11753                'a,
11754            > as alloy_sol_types::SolType>::Token<'a>;
11755            type Return = pauseReturn;
11756            type ReturnTuple<'a> = ();
11757            type ReturnToken<'a> = <Self::ReturnTuple<
11758                'a,
11759            > as alloy_sol_types::SolType>::Token<'a>;
11760            const SIGNATURE: &'static str = "pause(uint256)";
11761            const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8];
11762            #[inline]
11763            fn new<'a>(
11764                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11765            ) -> Self {
11766                tuple.into()
11767            }
11768            #[inline]
11769            fn tokenize(&self) -> Self::Token<'_> {
11770                (
11771                    <alloy::sol_types::sol_data::Uint<
11772                        256,
11773                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
11774                )
11775            }
11776            #[inline]
11777            fn abi_decode_returns(
11778                data: &[u8],
11779                validate: bool,
11780            ) -> alloy_sol_types::Result<Self::Return> {
11781                <Self::ReturnTuple<
11782                    '_,
11783                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11784                    .map(Into::into)
11785            }
11786        }
11787    };
11788    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11789    /**Function with signature `pauseAll()` and selector `0x595c6a67`.
11790```solidity
11791function pauseAll() external;
11792```*/
11793    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11794    #[derive(Clone)]
11795    pub struct pauseAllCall {}
11796    ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function.
11797    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11798    #[derive(Clone)]
11799    pub struct pauseAllReturn {}
11800    #[allow(
11801        non_camel_case_types,
11802        non_snake_case,
11803        clippy::pub_underscore_fields,
11804        clippy::style
11805    )]
11806    const _: () = {
11807        use alloy::sol_types as alloy_sol_types;
11808        {
11809            #[doc(hidden)]
11810            type UnderlyingSolTuple<'a> = ();
11811            #[doc(hidden)]
11812            type UnderlyingRustTuple<'a> = ();
11813            #[cfg(test)]
11814            #[allow(dead_code, unreachable_patterns)]
11815            fn _type_assertion(
11816                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11817            ) {
11818                match _t {
11819                    alloy_sol_types::private::AssertTypeEq::<
11820                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11821                    >(_) => {}
11822                }
11823            }
11824            #[automatically_derived]
11825            #[doc(hidden)]
11826            impl ::core::convert::From<pauseAllCall> for UnderlyingRustTuple<'_> {
11827                fn from(value: pauseAllCall) -> Self {
11828                    ()
11829                }
11830            }
11831            #[automatically_derived]
11832            #[doc(hidden)]
11833            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllCall {
11834                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11835                    Self {}
11836                }
11837            }
11838        }
11839        {
11840            #[doc(hidden)]
11841            type UnderlyingSolTuple<'a> = ();
11842            #[doc(hidden)]
11843            type UnderlyingRustTuple<'a> = ();
11844            #[cfg(test)]
11845            #[allow(dead_code, unreachable_patterns)]
11846            fn _type_assertion(
11847                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11848            ) {
11849                match _t {
11850                    alloy_sol_types::private::AssertTypeEq::<
11851                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11852                    >(_) => {}
11853                }
11854            }
11855            #[automatically_derived]
11856            #[doc(hidden)]
11857            impl ::core::convert::From<pauseAllReturn> for UnderlyingRustTuple<'_> {
11858                fn from(value: pauseAllReturn) -> Self {
11859                    ()
11860                }
11861            }
11862            #[automatically_derived]
11863            #[doc(hidden)]
11864            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllReturn {
11865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11866                    Self {}
11867                }
11868            }
11869        }
11870        #[automatically_derived]
11871        impl alloy_sol_types::SolCall for pauseAllCall {
11872            type Parameters<'a> = ();
11873            type Token<'a> = <Self::Parameters<
11874                'a,
11875            > as alloy_sol_types::SolType>::Token<'a>;
11876            type Return = pauseAllReturn;
11877            type ReturnTuple<'a> = ();
11878            type ReturnToken<'a> = <Self::ReturnTuple<
11879                'a,
11880            > as alloy_sol_types::SolType>::Token<'a>;
11881            const SIGNATURE: &'static str = "pauseAll()";
11882            const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8];
11883            #[inline]
11884            fn new<'a>(
11885                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11886            ) -> Self {
11887                tuple.into()
11888            }
11889            #[inline]
11890            fn tokenize(&self) -> Self::Token<'_> {
11891                ()
11892            }
11893            #[inline]
11894            fn abi_decode_returns(
11895                data: &[u8],
11896                validate: bool,
11897            ) -> alloy_sol_types::Result<Self::Return> {
11898                <Self::ReturnTuple<
11899                    '_,
11900                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11901                    .map(Into::into)
11902            }
11903        }
11904    };
11905    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11906    /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`.
11907```solidity
11908function paused(uint8 index) external view returns (bool);
11909```*/
11910    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11911    #[derive(Clone)]
11912    pub struct paused_0Call {
11913        #[allow(missing_docs)]
11914        pub index: u8,
11915    }
11916    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11917    ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function.
11918    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11919    #[derive(Clone)]
11920    pub struct paused_0Return {
11921        #[allow(missing_docs)]
11922        pub _0: bool,
11923    }
11924    #[allow(
11925        non_camel_case_types,
11926        non_snake_case,
11927        clippy::pub_underscore_fields,
11928        clippy::style
11929    )]
11930    const _: () = {
11931        use alloy::sol_types as alloy_sol_types;
11932        {
11933            #[doc(hidden)]
11934            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
11935            #[doc(hidden)]
11936            type UnderlyingRustTuple<'a> = (u8,);
11937            #[cfg(test)]
11938            #[allow(dead_code, unreachable_patterns)]
11939            fn _type_assertion(
11940                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11941            ) {
11942                match _t {
11943                    alloy_sol_types::private::AssertTypeEq::<
11944                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11945                    >(_) => {}
11946                }
11947            }
11948            #[automatically_derived]
11949            #[doc(hidden)]
11950            impl ::core::convert::From<paused_0Call> for UnderlyingRustTuple<'_> {
11951                fn from(value: paused_0Call) -> Self {
11952                    (value.index,)
11953                }
11954            }
11955            #[automatically_derived]
11956            #[doc(hidden)]
11957            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Call {
11958                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11959                    Self { index: tuple.0 }
11960                }
11961            }
11962        }
11963        {
11964            #[doc(hidden)]
11965            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11966            #[doc(hidden)]
11967            type UnderlyingRustTuple<'a> = (bool,);
11968            #[cfg(test)]
11969            #[allow(dead_code, unreachable_patterns)]
11970            fn _type_assertion(
11971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11972            ) {
11973                match _t {
11974                    alloy_sol_types::private::AssertTypeEq::<
11975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11976                    >(_) => {}
11977                }
11978            }
11979            #[automatically_derived]
11980            #[doc(hidden)]
11981            impl ::core::convert::From<paused_0Return> for UnderlyingRustTuple<'_> {
11982                fn from(value: paused_0Return) -> Self {
11983                    (value._0,)
11984                }
11985            }
11986            #[automatically_derived]
11987            #[doc(hidden)]
11988            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Return {
11989                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11990                    Self { _0: tuple.0 }
11991                }
11992            }
11993        }
11994        #[automatically_derived]
11995        impl alloy_sol_types::SolCall for paused_0Call {
11996            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
11997            type Token<'a> = <Self::Parameters<
11998                'a,
11999            > as alloy_sol_types::SolType>::Token<'a>;
12000            type Return = paused_0Return;
12001            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12002            type ReturnToken<'a> = <Self::ReturnTuple<
12003                'a,
12004            > as alloy_sol_types::SolType>::Token<'a>;
12005            const SIGNATURE: &'static str = "paused(uint8)";
12006            const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8];
12007            #[inline]
12008            fn new<'a>(
12009                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12010            ) -> Self {
12011                tuple.into()
12012            }
12013            #[inline]
12014            fn tokenize(&self) -> Self::Token<'_> {
12015                (
12016                    <alloy::sol_types::sol_data::Uint<
12017                        8,
12018                    > as alloy_sol_types::SolType>::tokenize(&self.index),
12019                )
12020            }
12021            #[inline]
12022            fn abi_decode_returns(
12023                data: &[u8],
12024                validate: bool,
12025            ) -> alloy_sol_types::Result<Self::Return> {
12026                <Self::ReturnTuple<
12027                    '_,
12028                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12029                    .map(Into::into)
12030            }
12031        }
12032    };
12033    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12034    /**Function with signature `paused()` and selector `0x5c975abb`.
12035```solidity
12036function paused() external view returns (uint256);
12037```*/
12038    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12039    #[derive(Clone)]
12040    pub struct paused_1Call {}
12041    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12042    ///Container type for the return parameters of the [`paused()`](paused_1Call) function.
12043    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12044    #[derive(Clone)]
12045    pub struct paused_1Return {
12046        #[allow(missing_docs)]
12047        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12048    }
12049    #[allow(
12050        non_camel_case_types,
12051        non_snake_case,
12052        clippy::pub_underscore_fields,
12053        clippy::style
12054    )]
12055    const _: () = {
12056        use alloy::sol_types as alloy_sol_types;
12057        {
12058            #[doc(hidden)]
12059            type UnderlyingSolTuple<'a> = ();
12060            #[doc(hidden)]
12061            type UnderlyingRustTuple<'a> = ();
12062            #[cfg(test)]
12063            #[allow(dead_code, unreachable_patterns)]
12064            fn _type_assertion(
12065                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12066            ) {
12067                match _t {
12068                    alloy_sol_types::private::AssertTypeEq::<
12069                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12070                    >(_) => {}
12071                }
12072            }
12073            #[automatically_derived]
12074            #[doc(hidden)]
12075            impl ::core::convert::From<paused_1Call> for UnderlyingRustTuple<'_> {
12076                fn from(value: paused_1Call) -> Self {
12077                    ()
12078                }
12079            }
12080            #[automatically_derived]
12081            #[doc(hidden)]
12082            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Call {
12083                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12084                    Self {}
12085                }
12086            }
12087        }
12088        {
12089            #[doc(hidden)]
12090            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12091            #[doc(hidden)]
12092            type UnderlyingRustTuple<'a> = (
12093                alloy::sol_types::private::primitives::aliases::U256,
12094            );
12095            #[cfg(test)]
12096            #[allow(dead_code, unreachable_patterns)]
12097            fn _type_assertion(
12098                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12099            ) {
12100                match _t {
12101                    alloy_sol_types::private::AssertTypeEq::<
12102                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12103                    >(_) => {}
12104                }
12105            }
12106            #[automatically_derived]
12107            #[doc(hidden)]
12108            impl ::core::convert::From<paused_1Return> for UnderlyingRustTuple<'_> {
12109                fn from(value: paused_1Return) -> Self {
12110                    (value._0,)
12111                }
12112            }
12113            #[automatically_derived]
12114            #[doc(hidden)]
12115            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Return {
12116                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12117                    Self { _0: tuple.0 }
12118                }
12119            }
12120        }
12121        #[automatically_derived]
12122        impl alloy_sol_types::SolCall for paused_1Call {
12123            type Parameters<'a> = ();
12124            type Token<'a> = <Self::Parameters<
12125                'a,
12126            > as alloy_sol_types::SolType>::Token<'a>;
12127            type Return = paused_1Return;
12128            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12129            type ReturnToken<'a> = <Self::ReturnTuple<
12130                'a,
12131            > as alloy_sol_types::SolType>::Token<'a>;
12132            const SIGNATURE: &'static str = "paused()";
12133            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
12134            #[inline]
12135            fn new<'a>(
12136                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12137            ) -> Self {
12138                tuple.into()
12139            }
12140            #[inline]
12141            fn tokenize(&self) -> Self::Token<'_> {
12142                ()
12143            }
12144            #[inline]
12145            fn abi_decode_returns(
12146                data: &[u8],
12147                validate: bool,
12148            ) -> alloy_sol_types::Result<Self::Return> {
12149                <Self::ReturnTuple<
12150                    '_,
12151                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12152                    .map(Into::into)
12153            }
12154        }
12155    };
12156    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12157    /**Function with signature `pauserRegistry()` and selector `0x886f1195`.
12158```solidity
12159function pauserRegistry() external view returns (address);
12160```*/
12161    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12162    #[derive(Clone)]
12163    pub struct pauserRegistryCall {}
12164    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12165    ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function.
12166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12167    #[derive(Clone)]
12168    pub struct pauserRegistryReturn {
12169        #[allow(missing_docs)]
12170        pub _0: alloy::sol_types::private::Address,
12171    }
12172    #[allow(
12173        non_camel_case_types,
12174        non_snake_case,
12175        clippy::pub_underscore_fields,
12176        clippy::style
12177    )]
12178    const _: () = {
12179        use alloy::sol_types as alloy_sol_types;
12180        {
12181            #[doc(hidden)]
12182            type UnderlyingSolTuple<'a> = ();
12183            #[doc(hidden)]
12184            type UnderlyingRustTuple<'a> = ();
12185            #[cfg(test)]
12186            #[allow(dead_code, unreachable_patterns)]
12187            fn _type_assertion(
12188                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12189            ) {
12190                match _t {
12191                    alloy_sol_types::private::AssertTypeEq::<
12192                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12193                    >(_) => {}
12194                }
12195            }
12196            #[automatically_derived]
12197            #[doc(hidden)]
12198            impl ::core::convert::From<pauserRegistryCall> for UnderlyingRustTuple<'_> {
12199                fn from(value: pauserRegistryCall) -> Self {
12200                    ()
12201                }
12202            }
12203            #[automatically_derived]
12204            #[doc(hidden)]
12205            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryCall {
12206                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12207                    Self {}
12208                }
12209            }
12210        }
12211        {
12212            #[doc(hidden)]
12213            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12214            #[doc(hidden)]
12215            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12216            #[cfg(test)]
12217            #[allow(dead_code, unreachable_patterns)]
12218            fn _type_assertion(
12219                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12220            ) {
12221                match _t {
12222                    alloy_sol_types::private::AssertTypeEq::<
12223                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12224                    >(_) => {}
12225                }
12226            }
12227            #[automatically_derived]
12228            #[doc(hidden)]
12229            impl ::core::convert::From<pauserRegistryReturn>
12230            for UnderlyingRustTuple<'_> {
12231                fn from(value: pauserRegistryReturn) -> Self {
12232                    (value._0,)
12233                }
12234            }
12235            #[automatically_derived]
12236            #[doc(hidden)]
12237            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12238            for pauserRegistryReturn {
12239                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12240                    Self { _0: tuple.0 }
12241                }
12242            }
12243        }
12244        #[automatically_derived]
12245        impl alloy_sol_types::SolCall for pauserRegistryCall {
12246            type Parameters<'a> = ();
12247            type Token<'a> = <Self::Parameters<
12248                'a,
12249            > as alloy_sol_types::SolType>::Token<'a>;
12250            type Return = pauserRegistryReturn;
12251            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12252            type ReturnToken<'a> = <Self::ReturnTuple<
12253                'a,
12254            > as alloy_sol_types::SolType>::Token<'a>;
12255            const SIGNATURE: &'static str = "pauserRegistry()";
12256            const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8];
12257            #[inline]
12258            fn new<'a>(
12259                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12260            ) -> Self {
12261                tuple.into()
12262            }
12263            #[inline]
12264            fn tokenize(&self) -> Self::Token<'_> {
12265                ()
12266            }
12267            #[inline]
12268            fn abi_decode_returns(
12269                data: &[u8],
12270                validate: bool,
12271            ) -> alloy_sol_types::Result<Self::Return> {
12272                <Self::ReturnTuple<
12273                    '_,
12274                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12275                    .map(Into::into)
12276            }
12277        }
12278    };
12279    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12280    /**Function with signature `pendingWithdrawals(bytes32)` and selector `0xb7f06ebe`.
12281```solidity
12282function pendingWithdrawals(bytes32 withdrawalRoot) external view returns (bool pending);
12283```*/
12284    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12285    #[derive(Clone)]
12286    pub struct pendingWithdrawalsCall {
12287        #[allow(missing_docs)]
12288        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
12289    }
12290    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12291    ///Container type for the return parameters of the [`pendingWithdrawals(bytes32)`](pendingWithdrawalsCall) function.
12292    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12293    #[derive(Clone)]
12294    pub struct pendingWithdrawalsReturn {
12295        #[allow(missing_docs)]
12296        pub pending: bool,
12297    }
12298    #[allow(
12299        non_camel_case_types,
12300        non_snake_case,
12301        clippy::pub_underscore_fields,
12302        clippy::style
12303    )]
12304    const _: () = {
12305        use alloy::sol_types as alloy_sol_types;
12306        {
12307            #[doc(hidden)]
12308            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12309            #[doc(hidden)]
12310            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12311            #[cfg(test)]
12312            #[allow(dead_code, unreachable_patterns)]
12313            fn _type_assertion(
12314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12315            ) {
12316                match _t {
12317                    alloy_sol_types::private::AssertTypeEq::<
12318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12319                    >(_) => {}
12320                }
12321            }
12322            #[automatically_derived]
12323            #[doc(hidden)]
12324            impl ::core::convert::From<pendingWithdrawalsCall>
12325            for UnderlyingRustTuple<'_> {
12326                fn from(value: pendingWithdrawalsCall) -> Self {
12327                    (value.withdrawalRoot,)
12328                }
12329            }
12330            #[automatically_derived]
12331            #[doc(hidden)]
12332            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12333            for pendingWithdrawalsCall {
12334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12335                    Self { withdrawalRoot: tuple.0 }
12336                }
12337            }
12338        }
12339        {
12340            #[doc(hidden)]
12341            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12342            #[doc(hidden)]
12343            type UnderlyingRustTuple<'a> = (bool,);
12344            #[cfg(test)]
12345            #[allow(dead_code, unreachable_patterns)]
12346            fn _type_assertion(
12347                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12348            ) {
12349                match _t {
12350                    alloy_sol_types::private::AssertTypeEq::<
12351                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12352                    >(_) => {}
12353                }
12354            }
12355            #[automatically_derived]
12356            #[doc(hidden)]
12357            impl ::core::convert::From<pendingWithdrawalsReturn>
12358            for UnderlyingRustTuple<'_> {
12359                fn from(value: pendingWithdrawalsReturn) -> Self {
12360                    (value.pending,)
12361                }
12362            }
12363            #[automatically_derived]
12364            #[doc(hidden)]
12365            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12366            for pendingWithdrawalsReturn {
12367                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12368                    Self { pending: tuple.0 }
12369                }
12370            }
12371        }
12372        #[automatically_derived]
12373        impl alloy_sol_types::SolCall for pendingWithdrawalsCall {
12374            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12375            type Token<'a> = <Self::Parameters<
12376                'a,
12377            > as alloy_sol_types::SolType>::Token<'a>;
12378            type Return = pendingWithdrawalsReturn;
12379            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12380            type ReturnToken<'a> = <Self::ReturnTuple<
12381                'a,
12382            > as alloy_sol_types::SolType>::Token<'a>;
12383            const SIGNATURE: &'static str = "pendingWithdrawals(bytes32)";
12384            const SELECTOR: [u8; 4] = [183u8, 240u8, 110u8, 190u8];
12385            #[inline]
12386            fn new<'a>(
12387                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12388            ) -> Self {
12389                tuple.into()
12390            }
12391            #[inline]
12392            fn tokenize(&self) -> Self::Token<'_> {
12393                (
12394                    <alloy::sol_types::sol_data::FixedBytes<
12395                        32,
12396                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
12397                )
12398            }
12399            #[inline]
12400            fn abi_decode_returns(
12401                data: &[u8],
12402                validate: bool,
12403            ) -> alloy_sol_types::Result<Self::Return> {
12404                <Self::ReturnTuple<
12405                    '_,
12406                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12407                    .map(Into::into)
12408            }
12409        }
12410    };
12411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12412    /**Function with signature `permissionController()` and selector `0x4657e26a`.
12413```solidity
12414function permissionController() external view returns (address);
12415```*/
12416    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12417    #[derive(Clone)]
12418    pub struct permissionControllerCall {}
12419    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12420    ///Container type for the return parameters of the [`permissionController()`](permissionControllerCall) function.
12421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12422    #[derive(Clone)]
12423    pub struct permissionControllerReturn {
12424        #[allow(missing_docs)]
12425        pub _0: alloy::sol_types::private::Address,
12426    }
12427    #[allow(
12428        non_camel_case_types,
12429        non_snake_case,
12430        clippy::pub_underscore_fields,
12431        clippy::style
12432    )]
12433    const _: () = {
12434        use alloy::sol_types as alloy_sol_types;
12435        {
12436            #[doc(hidden)]
12437            type UnderlyingSolTuple<'a> = ();
12438            #[doc(hidden)]
12439            type UnderlyingRustTuple<'a> = ();
12440            #[cfg(test)]
12441            #[allow(dead_code, unreachable_patterns)]
12442            fn _type_assertion(
12443                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12444            ) {
12445                match _t {
12446                    alloy_sol_types::private::AssertTypeEq::<
12447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12448                    >(_) => {}
12449                }
12450            }
12451            #[automatically_derived]
12452            #[doc(hidden)]
12453            impl ::core::convert::From<permissionControllerCall>
12454            for UnderlyingRustTuple<'_> {
12455                fn from(value: permissionControllerCall) -> Self {
12456                    ()
12457                }
12458            }
12459            #[automatically_derived]
12460            #[doc(hidden)]
12461            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12462            for permissionControllerCall {
12463                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12464                    Self {}
12465                }
12466            }
12467        }
12468        {
12469            #[doc(hidden)]
12470            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12471            #[doc(hidden)]
12472            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12473            #[cfg(test)]
12474            #[allow(dead_code, unreachable_patterns)]
12475            fn _type_assertion(
12476                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12477            ) {
12478                match _t {
12479                    alloy_sol_types::private::AssertTypeEq::<
12480                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12481                    >(_) => {}
12482                }
12483            }
12484            #[automatically_derived]
12485            #[doc(hidden)]
12486            impl ::core::convert::From<permissionControllerReturn>
12487            for UnderlyingRustTuple<'_> {
12488                fn from(value: permissionControllerReturn) -> Self {
12489                    (value._0,)
12490                }
12491            }
12492            #[automatically_derived]
12493            #[doc(hidden)]
12494            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12495            for permissionControllerReturn {
12496                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12497                    Self { _0: tuple.0 }
12498                }
12499            }
12500        }
12501        #[automatically_derived]
12502        impl alloy_sol_types::SolCall for permissionControllerCall {
12503            type Parameters<'a> = ();
12504            type Token<'a> = <Self::Parameters<
12505                'a,
12506            > as alloy_sol_types::SolType>::Token<'a>;
12507            type Return = permissionControllerReturn;
12508            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12509            type ReturnToken<'a> = <Self::ReturnTuple<
12510                'a,
12511            > as alloy_sol_types::SolType>::Token<'a>;
12512            const SIGNATURE: &'static str = "permissionController()";
12513            const SELECTOR: [u8; 4] = [70u8, 87u8, 226u8, 106u8];
12514            #[inline]
12515            fn new<'a>(
12516                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12517            ) -> Self {
12518                tuple.into()
12519            }
12520            #[inline]
12521            fn tokenize(&self) -> Self::Token<'_> {
12522                ()
12523            }
12524            #[inline]
12525            fn abi_decode_returns(
12526                data: &[u8],
12527                validate: bool,
12528            ) -> alloy_sol_types::Result<Self::Return> {
12529                <Self::ReturnTuple<
12530                    '_,
12531                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12532                    .map(Into::into)
12533            }
12534        }
12535    };
12536    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12537    /**Function with signature `queueWithdrawals((address[],uint256[],address)[])` and selector `0x0dd8dd02`.
12538```solidity
12539function queueWithdrawals(IDelegationManagerTypes.QueuedWithdrawalParams[] memory params) external returns (bytes32[] memory);
12540```*/
12541    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12542    #[derive(Clone)]
12543    pub struct queueWithdrawalsCall {
12544        #[allow(missing_docs)]
12545        pub params: alloy::sol_types::private::Vec<
12546            <IDelegationManagerTypes::QueuedWithdrawalParams as alloy::sol_types::SolType>::RustType,
12547        >,
12548    }
12549    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12550    ///Container type for the return parameters of the [`queueWithdrawals((address[],uint256[],address)[])`](queueWithdrawalsCall) function.
12551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12552    #[derive(Clone)]
12553    pub struct queueWithdrawalsReturn {
12554        #[allow(missing_docs)]
12555        pub _0: alloy::sol_types::private::Vec<
12556            alloy::sol_types::private::FixedBytes<32>,
12557        >,
12558    }
12559    #[allow(
12560        non_camel_case_types,
12561        non_snake_case,
12562        clippy::pub_underscore_fields,
12563        clippy::style
12564    )]
12565    const _: () = {
12566        use alloy::sol_types as alloy_sol_types;
12567        {
12568            #[doc(hidden)]
12569            type UnderlyingSolTuple<'a> = (
12570                alloy::sol_types::sol_data::Array<
12571                    IDelegationManagerTypes::QueuedWithdrawalParams,
12572                >,
12573            );
12574            #[doc(hidden)]
12575            type UnderlyingRustTuple<'a> = (
12576                alloy::sol_types::private::Vec<
12577                    <IDelegationManagerTypes::QueuedWithdrawalParams as alloy::sol_types::SolType>::RustType,
12578                >,
12579            );
12580            #[cfg(test)]
12581            #[allow(dead_code, unreachable_patterns)]
12582            fn _type_assertion(
12583                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12584            ) {
12585                match _t {
12586                    alloy_sol_types::private::AssertTypeEq::<
12587                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12588                    >(_) => {}
12589                }
12590            }
12591            #[automatically_derived]
12592            #[doc(hidden)]
12593            impl ::core::convert::From<queueWithdrawalsCall>
12594            for UnderlyingRustTuple<'_> {
12595                fn from(value: queueWithdrawalsCall) -> Self {
12596                    (value.params,)
12597                }
12598            }
12599            #[automatically_derived]
12600            #[doc(hidden)]
12601            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12602            for queueWithdrawalsCall {
12603                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12604                    Self { params: tuple.0 }
12605                }
12606            }
12607        }
12608        {
12609            #[doc(hidden)]
12610            type UnderlyingSolTuple<'a> = (
12611                alloy::sol_types::sol_data::Array<
12612                    alloy::sol_types::sol_data::FixedBytes<32>,
12613                >,
12614            );
12615            #[doc(hidden)]
12616            type UnderlyingRustTuple<'a> = (
12617                alloy::sol_types::private::Vec<
12618                    alloy::sol_types::private::FixedBytes<32>,
12619                >,
12620            );
12621            #[cfg(test)]
12622            #[allow(dead_code, unreachable_patterns)]
12623            fn _type_assertion(
12624                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12625            ) {
12626                match _t {
12627                    alloy_sol_types::private::AssertTypeEq::<
12628                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12629                    >(_) => {}
12630                }
12631            }
12632            #[automatically_derived]
12633            #[doc(hidden)]
12634            impl ::core::convert::From<queueWithdrawalsReturn>
12635            for UnderlyingRustTuple<'_> {
12636                fn from(value: queueWithdrawalsReturn) -> Self {
12637                    (value._0,)
12638                }
12639            }
12640            #[automatically_derived]
12641            #[doc(hidden)]
12642            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12643            for queueWithdrawalsReturn {
12644                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12645                    Self { _0: tuple.0 }
12646                }
12647            }
12648        }
12649        #[automatically_derived]
12650        impl alloy_sol_types::SolCall for queueWithdrawalsCall {
12651            type Parameters<'a> = (
12652                alloy::sol_types::sol_data::Array<
12653                    IDelegationManagerTypes::QueuedWithdrawalParams,
12654                >,
12655            );
12656            type Token<'a> = <Self::Parameters<
12657                'a,
12658            > as alloy_sol_types::SolType>::Token<'a>;
12659            type Return = queueWithdrawalsReturn;
12660            type ReturnTuple<'a> = (
12661                alloy::sol_types::sol_data::Array<
12662                    alloy::sol_types::sol_data::FixedBytes<32>,
12663                >,
12664            );
12665            type ReturnToken<'a> = <Self::ReturnTuple<
12666                'a,
12667            > as alloy_sol_types::SolType>::Token<'a>;
12668            const SIGNATURE: &'static str = "queueWithdrawals((address[],uint256[],address)[])";
12669            const SELECTOR: [u8; 4] = [13u8, 216u8, 221u8, 2u8];
12670            #[inline]
12671            fn new<'a>(
12672                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12673            ) -> Self {
12674                tuple.into()
12675            }
12676            #[inline]
12677            fn tokenize(&self) -> Self::Token<'_> {
12678                (
12679                    <alloy::sol_types::sol_data::Array<
12680                        IDelegationManagerTypes::QueuedWithdrawalParams,
12681                    > as alloy_sol_types::SolType>::tokenize(&self.params),
12682                )
12683            }
12684            #[inline]
12685            fn abi_decode_returns(
12686                data: &[u8],
12687                validate: bool,
12688            ) -> alloy_sol_types::Result<Self::Return> {
12689                <Self::ReturnTuple<
12690                    '_,
12691                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12692                    .map(Into::into)
12693            }
12694        }
12695    };
12696    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12697    /**Function with signature `queuedWithdrawals(bytes32)` and selector `0x99f5371b`.
12698```solidity
12699function queuedWithdrawals(bytes32 withdrawalRoot) external view returns (IDelegationManagerTypes.Withdrawal memory withdrawal);
12700```*/
12701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12702    #[derive(Clone)]
12703    pub struct queuedWithdrawalsCall {
12704        #[allow(missing_docs)]
12705        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
12706    }
12707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12708    ///Container type for the return parameters of the [`queuedWithdrawals(bytes32)`](queuedWithdrawalsCall) function.
12709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12710    #[derive(Clone)]
12711    pub struct queuedWithdrawalsReturn {
12712        #[allow(missing_docs)]
12713        pub withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
12714    }
12715    #[allow(
12716        non_camel_case_types,
12717        non_snake_case,
12718        clippy::pub_underscore_fields,
12719        clippy::style
12720    )]
12721    const _: () = {
12722        use alloy::sol_types as alloy_sol_types;
12723        {
12724            #[doc(hidden)]
12725            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12726            #[doc(hidden)]
12727            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12728            #[cfg(test)]
12729            #[allow(dead_code, unreachable_patterns)]
12730            fn _type_assertion(
12731                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12732            ) {
12733                match _t {
12734                    alloy_sol_types::private::AssertTypeEq::<
12735                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12736                    >(_) => {}
12737                }
12738            }
12739            #[automatically_derived]
12740            #[doc(hidden)]
12741            impl ::core::convert::From<queuedWithdrawalsCall>
12742            for UnderlyingRustTuple<'_> {
12743                fn from(value: queuedWithdrawalsCall) -> Self {
12744                    (value.withdrawalRoot,)
12745                }
12746            }
12747            #[automatically_derived]
12748            #[doc(hidden)]
12749            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12750            for queuedWithdrawalsCall {
12751                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12752                    Self { withdrawalRoot: tuple.0 }
12753                }
12754            }
12755        }
12756        {
12757            #[doc(hidden)]
12758            type UnderlyingSolTuple<'a> = (IDelegationManagerTypes::Withdrawal,);
12759            #[doc(hidden)]
12760            type UnderlyingRustTuple<'a> = (
12761                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
12762            );
12763            #[cfg(test)]
12764            #[allow(dead_code, unreachable_patterns)]
12765            fn _type_assertion(
12766                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12767            ) {
12768                match _t {
12769                    alloy_sol_types::private::AssertTypeEq::<
12770                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12771                    >(_) => {}
12772                }
12773            }
12774            #[automatically_derived]
12775            #[doc(hidden)]
12776            impl ::core::convert::From<queuedWithdrawalsReturn>
12777            for UnderlyingRustTuple<'_> {
12778                fn from(value: queuedWithdrawalsReturn) -> Self {
12779                    (value.withdrawal,)
12780                }
12781            }
12782            #[automatically_derived]
12783            #[doc(hidden)]
12784            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12785            for queuedWithdrawalsReturn {
12786                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12787                    Self { withdrawal: tuple.0 }
12788                }
12789            }
12790        }
12791        #[automatically_derived]
12792        impl alloy_sol_types::SolCall for queuedWithdrawalsCall {
12793            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12794            type Token<'a> = <Self::Parameters<
12795                'a,
12796            > as alloy_sol_types::SolType>::Token<'a>;
12797            type Return = queuedWithdrawalsReturn;
12798            type ReturnTuple<'a> = (IDelegationManagerTypes::Withdrawal,);
12799            type ReturnToken<'a> = <Self::ReturnTuple<
12800                'a,
12801            > as alloy_sol_types::SolType>::Token<'a>;
12802            const SIGNATURE: &'static str = "queuedWithdrawals(bytes32)";
12803            const SELECTOR: [u8; 4] = [153u8, 245u8, 55u8, 27u8];
12804            #[inline]
12805            fn new<'a>(
12806                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12807            ) -> Self {
12808                tuple.into()
12809            }
12810            #[inline]
12811            fn tokenize(&self) -> Self::Token<'_> {
12812                (
12813                    <alloy::sol_types::sol_data::FixedBytes<
12814                        32,
12815                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
12816                )
12817            }
12818            #[inline]
12819            fn abi_decode_returns(
12820                data: &[u8],
12821                validate: bool,
12822            ) -> alloy_sol_types::Result<Self::Return> {
12823                <Self::ReturnTuple<
12824                    '_,
12825                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12826                    .map(Into::into)
12827            }
12828        }
12829    };
12830    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12831    /**Function with signature `redelegate(address,(bytes,uint256),bytes32)` and selector `0xa33a3433`.
12832```solidity
12833function redelegate(address newOperator, ISignatureUtilsMixinTypes.SignatureWithExpiry memory newOperatorApproverSig, bytes32 approverSalt) external returns (bytes32[] memory withdrawalRoots);
12834```*/
12835    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12836    #[derive(Clone)]
12837    pub struct redelegateCall {
12838        #[allow(missing_docs)]
12839        pub newOperator: alloy::sol_types::private::Address,
12840        #[allow(missing_docs)]
12841        pub newOperatorApproverSig: <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
12842        #[allow(missing_docs)]
12843        pub approverSalt: alloy::sol_types::private::FixedBytes<32>,
12844    }
12845    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12846    ///Container type for the return parameters of the [`redelegate(address,(bytes,uint256),bytes32)`](redelegateCall) function.
12847    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12848    #[derive(Clone)]
12849    pub struct redelegateReturn {
12850        #[allow(missing_docs)]
12851        pub withdrawalRoots: alloy::sol_types::private::Vec<
12852            alloy::sol_types::private::FixedBytes<32>,
12853        >,
12854    }
12855    #[allow(
12856        non_camel_case_types,
12857        non_snake_case,
12858        clippy::pub_underscore_fields,
12859        clippy::style
12860    )]
12861    const _: () = {
12862        use alloy::sol_types as alloy_sol_types;
12863        {
12864            #[doc(hidden)]
12865            type UnderlyingSolTuple<'a> = (
12866                alloy::sol_types::sol_data::Address,
12867                ISignatureUtilsMixinTypes::SignatureWithExpiry,
12868                alloy::sol_types::sol_data::FixedBytes<32>,
12869            );
12870            #[doc(hidden)]
12871            type UnderlyingRustTuple<'a> = (
12872                alloy::sol_types::private::Address,
12873                <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
12874                alloy::sol_types::private::FixedBytes<32>,
12875            );
12876            #[cfg(test)]
12877            #[allow(dead_code, unreachable_patterns)]
12878            fn _type_assertion(
12879                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12880            ) {
12881                match _t {
12882                    alloy_sol_types::private::AssertTypeEq::<
12883                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12884                    >(_) => {}
12885                }
12886            }
12887            #[automatically_derived]
12888            #[doc(hidden)]
12889            impl ::core::convert::From<redelegateCall> for UnderlyingRustTuple<'_> {
12890                fn from(value: redelegateCall) -> Self {
12891                    (value.newOperator, value.newOperatorApproverSig, value.approverSalt)
12892                }
12893            }
12894            #[automatically_derived]
12895            #[doc(hidden)]
12896            impl ::core::convert::From<UnderlyingRustTuple<'_>> for redelegateCall {
12897                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12898                    Self {
12899                        newOperator: tuple.0,
12900                        newOperatorApproverSig: tuple.1,
12901                        approverSalt: tuple.2,
12902                    }
12903                }
12904            }
12905        }
12906        {
12907            #[doc(hidden)]
12908            type UnderlyingSolTuple<'a> = (
12909                alloy::sol_types::sol_data::Array<
12910                    alloy::sol_types::sol_data::FixedBytes<32>,
12911                >,
12912            );
12913            #[doc(hidden)]
12914            type UnderlyingRustTuple<'a> = (
12915                alloy::sol_types::private::Vec<
12916                    alloy::sol_types::private::FixedBytes<32>,
12917                >,
12918            );
12919            #[cfg(test)]
12920            #[allow(dead_code, unreachable_patterns)]
12921            fn _type_assertion(
12922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12923            ) {
12924                match _t {
12925                    alloy_sol_types::private::AssertTypeEq::<
12926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12927                    >(_) => {}
12928                }
12929            }
12930            #[automatically_derived]
12931            #[doc(hidden)]
12932            impl ::core::convert::From<redelegateReturn> for UnderlyingRustTuple<'_> {
12933                fn from(value: redelegateReturn) -> Self {
12934                    (value.withdrawalRoots,)
12935                }
12936            }
12937            #[automatically_derived]
12938            #[doc(hidden)]
12939            impl ::core::convert::From<UnderlyingRustTuple<'_>> for redelegateReturn {
12940                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12941                    Self { withdrawalRoots: tuple.0 }
12942                }
12943            }
12944        }
12945        #[automatically_derived]
12946        impl alloy_sol_types::SolCall for redelegateCall {
12947            type Parameters<'a> = (
12948                alloy::sol_types::sol_data::Address,
12949                ISignatureUtilsMixinTypes::SignatureWithExpiry,
12950                alloy::sol_types::sol_data::FixedBytes<32>,
12951            );
12952            type Token<'a> = <Self::Parameters<
12953                'a,
12954            > as alloy_sol_types::SolType>::Token<'a>;
12955            type Return = redelegateReturn;
12956            type ReturnTuple<'a> = (
12957                alloy::sol_types::sol_data::Array<
12958                    alloy::sol_types::sol_data::FixedBytes<32>,
12959                >,
12960            );
12961            type ReturnToken<'a> = <Self::ReturnTuple<
12962                'a,
12963            > as alloy_sol_types::SolType>::Token<'a>;
12964            const SIGNATURE: &'static str = "redelegate(address,(bytes,uint256),bytes32)";
12965            const SELECTOR: [u8; 4] = [163u8, 58u8, 52u8, 51u8];
12966            #[inline]
12967            fn new<'a>(
12968                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12969            ) -> Self {
12970                tuple.into()
12971            }
12972            #[inline]
12973            fn tokenize(&self) -> Self::Token<'_> {
12974                (
12975                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12976                        &self.newOperator,
12977                    ),
12978                    <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy_sol_types::SolType>::tokenize(
12979                        &self.newOperatorApproverSig,
12980                    ),
12981                    <alloy::sol_types::sol_data::FixedBytes<
12982                        32,
12983                    > as alloy_sol_types::SolType>::tokenize(&self.approverSalt),
12984                )
12985            }
12986            #[inline]
12987            fn abi_decode_returns(
12988                data: &[u8],
12989                validate: bool,
12990            ) -> alloy_sol_types::Result<Self::Return> {
12991                <Self::ReturnTuple<
12992                    '_,
12993                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12994                    .map(Into::into)
12995            }
12996        }
12997    };
12998    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12999    /**Function with signature `registerAsOperator(address,uint32,string)` and selector `0x2aa6d888`.
13000```solidity
13001function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string memory metadataURI) external;
13002```*/
13003    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13004    #[derive(Clone)]
13005    pub struct registerAsOperatorCall {
13006        #[allow(missing_docs)]
13007        pub initDelegationApprover: alloy::sol_types::private::Address,
13008        #[allow(missing_docs)]
13009        pub allocationDelay: u32,
13010        #[allow(missing_docs)]
13011        pub metadataURI: alloy::sol_types::private::String,
13012    }
13013    ///Container type for the return parameters of the [`registerAsOperator(address,uint32,string)`](registerAsOperatorCall) function.
13014    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13015    #[derive(Clone)]
13016    pub struct registerAsOperatorReturn {}
13017    #[allow(
13018        non_camel_case_types,
13019        non_snake_case,
13020        clippy::pub_underscore_fields,
13021        clippy::style
13022    )]
13023    const _: () = {
13024        use alloy::sol_types as alloy_sol_types;
13025        {
13026            #[doc(hidden)]
13027            type UnderlyingSolTuple<'a> = (
13028                alloy::sol_types::sol_data::Address,
13029                alloy::sol_types::sol_data::Uint<32>,
13030                alloy::sol_types::sol_data::String,
13031            );
13032            #[doc(hidden)]
13033            type UnderlyingRustTuple<'a> = (
13034                alloy::sol_types::private::Address,
13035                u32,
13036                alloy::sol_types::private::String,
13037            );
13038            #[cfg(test)]
13039            #[allow(dead_code, unreachable_patterns)]
13040            fn _type_assertion(
13041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13042            ) {
13043                match _t {
13044                    alloy_sol_types::private::AssertTypeEq::<
13045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13046                    >(_) => {}
13047                }
13048            }
13049            #[automatically_derived]
13050            #[doc(hidden)]
13051            impl ::core::convert::From<registerAsOperatorCall>
13052            for UnderlyingRustTuple<'_> {
13053                fn from(value: registerAsOperatorCall) -> Self {
13054                    (
13055                        value.initDelegationApprover,
13056                        value.allocationDelay,
13057                        value.metadataURI,
13058                    )
13059                }
13060            }
13061            #[automatically_derived]
13062            #[doc(hidden)]
13063            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13064            for registerAsOperatorCall {
13065                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13066                    Self {
13067                        initDelegationApprover: tuple.0,
13068                        allocationDelay: tuple.1,
13069                        metadataURI: tuple.2,
13070                    }
13071                }
13072            }
13073        }
13074        {
13075            #[doc(hidden)]
13076            type UnderlyingSolTuple<'a> = ();
13077            #[doc(hidden)]
13078            type UnderlyingRustTuple<'a> = ();
13079            #[cfg(test)]
13080            #[allow(dead_code, unreachable_patterns)]
13081            fn _type_assertion(
13082                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13083            ) {
13084                match _t {
13085                    alloy_sol_types::private::AssertTypeEq::<
13086                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13087                    >(_) => {}
13088                }
13089            }
13090            #[automatically_derived]
13091            #[doc(hidden)]
13092            impl ::core::convert::From<registerAsOperatorReturn>
13093            for UnderlyingRustTuple<'_> {
13094                fn from(value: registerAsOperatorReturn) -> Self {
13095                    ()
13096                }
13097            }
13098            #[automatically_derived]
13099            #[doc(hidden)]
13100            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13101            for registerAsOperatorReturn {
13102                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13103                    Self {}
13104                }
13105            }
13106        }
13107        #[automatically_derived]
13108        impl alloy_sol_types::SolCall for registerAsOperatorCall {
13109            type Parameters<'a> = (
13110                alloy::sol_types::sol_data::Address,
13111                alloy::sol_types::sol_data::Uint<32>,
13112                alloy::sol_types::sol_data::String,
13113            );
13114            type Token<'a> = <Self::Parameters<
13115                'a,
13116            > as alloy_sol_types::SolType>::Token<'a>;
13117            type Return = registerAsOperatorReturn;
13118            type ReturnTuple<'a> = ();
13119            type ReturnToken<'a> = <Self::ReturnTuple<
13120                'a,
13121            > as alloy_sol_types::SolType>::Token<'a>;
13122            const SIGNATURE: &'static str = "registerAsOperator(address,uint32,string)";
13123            const SELECTOR: [u8; 4] = [42u8, 166u8, 216u8, 136u8];
13124            #[inline]
13125            fn new<'a>(
13126                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13127            ) -> Self {
13128                tuple.into()
13129            }
13130            #[inline]
13131            fn tokenize(&self) -> Self::Token<'_> {
13132                (
13133                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13134                        &self.initDelegationApprover,
13135                    ),
13136                    <alloy::sol_types::sol_data::Uint<
13137                        32,
13138                    > as alloy_sol_types::SolType>::tokenize(&self.allocationDelay),
13139                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
13140                        &self.metadataURI,
13141                    ),
13142                )
13143            }
13144            #[inline]
13145            fn abi_decode_returns(
13146                data: &[u8],
13147                validate: bool,
13148            ) -> alloy_sol_types::Result<Self::Return> {
13149                <Self::ReturnTuple<
13150                    '_,
13151                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13152                    .map(Into::into)
13153            }
13154        }
13155    };
13156    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13157    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
13158```solidity
13159function renounceOwnership() external;
13160```*/
13161    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13162    #[derive(Clone)]
13163    pub struct renounceOwnershipCall {}
13164    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
13165    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13166    #[derive(Clone)]
13167    pub struct renounceOwnershipReturn {}
13168    #[allow(
13169        non_camel_case_types,
13170        non_snake_case,
13171        clippy::pub_underscore_fields,
13172        clippy::style
13173    )]
13174    const _: () = {
13175        use alloy::sol_types as alloy_sol_types;
13176        {
13177            #[doc(hidden)]
13178            type UnderlyingSolTuple<'a> = ();
13179            #[doc(hidden)]
13180            type UnderlyingRustTuple<'a> = ();
13181            #[cfg(test)]
13182            #[allow(dead_code, unreachable_patterns)]
13183            fn _type_assertion(
13184                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13185            ) {
13186                match _t {
13187                    alloy_sol_types::private::AssertTypeEq::<
13188                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13189                    >(_) => {}
13190                }
13191            }
13192            #[automatically_derived]
13193            #[doc(hidden)]
13194            impl ::core::convert::From<renounceOwnershipCall>
13195            for UnderlyingRustTuple<'_> {
13196                fn from(value: renounceOwnershipCall) -> Self {
13197                    ()
13198                }
13199            }
13200            #[automatically_derived]
13201            #[doc(hidden)]
13202            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13203            for renounceOwnershipCall {
13204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13205                    Self {}
13206                }
13207            }
13208        }
13209        {
13210            #[doc(hidden)]
13211            type UnderlyingSolTuple<'a> = ();
13212            #[doc(hidden)]
13213            type UnderlyingRustTuple<'a> = ();
13214            #[cfg(test)]
13215            #[allow(dead_code, unreachable_patterns)]
13216            fn _type_assertion(
13217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13218            ) {
13219                match _t {
13220                    alloy_sol_types::private::AssertTypeEq::<
13221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13222                    >(_) => {}
13223                }
13224            }
13225            #[automatically_derived]
13226            #[doc(hidden)]
13227            impl ::core::convert::From<renounceOwnershipReturn>
13228            for UnderlyingRustTuple<'_> {
13229                fn from(value: renounceOwnershipReturn) -> Self {
13230                    ()
13231                }
13232            }
13233            #[automatically_derived]
13234            #[doc(hidden)]
13235            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13236            for renounceOwnershipReturn {
13237                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13238                    Self {}
13239                }
13240            }
13241        }
13242        #[automatically_derived]
13243        impl alloy_sol_types::SolCall for renounceOwnershipCall {
13244            type Parameters<'a> = ();
13245            type Token<'a> = <Self::Parameters<
13246                'a,
13247            > as alloy_sol_types::SolType>::Token<'a>;
13248            type Return = renounceOwnershipReturn;
13249            type ReturnTuple<'a> = ();
13250            type ReturnToken<'a> = <Self::ReturnTuple<
13251                'a,
13252            > as alloy_sol_types::SolType>::Token<'a>;
13253            const SIGNATURE: &'static str = "renounceOwnership()";
13254            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
13255            #[inline]
13256            fn new<'a>(
13257                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13258            ) -> Self {
13259                tuple.into()
13260            }
13261            #[inline]
13262            fn tokenize(&self) -> Self::Token<'_> {
13263                ()
13264            }
13265            #[inline]
13266            fn abi_decode_returns(
13267                data: &[u8],
13268                validate: bool,
13269            ) -> alloy_sol_types::Result<Self::Return> {
13270                <Self::ReturnTuple<
13271                    '_,
13272                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13273                    .map(Into::into)
13274            }
13275        }
13276    };
13277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13278    /**Function with signature `slashOperatorShares(address,address,uint64,uint64)` and selector `0x601bb36f`.
13279```solidity
13280function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) external;
13281```*/
13282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13283    #[derive(Clone)]
13284    pub struct slashOperatorSharesCall {
13285        #[allow(missing_docs)]
13286        pub operator: alloy::sol_types::private::Address,
13287        #[allow(missing_docs)]
13288        pub strategy: alloy::sol_types::private::Address,
13289        #[allow(missing_docs)]
13290        pub prevMaxMagnitude: u64,
13291        #[allow(missing_docs)]
13292        pub newMaxMagnitude: u64,
13293    }
13294    ///Container type for the return parameters of the [`slashOperatorShares(address,address,uint64,uint64)`](slashOperatorSharesCall) function.
13295    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13296    #[derive(Clone)]
13297    pub struct slashOperatorSharesReturn {}
13298    #[allow(
13299        non_camel_case_types,
13300        non_snake_case,
13301        clippy::pub_underscore_fields,
13302        clippy::style
13303    )]
13304    const _: () = {
13305        use alloy::sol_types as alloy_sol_types;
13306        {
13307            #[doc(hidden)]
13308            type UnderlyingSolTuple<'a> = (
13309                alloy::sol_types::sol_data::Address,
13310                alloy::sol_types::sol_data::Address,
13311                alloy::sol_types::sol_data::Uint<64>,
13312                alloy::sol_types::sol_data::Uint<64>,
13313            );
13314            #[doc(hidden)]
13315            type UnderlyingRustTuple<'a> = (
13316                alloy::sol_types::private::Address,
13317                alloy::sol_types::private::Address,
13318                u64,
13319                u64,
13320            );
13321            #[cfg(test)]
13322            #[allow(dead_code, unreachable_patterns)]
13323            fn _type_assertion(
13324                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13325            ) {
13326                match _t {
13327                    alloy_sol_types::private::AssertTypeEq::<
13328                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13329                    >(_) => {}
13330                }
13331            }
13332            #[automatically_derived]
13333            #[doc(hidden)]
13334            impl ::core::convert::From<slashOperatorSharesCall>
13335            for UnderlyingRustTuple<'_> {
13336                fn from(value: slashOperatorSharesCall) -> Self {
13337                    (
13338                        value.operator,
13339                        value.strategy,
13340                        value.prevMaxMagnitude,
13341                        value.newMaxMagnitude,
13342                    )
13343                }
13344            }
13345            #[automatically_derived]
13346            #[doc(hidden)]
13347            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13348            for slashOperatorSharesCall {
13349                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13350                    Self {
13351                        operator: tuple.0,
13352                        strategy: tuple.1,
13353                        prevMaxMagnitude: tuple.2,
13354                        newMaxMagnitude: tuple.3,
13355                    }
13356                }
13357            }
13358        }
13359        {
13360            #[doc(hidden)]
13361            type UnderlyingSolTuple<'a> = ();
13362            #[doc(hidden)]
13363            type UnderlyingRustTuple<'a> = ();
13364            #[cfg(test)]
13365            #[allow(dead_code, unreachable_patterns)]
13366            fn _type_assertion(
13367                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13368            ) {
13369                match _t {
13370                    alloy_sol_types::private::AssertTypeEq::<
13371                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13372                    >(_) => {}
13373                }
13374            }
13375            #[automatically_derived]
13376            #[doc(hidden)]
13377            impl ::core::convert::From<slashOperatorSharesReturn>
13378            for UnderlyingRustTuple<'_> {
13379                fn from(value: slashOperatorSharesReturn) -> Self {
13380                    ()
13381                }
13382            }
13383            #[automatically_derived]
13384            #[doc(hidden)]
13385            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13386            for slashOperatorSharesReturn {
13387                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13388                    Self {}
13389                }
13390            }
13391        }
13392        #[automatically_derived]
13393        impl alloy_sol_types::SolCall for slashOperatorSharesCall {
13394            type Parameters<'a> = (
13395                alloy::sol_types::sol_data::Address,
13396                alloy::sol_types::sol_data::Address,
13397                alloy::sol_types::sol_data::Uint<64>,
13398                alloy::sol_types::sol_data::Uint<64>,
13399            );
13400            type Token<'a> = <Self::Parameters<
13401                'a,
13402            > as alloy_sol_types::SolType>::Token<'a>;
13403            type Return = slashOperatorSharesReturn;
13404            type ReturnTuple<'a> = ();
13405            type ReturnToken<'a> = <Self::ReturnTuple<
13406                'a,
13407            > as alloy_sol_types::SolType>::Token<'a>;
13408            const SIGNATURE: &'static str = "slashOperatorShares(address,address,uint64,uint64)";
13409            const SELECTOR: [u8; 4] = [96u8, 27u8, 179u8, 111u8];
13410            #[inline]
13411            fn new<'a>(
13412                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13413            ) -> Self {
13414                tuple.into()
13415            }
13416            #[inline]
13417            fn tokenize(&self) -> Self::Token<'_> {
13418                (
13419                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13420                        &self.operator,
13421                    ),
13422                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13423                        &self.strategy,
13424                    ),
13425                    <alloy::sol_types::sol_data::Uint<
13426                        64,
13427                    > as alloy_sol_types::SolType>::tokenize(&self.prevMaxMagnitude),
13428                    <alloy::sol_types::sol_data::Uint<
13429                        64,
13430                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxMagnitude),
13431                )
13432            }
13433            #[inline]
13434            fn abi_decode_returns(
13435                data: &[u8],
13436                validate: bool,
13437            ) -> alloy_sol_types::Result<Self::Return> {
13438                <Self::ReturnTuple<
13439                    '_,
13440                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13441                    .map(Into::into)
13442            }
13443        }
13444    };
13445    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13446    /**Function with signature `strategyManager()` and selector `0x39b70e38`.
13447```solidity
13448function strategyManager() external view returns (address);
13449```*/
13450    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13451    #[derive(Clone)]
13452    pub struct strategyManagerCall {}
13453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13454    ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function.
13455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13456    #[derive(Clone)]
13457    pub struct strategyManagerReturn {
13458        #[allow(missing_docs)]
13459        pub _0: alloy::sol_types::private::Address,
13460    }
13461    #[allow(
13462        non_camel_case_types,
13463        non_snake_case,
13464        clippy::pub_underscore_fields,
13465        clippy::style
13466    )]
13467    const _: () = {
13468        use alloy::sol_types as alloy_sol_types;
13469        {
13470            #[doc(hidden)]
13471            type UnderlyingSolTuple<'a> = ();
13472            #[doc(hidden)]
13473            type UnderlyingRustTuple<'a> = ();
13474            #[cfg(test)]
13475            #[allow(dead_code, unreachable_patterns)]
13476            fn _type_assertion(
13477                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13478            ) {
13479                match _t {
13480                    alloy_sol_types::private::AssertTypeEq::<
13481                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13482                    >(_) => {}
13483                }
13484            }
13485            #[automatically_derived]
13486            #[doc(hidden)]
13487            impl ::core::convert::From<strategyManagerCall> for UnderlyingRustTuple<'_> {
13488                fn from(value: strategyManagerCall) -> Self {
13489                    ()
13490                }
13491            }
13492            #[automatically_derived]
13493            #[doc(hidden)]
13494            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyManagerCall {
13495                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13496                    Self {}
13497                }
13498            }
13499        }
13500        {
13501            #[doc(hidden)]
13502            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13503            #[doc(hidden)]
13504            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13505            #[cfg(test)]
13506            #[allow(dead_code, unreachable_patterns)]
13507            fn _type_assertion(
13508                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13509            ) {
13510                match _t {
13511                    alloy_sol_types::private::AssertTypeEq::<
13512                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13513                    >(_) => {}
13514                }
13515            }
13516            #[automatically_derived]
13517            #[doc(hidden)]
13518            impl ::core::convert::From<strategyManagerReturn>
13519            for UnderlyingRustTuple<'_> {
13520                fn from(value: strategyManagerReturn) -> Self {
13521                    (value._0,)
13522                }
13523            }
13524            #[automatically_derived]
13525            #[doc(hidden)]
13526            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13527            for strategyManagerReturn {
13528                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13529                    Self { _0: tuple.0 }
13530                }
13531            }
13532        }
13533        #[automatically_derived]
13534        impl alloy_sol_types::SolCall for strategyManagerCall {
13535            type Parameters<'a> = ();
13536            type Token<'a> = <Self::Parameters<
13537                'a,
13538            > as alloy_sol_types::SolType>::Token<'a>;
13539            type Return = strategyManagerReturn;
13540            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
13541            type ReturnToken<'a> = <Self::ReturnTuple<
13542                'a,
13543            > as alloy_sol_types::SolType>::Token<'a>;
13544            const SIGNATURE: &'static str = "strategyManager()";
13545            const SELECTOR: [u8; 4] = [57u8, 183u8, 14u8, 56u8];
13546            #[inline]
13547            fn new<'a>(
13548                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13549            ) -> Self {
13550                tuple.into()
13551            }
13552            #[inline]
13553            fn tokenize(&self) -> Self::Token<'_> {
13554                ()
13555            }
13556            #[inline]
13557            fn abi_decode_returns(
13558                data: &[u8],
13559                validate: bool,
13560            ) -> alloy_sol_types::Result<Self::Return> {
13561                <Self::ReturnTuple<
13562                    '_,
13563                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13564                    .map(Into::into)
13565            }
13566        }
13567    };
13568    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13569    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
13570```solidity
13571function transferOwnership(address newOwner) external;
13572```*/
13573    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13574    #[derive(Clone)]
13575    pub struct transferOwnershipCall {
13576        #[allow(missing_docs)]
13577        pub newOwner: alloy::sol_types::private::Address,
13578    }
13579    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
13580    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13581    #[derive(Clone)]
13582    pub struct transferOwnershipReturn {}
13583    #[allow(
13584        non_camel_case_types,
13585        non_snake_case,
13586        clippy::pub_underscore_fields,
13587        clippy::style
13588    )]
13589    const _: () = {
13590        use alloy::sol_types as alloy_sol_types;
13591        {
13592            #[doc(hidden)]
13593            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13594            #[doc(hidden)]
13595            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13596            #[cfg(test)]
13597            #[allow(dead_code, unreachable_patterns)]
13598            fn _type_assertion(
13599                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13600            ) {
13601                match _t {
13602                    alloy_sol_types::private::AssertTypeEq::<
13603                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13604                    >(_) => {}
13605                }
13606            }
13607            #[automatically_derived]
13608            #[doc(hidden)]
13609            impl ::core::convert::From<transferOwnershipCall>
13610            for UnderlyingRustTuple<'_> {
13611                fn from(value: transferOwnershipCall) -> Self {
13612                    (value.newOwner,)
13613                }
13614            }
13615            #[automatically_derived]
13616            #[doc(hidden)]
13617            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13618            for transferOwnershipCall {
13619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13620                    Self { newOwner: tuple.0 }
13621                }
13622            }
13623        }
13624        {
13625            #[doc(hidden)]
13626            type UnderlyingSolTuple<'a> = ();
13627            #[doc(hidden)]
13628            type UnderlyingRustTuple<'a> = ();
13629            #[cfg(test)]
13630            #[allow(dead_code, unreachable_patterns)]
13631            fn _type_assertion(
13632                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13633            ) {
13634                match _t {
13635                    alloy_sol_types::private::AssertTypeEq::<
13636                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13637                    >(_) => {}
13638                }
13639            }
13640            #[automatically_derived]
13641            #[doc(hidden)]
13642            impl ::core::convert::From<transferOwnershipReturn>
13643            for UnderlyingRustTuple<'_> {
13644                fn from(value: transferOwnershipReturn) -> Self {
13645                    ()
13646                }
13647            }
13648            #[automatically_derived]
13649            #[doc(hidden)]
13650            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13651            for transferOwnershipReturn {
13652                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13653                    Self {}
13654                }
13655            }
13656        }
13657        #[automatically_derived]
13658        impl alloy_sol_types::SolCall for transferOwnershipCall {
13659            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13660            type Token<'a> = <Self::Parameters<
13661                'a,
13662            > as alloy_sol_types::SolType>::Token<'a>;
13663            type Return = transferOwnershipReturn;
13664            type ReturnTuple<'a> = ();
13665            type ReturnToken<'a> = <Self::ReturnTuple<
13666                'a,
13667            > as alloy_sol_types::SolType>::Token<'a>;
13668            const SIGNATURE: &'static str = "transferOwnership(address)";
13669            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
13670            #[inline]
13671            fn new<'a>(
13672                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13673            ) -> Self {
13674                tuple.into()
13675            }
13676            #[inline]
13677            fn tokenize(&self) -> Self::Token<'_> {
13678                (
13679                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13680                        &self.newOwner,
13681                    ),
13682                )
13683            }
13684            #[inline]
13685            fn abi_decode_returns(
13686                data: &[u8],
13687                validate: bool,
13688            ) -> alloy_sol_types::Result<Self::Return> {
13689                <Self::ReturnTuple<
13690                    '_,
13691                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13692                    .map(Into::into)
13693            }
13694        }
13695    };
13696    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13697    /**Function with signature `undelegate(address)` and selector `0xda8be864`.
13698```solidity
13699function undelegate(address staker) external returns (bytes32[] memory withdrawalRoots);
13700```*/
13701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13702    #[derive(Clone)]
13703    pub struct undelegateCall {
13704        #[allow(missing_docs)]
13705        pub staker: alloy::sol_types::private::Address,
13706    }
13707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13708    ///Container type for the return parameters of the [`undelegate(address)`](undelegateCall) function.
13709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13710    #[derive(Clone)]
13711    pub struct undelegateReturn {
13712        #[allow(missing_docs)]
13713        pub withdrawalRoots: alloy::sol_types::private::Vec<
13714            alloy::sol_types::private::FixedBytes<32>,
13715        >,
13716    }
13717    #[allow(
13718        non_camel_case_types,
13719        non_snake_case,
13720        clippy::pub_underscore_fields,
13721        clippy::style
13722    )]
13723    const _: () = {
13724        use alloy::sol_types as alloy_sol_types;
13725        {
13726            #[doc(hidden)]
13727            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13728            #[doc(hidden)]
13729            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13730            #[cfg(test)]
13731            #[allow(dead_code, unreachable_patterns)]
13732            fn _type_assertion(
13733                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13734            ) {
13735                match _t {
13736                    alloy_sol_types::private::AssertTypeEq::<
13737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13738                    >(_) => {}
13739                }
13740            }
13741            #[automatically_derived]
13742            #[doc(hidden)]
13743            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
13744                fn from(value: undelegateCall) -> Self {
13745                    (value.staker,)
13746                }
13747            }
13748            #[automatically_derived]
13749            #[doc(hidden)]
13750            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
13751                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13752                    Self { staker: tuple.0 }
13753                }
13754            }
13755        }
13756        {
13757            #[doc(hidden)]
13758            type UnderlyingSolTuple<'a> = (
13759                alloy::sol_types::sol_data::Array<
13760                    alloy::sol_types::sol_data::FixedBytes<32>,
13761                >,
13762            );
13763            #[doc(hidden)]
13764            type UnderlyingRustTuple<'a> = (
13765                alloy::sol_types::private::Vec<
13766                    alloy::sol_types::private::FixedBytes<32>,
13767                >,
13768            );
13769            #[cfg(test)]
13770            #[allow(dead_code, unreachable_patterns)]
13771            fn _type_assertion(
13772                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13773            ) {
13774                match _t {
13775                    alloy_sol_types::private::AssertTypeEq::<
13776                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13777                    >(_) => {}
13778                }
13779            }
13780            #[automatically_derived]
13781            #[doc(hidden)]
13782            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
13783                fn from(value: undelegateReturn) -> Self {
13784                    (value.withdrawalRoots,)
13785                }
13786            }
13787            #[automatically_derived]
13788            #[doc(hidden)]
13789            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
13790                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13791                    Self { withdrawalRoots: tuple.0 }
13792                }
13793            }
13794        }
13795        #[automatically_derived]
13796        impl alloy_sol_types::SolCall for undelegateCall {
13797            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13798            type Token<'a> = <Self::Parameters<
13799                'a,
13800            > as alloy_sol_types::SolType>::Token<'a>;
13801            type Return = undelegateReturn;
13802            type ReturnTuple<'a> = (
13803                alloy::sol_types::sol_data::Array<
13804                    alloy::sol_types::sol_data::FixedBytes<32>,
13805                >,
13806            );
13807            type ReturnToken<'a> = <Self::ReturnTuple<
13808                'a,
13809            > as alloy_sol_types::SolType>::Token<'a>;
13810            const SIGNATURE: &'static str = "undelegate(address)";
13811            const SELECTOR: [u8; 4] = [218u8, 139u8, 232u8, 100u8];
13812            #[inline]
13813            fn new<'a>(
13814                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13815            ) -> Self {
13816                tuple.into()
13817            }
13818            #[inline]
13819            fn tokenize(&self) -> Self::Token<'_> {
13820                (
13821                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13822                        &self.staker,
13823                    ),
13824                )
13825            }
13826            #[inline]
13827            fn abi_decode_returns(
13828                data: &[u8],
13829                validate: bool,
13830            ) -> alloy_sol_types::Result<Self::Return> {
13831                <Self::ReturnTuple<
13832                    '_,
13833                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13834                    .map(Into::into)
13835            }
13836        }
13837    };
13838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13839    /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`.
13840```solidity
13841function unpause(uint256 newPausedStatus) external;
13842```*/
13843    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13844    #[derive(Clone)]
13845    pub struct unpauseCall {
13846        #[allow(missing_docs)]
13847        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
13848    }
13849    ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function.
13850    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13851    #[derive(Clone)]
13852    pub struct unpauseReturn {}
13853    #[allow(
13854        non_camel_case_types,
13855        non_snake_case,
13856        clippy::pub_underscore_fields,
13857        clippy::style
13858    )]
13859    const _: () = {
13860        use alloy::sol_types as alloy_sol_types;
13861        {
13862            #[doc(hidden)]
13863            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13864            #[doc(hidden)]
13865            type UnderlyingRustTuple<'a> = (
13866                alloy::sol_types::private::primitives::aliases::U256,
13867            );
13868            #[cfg(test)]
13869            #[allow(dead_code, unreachable_patterns)]
13870            fn _type_assertion(
13871                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13872            ) {
13873                match _t {
13874                    alloy_sol_types::private::AssertTypeEq::<
13875                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13876                    >(_) => {}
13877                }
13878            }
13879            #[automatically_derived]
13880            #[doc(hidden)]
13881            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
13882                fn from(value: unpauseCall) -> Self {
13883                    (value.newPausedStatus,)
13884                }
13885            }
13886            #[automatically_derived]
13887            #[doc(hidden)]
13888            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
13889                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13890                    Self { newPausedStatus: tuple.0 }
13891                }
13892            }
13893        }
13894        {
13895            #[doc(hidden)]
13896            type UnderlyingSolTuple<'a> = ();
13897            #[doc(hidden)]
13898            type UnderlyingRustTuple<'a> = ();
13899            #[cfg(test)]
13900            #[allow(dead_code, unreachable_patterns)]
13901            fn _type_assertion(
13902                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13903            ) {
13904                match _t {
13905                    alloy_sol_types::private::AssertTypeEq::<
13906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13907                    >(_) => {}
13908                }
13909            }
13910            #[automatically_derived]
13911            #[doc(hidden)]
13912            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
13913                fn from(value: unpauseReturn) -> Self {
13914                    ()
13915                }
13916            }
13917            #[automatically_derived]
13918            #[doc(hidden)]
13919            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
13920                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13921                    Self {}
13922                }
13923            }
13924        }
13925        #[automatically_derived]
13926        impl alloy_sol_types::SolCall for unpauseCall {
13927            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13928            type Token<'a> = <Self::Parameters<
13929                'a,
13930            > as alloy_sol_types::SolType>::Token<'a>;
13931            type Return = unpauseReturn;
13932            type ReturnTuple<'a> = ();
13933            type ReturnToken<'a> = <Self::ReturnTuple<
13934                'a,
13935            > as alloy_sol_types::SolType>::Token<'a>;
13936            const SIGNATURE: &'static str = "unpause(uint256)";
13937            const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8];
13938            #[inline]
13939            fn new<'a>(
13940                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13941            ) -> Self {
13942                tuple.into()
13943            }
13944            #[inline]
13945            fn tokenize(&self) -> Self::Token<'_> {
13946                (
13947                    <alloy::sol_types::sol_data::Uint<
13948                        256,
13949                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
13950                )
13951            }
13952            #[inline]
13953            fn abi_decode_returns(
13954                data: &[u8],
13955                validate: bool,
13956            ) -> alloy_sol_types::Result<Self::Return> {
13957                <Self::ReturnTuple<
13958                    '_,
13959                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13960                    .map(Into::into)
13961            }
13962        }
13963    };
13964    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13965    /**Function with signature `updateOperatorMetadataURI(address,string)` and selector `0x78296ec5`.
13966```solidity
13967function updateOperatorMetadataURI(address operator, string memory metadataURI) external;
13968```*/
13969    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13970    #[derive(Clone)]
13971    pub struct updateOperatorMetadataURICall {
13972        #[allow(missing_docs)]
13973        pub operator: alloy::sol_types::private::Address,
13974        #[allow(missing_docs)]
13975        pub metadataURI: alloy::sol_types::private::String,
13976    }
13977    ///Container type for the return parameters of the [`updateOperatorMetadataURI(address,string)`](updateOperatorMetadataURICall) function.
13978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13979    #[derive(Clone)]
13980    pub struct updateOperatorMetadataURIReturn {}
13981    #[allow(
13982        non_camel_case_types,
13983        non_snake_case,
13984        clippy::pub_underscore_fields,
13985        clippy::style
13986    )]
13987    const _: () = {
13988        use alloy::sol_types as alloy_sol_types;
13989        {
13990            #[doc(hidden)]
13991            type UnderlyingSolTuple<'a> = (
13992                alloy::sol_types::sol_data::Address,
13993                alloy::sol_types::sol_data::String,
13994            );
13995            #[doc(hidden)]
13996            type UnderlyingRustTuple<'a> = (
13997                alloy::sol_types::private::Address,
13998                alloy::sol_types::private::String,
13999            );
14000            #[cfg(test)]
14001            #[allow(dead_code, unreachable_patterns)]
14002            fn _type_assertion(
14003                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14004            ) {
14005                match _t {
14006                    alloy_sol_types::private::AssertTypeEq::<
14007                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14008                    >(_) => {}
14009                }
14010            }
14011            #[automatically_derived]
14012            #[doc(hidden)]
14013            impl ::core::convert::From<updateOperatorMetadataURICall>
14014            for UnderlyingRustTuple<'_> {
14015                fn from(value: updateOperatorMetadataURICall) -> Self {
14016                    (value.operator, value.metadataURI)
14017                }
14018            }
14019            #[automatically_derived]
14020            #[doc(hidden)]
14021            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14022            for updateOperatorMetadataURICall {
14023                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14024                    Self {
14025                        operator: tuple.0,
14026                        metadataURI: tuple.1,
14027                    }
14028                }
14029            }
14030        }
14031        {
14032            #[doc(hidden)]
14033            type UnderlyingSolTuple<'a> = ();
14034            #[doc(hidden)]
14035            type UnderlyingRustTuple<'a> = ();
14036            #[cfg(test)]
14037            #[allow(dead_code, unreachable_patterns)]
14038            fn _type_assertion(
14039                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14040            ) {
14041                match _t {
14042                    alloy_sol_types::private::AssertTypeEq::<
14043                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14044                    >(_) => {}
14045                }
14046            }
14047            #[automatically_derived]
14048            #[doc(hidden)]
14049            impl ::core::convert::From<updateOperatorMetadataURIReturn>
14050            for UnderlyingRustTuple<'_> {
14051                fn from(value: updateOperatorMetadataURIReturn) -> Self {
14052                    ()
14053                }
14054            }
14055            #[automatically_derived]
14056            #[doc(hidden)]
14057            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14058            for updateOperatorMetadataURIReturn {
14059                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14060                    Self {}
14061                }
14062            }
14063        }
14064        #[automatically_derived]
14065        impl alloy_sol_types::SolCall for updateOperatorMetadataURICall {
14066            type Parameters<'a> = (
14067                alloy::sol_types::sol_data::Address,
14068                alloy::sol_types::sol_data::String,
14069            );
14070            type Token<'a> = <Self::Parameters<
14071                'a,
14072            > as alloy_sol_types::SolType>::Token<'a>;
14073            type Return = updateOperatorMetadataURIReturn;
14074            type ReturnTuple<'a> = ();
14075            type ReturnToken<'a> = <Self::ReturnTuple<
14076                'a,
14077            > as alloy_sol_types::SolType>::Token<'a>;
14078            const SIGNATURE: &'static str = "updateOperatorMetadataURI(address,string)";
14079            const SELECTOR: [u8; 4] = [120u8, 41u8, 110u8, 197u8];
14080            #[inline]
14081            fn new<'a>(
14082                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14083            ) -> Self {
14084                tuple.into()
14085            }
14086            #[inline]
14087            fn tokenize(&self) -> Self::Token<'_> {
14088                (
14089                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14090                        &self.operator,
14091                    ),
14092                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
14093                        &self.metadataURI,
14094                    ),
14095                )
14096            }
14097            #[inline]
14098            fn abi_decode_returns(
14099                data: &[u8],
14100                validate: bool,
14101            ) -> alloy_sol_types::Result<Self::Return> {
14102                <Self::ReturnTuple<
14103                    '_,
14104                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
14105                    .map(Into::into)
14106            }
14107        }
14108    };
14109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14110    /**Function with signature `version()` and selector `0x54fd4d50`.
14111```solidity
14112function version() external view returns (string memory);
14113```*/
14114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14115    #[derive(Clone)]
14116    pub struct versionCall {}
14117    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14118    ///Container type for the return parameters of the [`version()`](versionCall) function.
14119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14120    #[derive(Clone)]
14121    pub struct versionReturn {
14122        #[allow(missing_docs)]
14123        pub _0: alloy::sol_types::private::String,
14124    }
14125    #[allow(
14126        non_camel_case_types,
14127        non_snake_case,
14128        clippy::pub_underscore_fields,
14129        clippy::style
14130    )]
14131    const _: () = {
14132        use alloy::sol_types as alloy_sol_types;
14133        {
14134            #[doc(hidden)]
14135            type UnderlyingSolTuple<'a> = ();
14136            #[doc(hidden)]
14137            type UnderlyingRustTuple<'a> = ();
14138            #[cfg(test)]
14139            #[allow(dead_code, unreachable_patterns)]
14140            fn _type_assertion(
14141                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14142            ) {
14143                match _t {
14144                    alloy_sol_types::private::AssertTypeEq::<
14145                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14146                    >(_) => {}
14147                }
14148            }
14149            #[automatically_derived]
14150            #[doc(hidden)]
14151            impl ::core::convert::From<versionCall> for UnderlyingRustTuple<'_> {
14152                fn from(value: versionCall) -> Self {
14153                    ()
14154                }
14155            }
14156            #[automatically_derived]
14157            #[doc(hidden)]
14158            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionCall {
14159                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14160                    Self {}
14161                }
14162            }
14163        }
14164        {
14165            #[doc(hidden)]
14166            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
14167            #[doc(hidden)]
14168            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
14169            #[cfg(test)]
14170            #[allow(dead_code, unreachable_patterns)]
14171            fn _type_assertion(
14172                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14173            ) {
14174                match _t {
14175                    alloy_sol_types::private::AssertTypeEq::<
14176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14177                    >(_) => {}
14178                }
14179            }
14180            #[automatically_derived]
14181            #[doc(hidden)]
14182            impl ::core::convert::From<versionReturn> for UnderlyingRustTuple<'_> {
14183                fn from(value: versionReturn) -> Self {
14184                    (value._0,)
14185                }
14186            }
14187            #[automatically_derived]
14188            #[doc(hidden)]
14189            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionReturn {
14190                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14191                    Self { _0: tuple.0 }
14192                }
14193            }
14194        }
14195        #[automatically_derived]
14196        impl alloy_sol_types::SolCall for versionCall {
14197            type Parameters<'a> = ();
14198            type Token<'a> = <Self::Parameters<
14199                'a,
14200            > as alloy_sol_types::SolType>::Token<'a>;
14201            type Return = versionReturn;
14202            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
14203            type ReturnToken<'a> = <Self::ReturnTuple<
14204                'a,
14205            > as alloy_sol_types::SolType>::Token<'a>;
14206            const SIGNATURE: &'static str = "version()";
14207            const SELECTOR: [u8; 4] = [84u8, 253u8, 77u8, 80u8];
14208            #[inline]
14209            fn new<'a>(
14210                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14211            ) -> Self {
14212                tuple.into()
14213            }
14214            #[inline]
14215            fn tokenize(&self) -> Self::Token<'_> {
14216                ()
14217            }
14218            #[inline]
14219            fn abi_decode_returns(
14220                data: &[u8],
14221                validate: bool,
14222            ) -> alloy_sol_types::Result<Self::Return> {
14223                <Self::ReturnTuple<
14224                    '_,
14225                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
14226                    .map(Into::into)
14227            }
14228        }
14229    };
14230    ///Container for all the [`DelegationManager`](self) function calls.
14231    #[derive()]
14232    pub enum DelegationManagerCalls {
14233        #[allow(missing_docs)]
14234        DELEGATION_APPROVAL_TYPEHASH(DELEGATION_APPROVAL_TYPEHASHCall),
14235        #[allow(missing_docs)]
14236        allocationManager(allocationManagerCall),
14237        #[allow(missing_docs)]
14238        beaconChainETHStrategy(beaconChainETHStrategyCall),
14239        #[allow(missing_docs)]
14240        calculateDelegationApprovalDigestHash(calculateDelegationApprovalDigestHashCall),
14241        #[allow(missing_docs)]
14242        calculateWithdrawalRoot(calculateWithdrawalRootCall),
14243        #[allow(missing_docs)]
14244        completeQueuedWithdrawal(completeQueuedWithdrawalCall),
14245        #[allow(missing_docs)]
14246        completeQueuedWithdrawals(completeQueuedWithdrawalsCall),
14247        #[allow(missing_docs)]
14248        convertToDepositShares(convertToDepositSharesCall),
14249        #[allow(missing_docs)]
14250        cumulativeWithdrawalsQueued(cumulativeWithdrawalsQueuedCall),
14251        #[allow(missing_docs)]
14252        decreaseDelegatedShares(decreaseDelegatedSharesCall),
14253        #[allow(missing_docs)]
14254        delegateTo(delegateToCall),
14255        #[allow(missing_docs)]
14256        delegatedTo(delegatedToCall),
14257        #[allow(missing_docs)]
14258        delegationApprover(delegationApproverCall),
14259        #[allow(missing_docs)]
14260        delegationApproverSaltIsSpent(delegationApproverSaltIsSpentCall),
14261        #[allow(missing_docs)]
14262        depositScalingFactor(depositScalingFactorCall),
14263        #[allow(missing_docs)]
14264        domainSeparator(domainSeparatorCall),
14265        #[allow(missing_docs)]
14266        eigenPodManager(eigenPodManagerCall),
14267        #[allow(missing_docs)]
14268        getDepositedShares(getDepositedSharesCall),
14269        #[allow(missing_docs)]
14270        getOperatorShares(getOperatorSharesCall),
14271        #[allow(missing_docs)]
14272        getOperatorsShares(getOperatorsSharesCall),
14273        #[allow(missing_docs)]
14274        getQueuedWithdrawal(getQueuedWithdrawalCall),
14275        #[allow(missing_docs)]
14276        getQueuedWithdrawalRoots(getQueuedWithdrawalRootsCall),
14277        #[allow(missing_docs)]
14278        getQueuedWithdrawals(getQueuedWithdrawalsCall),
14279        #[allow(missing_docs)]
14280        getSlashableSharesInQueue(getSlashableSharesInQueueCall),
14281        #[allow(missing_docs)]
14282        getWithdrawableShares(getWithdrawableSharesCall),
14283        #[allow(missing_docs)]
14284        increaseDelegatedShares(increaseDelegatedSharesCall),
14285        #[allow(missing_docs)]
14286        initialize(initializeCall),
14287        #[allow(missing_docs)]
14288        isDelegated(isDelegatedCall),
14289        #[allow(missing_docs)]
14290        isOperator(isOperatorCall),
14291        #[allow(missing_docs)]
14292        minWithdrawalDelayBlocks(minWithdrawalDelayBlocksCall),
14293        #[allow(missing_docs)]
14294        modifyOperatorDetails(modifyOperatorDetailsCall),
14295        #[allow(missing_docs)]
14296        operatorShares(operatorSharesCall),
14297        #[allow(missing_docs)]
14298        owner(ownerCall),
14299        #[allow(missing_docs)]
14300        pause(pauseCall),
14301        #[allow(missing_docs)]
14302        pauseAll(pauseAllCall),
14303        #[allow(missing_docs)]
14304        paused_0(paused_0Call),
14305        #[allow(missing_docs)]
14306        paused_1(paused_1Call),
14307        #[allow(missing_docs)]
14308        pauserRegistry(pauserRegistryCall),
14309        #[allow(missing_docs)]
14310        pendingWithdrawals(pendingWithdrawalsCall),
14311        #[allow(missing_docs)]
14312        permissionController(permissionControllerCall),
14313        #[allow(missing_docs)]
14314        queueWithdrawals(queueWithdrawalsCall),
14315        #[allow(missing_docs)]
14316        queuedWithdrawals(queuedWithdrawalsCall),
14317        #[allow(missing_docs)]
14318        redelegate(redelegateCall),
14319        #[allow(missing_docs)]
14320        registerAsOperator(registerAsOperatorCall),
14321        #[allow(missing_docs)]
14322        renounceOwnership(renounceOwnershipCall),
14323        #[allow(missing_docs)]
14324        slashOperatorShares(slashOperatorSharesCall),
14325        #[allow(missing_docs)]
14326        strategyManager(strategyManagerCall),
14327        #[allow(missing_docs)]
14328        transferOwnership(transferOwnershipCall),
14329        #[allow(missing_docs)]
14330        undelegate(undelegateCall),
14331        #[allow(missing_docs)]
14332        unpause(unpauseCall),
14333        #[allow(missing_docs)]
14334        updateOperatorMetadataURI(updateOperatorMetadataURICall),
14335        #[allow(missing_docs)]
14336        version(versionCall),
14337    }
14338    #[automatically_derived]
14339    impl DelegationManagerCalls {
14340        /// All the selectors of this enum.
14341        ///
14342        /// Note that the selectors might not be in the same order as the variants.
14343        /// No guarantees are made about the order of the selectors.
14344        ///
14345        /// Prefer using `SolInterface` methods instead.
14346        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14347            [4u8, 164u8, 249u8, 121u8],
14348            [11u8, 159u8, 72u8, 122u8],
14349            [13u8, 216u8, 221u8, 2u8],
14350            [19u8, 100u8, 57u8, 221u8],
14351            [37u8, 223u8, 146u8, 46u8],
14352            [42u8, 166u8, 216u8, 136u8],
14353            [57u8, 183u8, 14u8, 56u8],
14354            [60u8, 101u8, 28u8, 242u8],
14355            [60u8, 222u8, 181u8, 224u8],
14356            [62u8, 40u8, 57u8, 29u8],
14357            [70u8, 87u8, 226u8, 106u8],
14358            [70u8, 101u8, 188u8, 218u8],
14359            [84u8, 183u8, 201u8, 108u8],
14360            [84u8, 253u8, 77u8, 80u8],
14361            [89u8, 92u8, 106u8, 103u8],
14362            [89u8, 123u8, 54u8, 218u8],
14363            [90u8, 200u8, 106u8, 183u8],
14364            [92u8, 151u8, 90u8, 187u8],
14365            [93u8, 151u8, 94u8, 136u8],
14366            [93u8, 214u8, 133u8, 121u8],
14367            [96u8, 27u8, 179u8, 111u8],
14368            [96u8, 160u8, 209u8, 206u8],
14369            [101u8, 218u8, 18u8, 100u8],
14370            [102u8, 213u8, 186u8, 147u8],
14371            [109u8, 112u8, 247u8, 174u8],
14372            [110u8, 23u8, 68u8, 72u8],
14373            [113u8, 80u8, 24u8, 166u8],
14374            [119u8, 142u8, 85u8, 243u8],
14375            [120u8, 41u8, 110u8, 197u8],
14376            [136u8, 111u8, 17u8, 149u8],
14377            [141u8, 165u8, 203u8, 91u8],
14378            [144u8, 4u8, 19u8, 71u8],
14379            [145u8, 4u8, 195u8, 25u8],
14380            [148u8, 53u8, 187u8, 67u8],
14381            [153u8, 245u8, 55u8, 27u8],
14382            [161u8, 120u8, 132u8, 132u8],
14383            [163u8, 58u8, 52u8, 51u8],
14384            [183u8, 240u8, 110u8, 190u8],
14385            [187u8, 69u8, 254u8, 242u8],
14386            [191u8, 174u8, 63u8, 210u8],
14387            [196u8, 72u8, 254u8, 184u8],
14388            [201u8, 120u8, 247u8, 172u8],
14389            [202u8, 138u8, 167u8, 199u8],
14390            [205u8, 109u8, 198u8, 135u8],
14391            [218u8, 139u8, 232u8, 100u8],
14392            [228u8, 204u8, 63u8, 144u8],
14393            [238u8, 169u8, 6u8, 75u8],
14394            [240u8, 224u8, 230u8, 118u8],
14395            [242u8, 253u8, 227u8, 139u8],
14396            [246u8, 152u8, 218u8, 37u8],
14397            [250u8, 188u8, 28u8, 188u8],
14398            [253u8, 138u8, 168u8, 141u8],
14399        ];
14400    }
14401    #[automatically_derived]
14402    impl alloy_sol_types::SolInterface for DelegationManagerCalls {
14403        const NAME: &'static str = "DelegationManagerCalls";
14404        const MIN_DATA_LENGTH: usize = 0usize;
14405        const COUNT: usize = 52usize;
14406        #[inline]
14407        fn selector(&self) -> [u8; 4] {
14408            match self {
14409                Self::DELEGATION_APPROVAL_TYPEHASH(_) => {
14410                    <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::SELECTOR
14411                }
14412                Self::allocationManager(_) => {
14413                    <allocationManagerCall as alloy_sol_types::SolCall>::SELECTOR
14414                }
14415                Self::beaconChainETHStrategy(_) => {
14416                    <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::SELECTOR
14417                }
14418                Self::calculateDelegationApprovalDigestHash(_) => {
14419                    <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::SELECTOR
14420                }
14421                Self::calculateWithdrawalRoot(_) => {
14422                    <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::SELECTOR
14423                }
14424                Self::completeQueuedWithdrawal(_) => {
14425                    <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
14426                }
14427                Self::completeQueuedWithdrawals(_) => {
14428                    <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
14429                }
14430                Self::convertToDepositShares(_) => {
14431                    <convertToDepositSharesCall as alloy_sol_types::SolCall>::SELECTOR
14432                }
14433                Self::cumulativeWithdrawalsQueued(_) => {
14434                    <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::SELECTOR
14435                }
14436                Self::decreaseDelegatedShares(_) => {
14437                    <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::SELECTOR
14438                }
14439                Self::delegateTo(_) => {
14440                    <delegateToCall as alloy_sol_types::SolCall>::SELECTOR
14441                }
14442                Self::delegatedTo(_) => {
14443                    <delegatedToCall as alloy_sol_types::SolCall>::SELECTOR
14444                }
14445                Self::delegationApprover(_) => {
14446                    <delegationApproverCall as alloy_sol_types::SolCall>::SELECTOR
14447                }
14448                Self::delegationApproverSaltIsSpent(_) => {
14449                    <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::SELECTOR
14450                }
14451                Self::depositScalingFactor(_) => {
14452                    <depositScalingFactorCall as alloy_sol_types::SolCall>::SELECTOR
14453                }
14454                Self::domainSeparator(_) => {
14455                    <domainSeparatorCall as alloy_sol_types::SolCall>::SELECTOR
14456                }
14457                Self::eigenPodManager(_) => {
14458                    <eigenPodManagerCall as alloy_sol_types::SolCall>::SELECTOR
14459                }
14460                Self::getDepositedShares(_) => {
14461                    <getDepositedSharesCall as alloy_sol_types::SolCall>::SELECTOR
14462                }
14463                Self::getOperatorShares(_) => {
14464                    <getOperatorSharesCall as alloy_sol_types::SolCall>::SELECTOR
14465                }
14466                Self::getOperatorsShares(_) => {
14467                    <getOperatorsSharesCall as alloy_sol_types::SolCall>::SELECTOR
14468                }
14469                Self::getQueuedWithdrawal(_) => {
14470                    <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
14471                }
14472                Self::getQueuedWithdrawalRoots(_) => {
14473                    <getQueuedWithdrawalRootsCall as alloy_sol_types::SolCall>::SELECTOR
14474                }
14475                Self::getQueuedWithdrawals(_) => {
14476                    <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
14477                }
14478                Self::getSlashableSharesInQueue(_) => {
14479                    <getSlashableSharesInQueueCall as alloy_sol_types::SolCall>::SELECTOR
14480                }
14481                Self::getWithdrawableShares(_) => {
14482                    <getWithdrawableSharesCall as alloy_sol_types::SolCall>::SELECTOR
14483                }
14484                Self::increaseDelegatedShares(_) => {
14485                    <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::SELECTOR
14486                }
14487                Self::initialize(_) => {
14488                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
14489                }
14490                Self::isDelegated(_) => {
14491                    <isDelegatedCall as alloy_sol_types::SolCall>::SELECTOR
14492                }
14493                Self::isOperator(_) => {
14494                    <isOperatorCall as alloy_sol_types::SolCall>::SELECTOR
14495                }
14496                Self::minWithdrawalDelayBlocks(_) => {
14497                    <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::SELECTOR
14498                }
14499                Self::modifyOperatorDetails(_) => {
14500                    <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::SELECTOR
14501                }
14502                Self::operatorShares(_) => {
14503                    <operatorSharesCall as alloy_sol_types::SolCall>::SELECTOR
14504                }
14505                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
14506                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
14507                Self::pauseAll(_) => <pauseAllCall as alloy_sol_types::SolCall>::SELECTOR,
14508                Self::paused_0(_) => <paused_0Call as alloy_sol_types::SolCall>::SELECTOR,
14509                Self::paused_1(_) => <paused_1Call as alloy_sol_types::SolCall>::SELECTOR,
14510                Self::pauserRegistry(_) => {
14511                    <pauserRegistryCall as alloy_sol_types::SolCall>::SELECTOR
14512                }
14513                Self::pendingWithdrawals(_) => {
14514                    <pendingWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
14515                }
14516                Self::permissionController(_) => {
14517                    <permissionControllerCall as alloy_sol_types::SolCall>::SELECTOR
14518                }
14519                Self::queueWithdrawals(_) => {
14520                    <queueWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
14521                }
14522                Self::queuedWithdrawals(_) => {
14523                    <queuedWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
14524                }
14525                Self::redelegate(_) => {
14526                    <redelegateCall as alloy_sol_types::SolCall>::SELECTOR
14527                }
14528                Self::registerAsOperator(_) => {
14529                    <registerAsOperatorCall as alloy_sol_types::SolCall>::SELECTOR
14530                }
14531                Self::renounceOwnership(_) => {
14532                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14533                }
14534                Self::slashOperatorShares(_) => {
14535                    <slashOperatorSharesCall as alloy_sol_types::SolCall>::SELECTOR
14536                }
14537                Self::strategyManager(_) => {
14538                    <strategyManagerCall as alloy_sol_types::SolCall>::SELECTOR
14539                }
14540                Self::transferOwnership(_) => {
14541                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14542                }
14543                Self::undelegate(_) => {
14544                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
14545                }
14546                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
14547                Self::updateOperatorMetadataURI(_) => {
14548                    <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::SELECTOR
14549                }
14550                Self::version(_) => <versionCall as alloy_sol_types::SolCall>::SELECTOR,
14551            }
14552        }
14553        #[inline]
14554        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14555            Self::SELECTORS.get(i).copied()
14556        }
14557        #[inline]
14558        fn valid_selector(selector: [u8; 4]) -> bool {
14559            Self::SELECTORS.binary_search(&selector).is_ok()
14560        }
14561        #[inline]
14562        #[allow(non_snake_case)]
14563        fn abi_decode_raw(
14564            selector: [u8; 4],
14565            data: &[u8],
14566            validate: bool,
14567        ) -> alloy_sol_types::Result<Self> {
14568            static DECODE_SHIMS: &[fn(
14569                &[u8],
14570                bool,
14571            ) -> alloy_sol_types::Result<DelegationManagerCalls>] = &[
14572                {
14573                    fn DELEGATION_APPROVAL_TYPEHASH(
14574                        data: &[u8],
14575                        validate: bool,
14576                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14577                        <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw(
14578                                data,
14579                                validate,
14580                            )
14581                            .map(DelegationManagerCalls::DELEGATION_APPROVAL_TYPEHASH)
14582                    }
14583                    DELEGATION_APPROVAL_TYPEHASH
14584                },
14585                {
14586                    fn calculateDelegationApprovalDigestHash(
14587                        data: &[u8],
14588                        validate: bool,
14589                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14590                        <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw(
14591                                data,
14592                                validate,
14593                            )
14594                            .map(
14595                                DelegationManagerCalls::calculateDelegationApprovalDigestHash,
14596                            )
14597                    }
14598                    calculateDelegationApprovalDigestHash
14599                },
14600                {
14601                    fn queueWithdrawals(
14602                        data: &[u8],
14603                        validate: bool,
14604                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14605                        <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
14606                                data,
14607                                validate,
14608                            )
14609                            .map(DelegationManagerCalls::queueWithdrawals)
14610                    }
14611                    queueWithdrawals
14612                },
14613                {
14614                    fn pause(
14615                        data: &[u8],
14616                        validate: bool,
14617                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14618                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(
14619                                data,
14620                                validate,
14621                            )
14622                            .map(DelegationManagerCalls::pause)
14623                    }
14624                    pause
14625                },
14626                {
14627                    fn convertToDepositShares(
14628                        data: &[u8],
14629                        validate: bool,
14630                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14631                        <convertToDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
14632                                data,
14633                                validate,
14634                            )
14635                            .map(DelegationManagerCalls::convertToDepositShares)
14636                    }
14637                    convertToDepositShares
14638                },
14639                {
14640                    fn registerAsOperator(
14641                        data: &[u8],
14642                        validate: bool,
14643                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14644                        <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
14645                                data,
14646                                validate,
14647                            )
14648                            .map(DelegationManagerCalls::registerAsOperator)
14649                    }
14650                    registerAsOperator
14651                },
14652                {
14653                    fn strategyManager(
14654                        data: &[u8],
14655                        validate: bool,
14656                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14657                        <strategyManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
14658                                data,
14659                                validate,
14660                            )
14661                            .map(DelegationManagerCalls::strategyManager)
14662                    }
14663                    strategyManager
14664                },
14665                {
14666                    fn increaseDelegatedShares(
14667                        data: &[u8],
14668                        validate: bool,
14669                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14670                        <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
14671                                data,
14672                                validate,
14673                            )
14674                            .map(DelegationManagerCalls::increaseDelegatedShares)
14675                    }
14676                    increaseDelegatedShares
14677                },
14678                {
14679                    fn delegationApprover(
14680                        data: &[u8],
14681                        validate: bool,
14682                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14683                        <delegationApproverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14684                                data,
14685                                validate,
14686                            )
14687                            .map(DelegationManagerCalls::delegationApprover)
14688                    }
14689                    delegationApprover
14690                },
14691                {
14692                    fn isDelegated(
14693                        data: &[u8],
14694                        validate: bool,
14695                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14696                        <isDelegatedCall as alloy_sol_types::SolCall>::abi_decode_raw(
14697                                data,
14698                                validate,
14699                            )
14700                            .map(DelegationManagerCalls::isDelegated)
14701                    }
14702                    isDelegated
14703                },
14704                {
14705                    fn permissionController(
14706                        data: &[u8],
14707                        validate: bool,
14708                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14709                        <permissionControllerCall as alloy_sol_types::SolCall>::abi_decode_raw(
14710                                data,
14711                                validate,
14712                            )
14713                            .map(DelegationManagerCalls::permissionController)
14714                    }
14715                    permissionController
14716                },
14717                {
14718                    fn eigenPodManager(
14719                        data: &[u8],
14720                        validate: bool,
14721                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14722                        <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
14723                                data,
14724                                validate,
14725                            )
14726                            .map(DelegationManagerCalls::eigenPodManager)
14727                    }
14728                    eigenPodManager
14729                },
14730                {
14731                    fn modifyOperatorDetails(
14732                        data: &[u8],
14733                        validate: bool,
14734                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14735                        <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_decode_raw(
14736                                data,
14737                                validate,
14738                            )
14739                            .map(DelegationManagerCalls::modifyOperatorDetails)
14740                    }
14741                    modifyOperatorDetails
14742                },
14743                {
14744                    fn version(
14745                        data: &[u8],
14746                        validate: bool,
14747                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14748                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw(
14749                                data,
14750                                validate,
14751                            )
14752                            .map(DelegationManagerCalls::version)
14753                    }
14754                    version
14755                },
14756                {
14757                    fn pauseAll(
14758                        data: &[u8],
14759                        validate: bool,
14760                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14761                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw(
14762                                data,
14763                                validate,
14764                            )
14765                            .map(DelegationManagerCalls::pauseAll)
14766                    }
14767                    pauseAll
14768                },
14769                {
14770                    fn calculateWithdrawalRoot(
14771                        data: &[u8],
14772                        validate: bool,
14773                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14774                        <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14775                                data,
14776                                validate,
14777                            )
14778                            .map(DelegationManagerCalls::calculateWithdrawalRoot)
14779                    }
14780                    calculateWithdrawalRoot
14781                },
14782                {
14783                    fn paused_0(
14784                        data: &[u8],
14785                        validate: bool,
14786                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14787                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
14788                                data,
14789                                validate,
14790                            )
14791                            .map(DelegationManagerCalls::paused_0)
14792                    }
14793                    paused_0
14794                },
14795                {
14796                    fn paused_1(
14797                        data: &[u8],
14798                        validate: bool,
14799                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14800                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
14801                                data,
14802                                validate,
14803                            )
14804                            .map(DelegationManagerCalls::paused_1)
14805                    }
14806                    paused_1
14807                },
14808                {
14809                    fn getQueuedWithdrawal(
14810                        data: &[u8],
14811                        validate: bool,
14812                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14813                        <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
14814                                data,
14815                                validate,
14816                            )
14817                            .map(DelegationManagerCalls::getQueuedWithdrawal)
14818                    }
14819                    getQueuedWithdrawal
14820                },
14821                {
14822                    fn getQueuedWithdrawals(
14823                        data: &[u8],
14824                        validate: bool,
14825                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14826                        <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
14827                                data,
14828                                validate,
14829                            )
14830                            .map(DelegationManagerCalls::getQueuedWithdrawals)
14831                    }
14832                    getQueuedWithdrawals
14833                },
14834                {
14835                    fn slashOperatorShares(
14836                        data: &[u8],
14837                        validate: bool,
14838                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14839                        <slashOperatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
14840                                data,
14841                                validate,
14842                            )
14843                            .map(DelegationManagerCalls::slashOperatorShares)
14844                    }
14845                    slashOperatorShares
14846                },
14847                {
14848                    fn decreaseDelegatedShares(
14849                        data: &[u8],
14850                        validate: bool,
14851                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14852                        <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
14853                                data,
14854                                validate,
14855                            )
14856                            .map(DelegationManagerCalls::decreaseDelegatedShares)
14857                    }
14858                    decreaseDelegatedShares
14859                },
14860                {
14861                    fn delegatedTo(
14862                        data: &[u8],
14863                        validate: bool,
14864                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14865                        <delegatedToCall as alloy_sol_types::SolCall>::abi_decode_raw(
14866                                data,
14867                                validate,
14868                            )
14869                            .map(DelegationManagerCalls::delegatedTo)
14870                    }
14871                    delegatedTo
14872                },
14873                {
14874                    fn getDepositedShares(
14875                        data: &[u8],
14876                        validate: bool,
14877                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14878                        <getDepositedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
14879                                data,
14880                                validate,
14881                            )
14882                            .map(DelegationManagerCalls::getDepositedShares)
14883                    }
14884                    getDepositedShares
14885                },
14886                {
14887                    fn isOperator(
14888                        data: &[u8],
14889                        validate: bool,
14890                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14891                        <isOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
14892                                data,
14893                                validate,
14894                            )
14895                            .map(DelegationManagerCalls::isOperator)
14896                    }
14897                    isOperator
14898                },
14899                {
14900                    fn getSlashableSharesInQueue(
14901                        data: &[u8],
14902                        validate: bool,
14903                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14904                        <getSlashableSharesInQueueCall as alloy_sol_types::SolCall>::abi_decode_raw(
14905                                data,
14906                                validate,
14907                            )
14908                            .map(DelegationManagerCalls::getSlashableSharesInQueue)
14909                    }
14910                    getSlashableSharesInQueue
14911                },
14912                {
14913                    fn renounceOwnership(
14914                        data: &[u8],
14915                        validate: bool,
14916                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14917                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14918                                data,
14919                                validate,
14920                            )
14921                            .map(DelegationManagerCalls::renounceOwnership)
14922                    }
14923                    renounceOwnership
14924                },
14925                {
14926                    fn operatorShares(
14927                        data: &[u8],
14928                        validate: bool,
14929                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14930                        <operatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
14931                                data,
14932                                validate,
14933                            )
14934                            .map(DelegationManagerCalls::operatorShares)
14935                    }
14936                    operatorShares
14937                },
14938                {
14939                    fn updateOperatorMetadataURI(
14940                        data: &[u8],
14941                        validate: bool,
14942                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14943                        <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_decode_raw(
14944                                data,
14945                                validate,
14946                            )
14947                            .map(DelegationManagerCalls::updateOperatorMetadataURI)
14948                    }
14949                    updateOperatorMetadataURI
14950                },
14951                {
14952                    fn pauserRegistry(
14953                        data: &[u8],
14954                        validate: bool,
14955                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14956                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
14957                                data,
14958                                validate,
14959                            )
14960                            .map(DelegationManagerCalls::pauserRegistry)
14961                    }
14962                    pauserRegistry
14963                },
14964                {
14965                    fn owner(
14966                        data: &[u8],
14967                        validate: bool,
14968                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14969                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
14970                                data,
14971                                validate,
14972                            )
14973                            .map(DelegationManagerCalls::owner)
14974                    }
14975                    owner
14976                },
14977                {
14978                    fn getOperatorShares(
14979                        data: &[u8],
14980                        validate: bool,
14981                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14982                        <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
14983                                data,
14984                                validate,
14985                            )
14986                            .map(DelegationManagerCalls::getOperatorShares)
14987                    }
14988                    getOperatorShares
14989                },
14990                {
14991                    fn beaconChainETHStrategy(
14992                        data: &[u8],
14993                        validate: bool,
14994                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14995                        <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw(
14996                                data,
14997                                validate,
14998                            )
14999                            .map(DelegationManagerCalls::beaconChainETHStrategy)
15000                    }
15001                    beaconChainETHStrategy
15002                },
15003                {
15004                    fn completeQueuedWithdrawals(
15005                        data: &[u8],
15006                        validate: bool,
15007                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15008                        <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
15009                                data,
15010                                validate,
15011                            )
15012                            .map(DelegationManagerCalls::completeQueuedWithdrawals)
15013                    }
15014                    completeQueuedWithdrawals
15015                },
15016                {
15017                    fn queuedWithdrawals(
15018                        data: &[u8],
15019                        validate: bool,
15020                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15021                        <queuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
15022                                data,
15023                                validate,
15024                            )
15025                            .map(DelegationManagerCalls::queuedWithdrawals)
15026                    }
15027                    queuedWithdrawals
15028                },
15029                {
15030                    fn cumulativeWithdrawalsQueued(
15031                        data: &[u8],
15032                        validate: bool,
15033                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15034                        <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_decode_raw(
15035                                data,
15036                                validate,
15037                            )
15038                            .map(DelegationManagerCalls::cumulativeWithdrawalsQueued)
15039                    }
15040                    cumulativeWithdrawalsQueued
15041                },
15042                {
15043                    fn redelegate(
15044                        data: &[u8],
15045                        validate: bool,
15046                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15047                        <redelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15048                                data,
15049                                validate,
15050                            )
15051                            .map(DelegationManagerCalls::redelegate)
15052                    }
15053                    redelegate
15054                },
15055                {
15056                    fn pendingWithdrawals(
15057                        data: &[u8],
15058                        validate: bool,
15059                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15060                        <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
15061                                data,
15062                                validate,
15063                            )
15064                            .map(DelegationManagerCalls::pendingWithdrawals)
15065                    }
15066                    pendingWithdrawals
15067                },
15068                {
15069                    fn delegationApproverSaltIsSpent(
15070                        data: &[u8],
15071                        validate: bool,
15072                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15073                        <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_decode_raw(
15074                                data,
15075                                validate,
15076                            )
15077                            .map(DelegationManagerCalls::delegationApproverSaltIsSpent)
15078                    }
15079                    delegationApproverSaltIsSpent
15080                },
15081                {
15082                    fn depositScalingFactor(
15083                        data: &[u8],
15084                        validate: bool,
15085                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15086                        <depositScalingFactorCall as alloy_sol_types::SolCall>::abi_decode_raw(
15087                                data,
15088                                validate,
15089                            )
15090                            .map(DelegationManagerCalls::depositScalingFactor)
15091                    }
15092                    depositScalingFactor
15093                },
15094                {
15095                    fn minWithdrawalDelayBlocks(
15096                        data: &[u8],
15097                        validate: bool,
15098                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15099                        <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw(
15100                                data,
15101                                validate,
15102                            )
15103                            .map(DelegationManagerCalls::minWithdrawalDelayBlocks)
15104                    }
15105                    minWithdrawalDelayBlocks
15106                },
15107                {
15108                    fn getWithdrawableShares(
15109                        data: &[u8],
15110                        validate: bool,
15111                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15112                        <getWithdrawableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
15113                                data,
15114                                validate,
15115                            )
15116                            .map(DelegationManagerCalls::getWithdrawableShares)
15117                    }
15118                    getWithdrawableShares
15119                },
15120                {
15121                    fn allocationManager(
15122                        data: &[u8],
15123                        validate: bool,
15124                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15125                        <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
15126                                data,
15127                                validate,
15128                            )
15129                            .map(DelegationManagerCalls::allocationManager)
15130                    }
15131                    allocationManager
15132                },
15133                {
15134                    fn initialize(
15135                        data: &[u8],
15136                        validate: bool,
15137                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15138                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
15139                                data,
15140                                validate,
15141                            )
15142                            .map(DelegationManagerCalls::initialize)
15143                    }
15144                    initialize
15145                },
15146                {
15147                    fn undelegate(
15148                        data: &[u8],
15149                        validate: bool,
15150                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15151                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15152                                data,
15153                                validate,
15154                            )
15155                            .map(DelegationManagerCalls::undelegate)
15156                    }
15157                    undelegate
15158                },
15159                {
15160                    fn completeQueuedWithdrawal(
15161                        data: &[u8],
15162                        validate: bool,
15163                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15164                        <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
15165                                data,
15166                                validate,
15167                            )
15168                            .map(DelegationManagerCalls::completeQueuedWithdrawal)
15169                    }
15170                    completeQueuedWithdrawal
15171                },
15172                {
15173                    fn delegateTo(
15174                        data: &[u8],
15175                        validate: bool,
15176                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15177                        <delegateToCall as alloy_sol_types::SolCall>::abi_decode_raw(
15178                                data,
15179                                validate,
15180                            )
15181                            .map(DelegationManagerCalls::delegateTo)
15182                    }
15183                    delegateTo
15184                },
15185                {
15186                    fn getOperatorsShares(
15187                        data: &[u8],
15188                        validate: bool,
15189                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15190                        <getOperatorsSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
15191                                data,
15192                                validate,
15193                            )
15194                            .map(DelegationManagerCalls::getOperatorsShares)
15195                    }
15196                    getOperatorsShares
15197                },
15198                {
15199                    fn transferOwnership(
15200                        data: &[u8],
15201                        validate: bool,
15202                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15203                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
15204                                data,
15205                                validate,
15206                            )
15207                            .map(DelegationManagerCalls::transferOwnership)
15208                    }
15209                    transferOwnership
15210                },
15211                {
15212                    fn domainSeparator(
15213                        data: &[u8],
15214                        validate: bool,
15215                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15216                        <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
15217                                data,
15218                                validate,
15219                            )
15220                            .map(DelegationManagerCalls::domainSeparator)
15221                    }
15222                    domainSeparator
15223                },
15224                {
15225                    fn unpause(
15226                        data: &[u8],
15227                        validate: bool,
15228                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15229                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(
15230                                data,
15231                                validate,
15232                            )
15233                            .map(DelegationManagerCalls::unpause)
15234                    }
15235                    unpause
15236                },
15237                {
15238                    fn getQueuedWithdrawalRoots(
15239                        data: &[u8],
15240                        validate: bool,
15241                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
15242                        <getQueuedWithdrawalRootsCall as alloy_sol_types::SolCall>::abi_decode_raw(
15243                                data,
15244                                validate,
15245                            )
15246                            .map(DelegationManagerCalls::getQueuedWithdrawalRoots)
15247                    }
15248                    getQueuedWithdrawalRoots
15249                },
15250            ];
15251            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15252                return Err(
15253                    alloy_sol_types::Error::unknown_selector(
15254                        <Self as alloy_sol_types::SolInterface>::NAME,
15255                        selector,
15256                    ),
15257                );
15258            };
15259            DECODE_SHIMS[idx](data, validate)
15260        }
15261        #[inline]
15262        fn abi_encoded_size(&self) -> usize {
15263            match self {
15264                Self::DELEGATION_APPROVAL_TYPEHASH(inner) => {
15265                    <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encoded_size(
15266                        inner,
15267                    )
15268                }
15269                Self::allocationManager(inner) => {
15270                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
15271                        inner,
15272                    )
15273                }
15274                Self::beaconChainETHStrategy(inner) => {
15275                    <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_encoded_size(
15276                        inner,
15277                    )
15278                }
15279                Self::calculateDelegationApprovalDigestHash(inner) => {
15280                    <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
15281                        inner,
15282                    )
15283                }
15284                Self::calculateWithdrawalRoot(inner) => {
15285                    <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15286                        inner,
15287                    )
15288                }
15289                Self::completeQueuedWithdrawal(inner) => {
15290                    <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
15291                        inner,
15292                    )
15293                }
15294                Self::completeQueuedWithdrawals(inner) => {
15295                    <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15296                        inner,
15297                    )
15298                }
15299                Self::convertToDepositShares(inner) => {
15300                    <convertToDepositSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
15301                        inner,
15302                    )
15303                }
15304                Self::cumulativeWithdrawalsQueued(inner) => {
15305                    <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_encoded_size(
15306                        inner,
15307                    )
15308                }
15309                Self::decreaseDelegatedShares(inner) => {
15310                    <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
15311                        inner,
15312                    )
15313                }
15314                Self::delegateTo(inner) => {
15315                    <delegateToCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15316                }
15317                Self::delegatedTo(inner) => {
15318                    <delegatedToCall as alloy_sol_types::SolCall>::abi_encoded_size(
15319                        inner,
15320                    )
15321                }
15322                Self::delegationApprover(inner) => {
15323                    <delegationApproverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15324                        inner,
15325                    )
15326                }
15327                Self::delegationApproverSaltIsSpent(inner) => {
15328                    <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_encoded_size(
15329                        inner,
15330                    )
15331                }
15332                Self::depositScalingFactor(inner) => {
15333                    <depositScalingFactorCall as alloy_sol_types::SolCall>::abi_encoded_size(
15334                        inner,
15335                    )
15336                }
15337                Self::domainSeparator(inner) => {
15338                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
15339                        inner,
15340                    )
15341                }
15342                Self::eigenPodManager(inner) => {
15343                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
15344                        inner,
15345                    )
15346                }
15347                Self::getDepositedShares(inner) => {
15348                    <getDepositedSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
15349                        inner,
15350                    )
15351                }
15352                Self::getOperatorShares(inner) => {
15353                    <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
15354                        inner,
15355                    )
15356                }
15357                Self::getOperatorsShares(inner) => {
15358                    <getOperatorsSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
15359                        inner,
15360                    )
15361                }
15362                Self::getQueuedWithdrawal(inner) => {
15363                    <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
15364                        inner,
15365                    )
15366                }
15367                Self::getQueuedWithdrawalRoots(inner) => {
15368                    <getQueuedWithdrawalRootsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15369                        inner,
15370                    )
15371                }
15372                Self::getQueuedWithdrawals(inner) => {
15373                    <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15374                        inner,
15375                    )
15376                }
15377                Self::getSlashableSharesInQueue(inner) => {
15378                    <getSlashableSharesInQueueCall as alloy_sol_types::SolCall>::abi_encoded_size(
15379                        inner,
15380                    )
15381                }
15382                Self::getWithdrawableShares(inner) => {
15383                    <getWithdrawableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
15384                        inner,
15385                    )
15386                }
15387                Self::increaseDelegatedShares(inner) => {
15388                    <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
15389                        inner,
15390                    )
15391                }
15392                Self::initialize(inner) => {
15393                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15394                }
15395                Self::isDelegated(inner) => {
15396                    <isDelegatedCall as alloy_sol_types::SolCall>::abi_encoded_size(
15397                        inner,
15398                    )
15399                }
15400                Self::isOperator(inner) => {
15401                    <isOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15402                }
15403                Self::minWithdrawalDelayBlocks(inner) => {
15404                    <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encoded_size(
15405                        inner,
15406                    )
15407                }
15408                Self::modifyOperatorDetails(inner) => {
15409                    <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15410                        inner,
15411                    )
15412                }
15413                Self::operatorShares(inner) => {
15414                    <operatorSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
15415                        inner,
15416                    )
15417                }
15418                Self::owner(inner) => {
15419                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15420                }
15421                Self::pause(inner) => {
15422                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15423                }
15424                Self::pauseAll(inner) => {
15425                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15426                }
15427                Self::paused_0(inner) => {
15428                    <paused_0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15429                }
15430                Self::paused_1(inner) => {
15431                    <paused_1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15432                }
15433                Self::pauserRegistry(inner) => {
15434                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
15435                        inner,
15436                    )
15437                }
15438                Self::pendingWithdrawals(inner) => {
15439                    <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15440                        inner,
15441                    )
15442                }
15443                Self::permissionController(inner) => {
15444                    <permissionControllerCall as alloy_sol_types::SolCall>::abi_encoded_size(
15445                        inner,
15446                    )
15447                }
15448                Self::queueWithdrawals(inner) => {
15449                    <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15450                        inner,
15451                    )
15452                }
15453                Self::queuedWithdrawals(inner) => {
15454                    <queuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15455                        inner,
15456                    )
15457                }
15458                Self::redelegate(inner) => {
15459                    <redelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15460                }
15461                Self::registerAsOperator(inner) => {
15462                    <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
15463                        inner,
15464                    )
15465                }
15466                Self::renounceOwnership(inner) => {
15467                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15468                        inner,
15469                    )
15470                }
15471                Self::slashOperatorShares(inner) => {
15472                    <slashOperatorSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
15473                        inner,
15474                    )
15475                }
15476                Self::strategyManager(inner) => {
15477                    <strategyManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
15478                        inner,
15479                    )
15480                }
15481                Self::transferOwnership(inner) => {
15482                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15483                        inner,
15484                    )
15485                }
15486                Self::undelegate(inner) => {
15487                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15488                }
15489                Self::unpause(inner) => {
15490                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15491                }
15492                Self::updateOperatorMetadataURI(inner) => {
15493                    <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_encoded_size(
15494                        inner,
15495                    )
15496                }
15497                Self::version(inner) => {
15498                    <versionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15499                }
15500            }
15501        }
15502        #[inline]
15503        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15504            match self {
15505                Self::DELEGATION_APPROVAL_TYPEHASH(inner) => {
15506                    <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encode_raw(
15507                        inner,
15508                        out,
15509                    )
15510                }
15511                Self::allocationManager(inner) => {
15512                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
15513                        inner,
15514                        out,
15515                    )
15516                }
15517                Self::beaconChainETHStrategy(inner) => {
15518                    <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_encode_raw(
15519                        inner,
15520                        out,
15521                    )
15522                }
15523                Self::calculateDelegationApprovalDigestHash(inner) => {
15524                    <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
15525                        inner,
15526                        out,
15527                    )
15528                }
15529                Self::calculateWithdrawalRoot(inner) => {
15530                    <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15531                        inner,
15532                        out,
15533                    )
15534                }
15535                Self::completeQueuedWithdrawal(inner) => {
15536                    <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
15537                        inner,
15538                        out,
15539                    )
15540                }
15541                Self::completeQueuedWithdrawals(inner) => {
15542                    <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15543                        inner,
15544                        out,
15545                    )
15546                }
15547                Self::convertToDepositShares(inner) => {
15548                    <convertToDepositSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
15549                        inner,
15550                        out,
15551                    )
15552                }
15553                Self::cumulativeWithdrawalsQueued(inner) => {
15554                    <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_encode_raw(
15555                        inner,
15556                        out,
15557                    )
15558                }
15559                Self::decreaseDelegatedShares(inner) => {
15560                    <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
15561                        inner,
15562                        out,
15563                    )
15564                }
15565                Self::delegateTo(inner) => {
15566                    <delegateToCall as alloy_sol_types::SolCall>::abi_encode_raw(
15567                        inner,
15568                        out,
15569                    )
15570                }
15571                Self::delegatedTo(inner) => {
15572                    <delegatedToCall as alloy_sol_types::SolCall>::abi_encode_raw(
15573                        inner,
15574                        out,
15575                    )
15576                }
15577                Self::delegationApprover(inner) => {
15578                    <delegationApproverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15579                        inner,
15580                        out,
15581                    )
15582                }
15583                Self::delegationApproverSaltIsSpent(inner) => {
15584                    <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_encode_raw(
15585                        inner,
15586                        out,
15587                    )
15588                }
15589                Self::depositScalingFactor(inner) => {
15590                    <depositScalingFactorCall as alloy_sol_types::SolCall>::abi_encode_raw(
15591                        inner,
15592                        out,
15593                    )
15594                }
15595                Self::domainSeparator(inner) => {
15596                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
15597                        inner,
15598                        out,
15599                    )
15600                }
15601                Self::eigenPodManager(inner) => {
15602                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
15603                        inner,
15604                        out,
15605                    )
15606                }
15607                Self::getDepositedShares(inner) => {
15608                    <getDepositedSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
15609                        inner,
15610                        out,
15611                    )
15612                }
15613                Self::getOperatorShares(inner) => {
15614                    <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
15615                        inner,
15616                        out,
15617                    )
15618                }
15619                Self::getOperatorsShares(inner) => {
15620                    <getOperatorsSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
15621                        inner,
15622                        out,
15623                    )
15624                }
15625                Self::getQueuedWithdrawal(inner) => {
15626                    <getQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
15627                        inner,
15628                        out,
15629                    )
15630                }
15631                Self::getQueuedWithdrawalRoots(inner) => {
15632                    <getQueuedWithdrawalRootsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15633                        inner,
15634                        out,
15635                    )
15636                }
15637                Self::getQueuedWithdrawals(inner) => {
15638                    <getQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15639                        inner,
15640                        out,
15641                    )
15642                }
15643                Self::getSlashableSharesInQueue(inner) => {
15644                    <getSlashableSharesInQueueCall as alloy_sol_types::SolCall>::abi_encode_raw(
15645                        inner,
15646                        out,
15647                    )
15648                }
15649                Self::getWithdrawableShares(inner) => {
15650                    <getWithdrawableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
15651                        inner,
15652                        out,
15653                    )
15654                }
15655                Self::increaseDelegatedShares(inner) => {
15656                    <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
15657                        inner,
15658                        out,
15659                    )
15660                }
15661                Self::initialize(inner) => {
15662                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15663                        inner,
15664                        out,
15665                    )
15666                }
15667                Self::isDelegated(inner) => {
15668                    <isDelegatedCall as alloy_sol_types::SolCall>::abi_encode_raw(
15669                        inner,
15670                        out,
15671                    )
15672                }
15673                Self::isOperator(inner) => {
15674                    <isOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
15675                        inner,
15676                        out,
15677                    )
15678                }
15679                Self::minWithdrawalDelayBlocks(inner) => {
15680                    <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encode_raw(
15681                        inner,
15682                        out,
15683                    )
15684                }
15685                Self::modifyOperatorDetails(inner) => {
15686                    <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15687                        inner,
15688                        out,
15689                    )
15690                }
15691                Self::operatorShares(inner) => {
15692                    <operatorSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
15693                        inner,
15694                        out,
15695                    )
15696                }
15697                Self::owner(inner) => {
15698                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15699                }
15700                Self::pause(inner) => {
15701                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15702                }
15703                Self::pauseAll(inner) => {
15704                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encode_raw(
15705                        inner,
15706                        out,
15707                    )
15708                }
15709                Self::paused_0(inner) => {
15710                    <paused_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
15711                        inner,
15712                        out,
15713                    )
15714                }
15715                Self::paused_1(inner) => {
15716                    <paused_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
15717                        inner,
15718                        out,
15719                    )
15720                }
15721                Self::pauserRegistry(inner) => {
15722                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
15723                        inner,
15724                        out,
15725                    )
15726                }
15727                Self::pendingWithdrawals(inner) => {
15728                    <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15729                        inner,
15730                        out,
15731                    )
15732                }
15733                Self::permissionController(inner) => {
15734                    <permissionControllerCall as alloy_sol_types::SolCall>::abi_encode_raw(
15735                        inner,
15736                        out,
15737                    )
15738                }
15739                Self::queueWithdrawals(inner) => {
15740                    <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15741                        inner,
15742                        out,
15743                    )
15744                }
15745                Self::queuedWithdrawals(inner) => {
15746                    <queuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15747                        inner,
15748                        out,
15749                    )
15750                }
15751                Self::redelegate(inner) => {
15752                    <redelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15753                        inner,
15754                        out,
15755                    )
15756                }
15757                Self::registerAsOperator(inner) => {
15758                    <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
15759                        inner,
15760                        out,
15761                    )
15762                }
15763                Self::renounceOwnership(inner) => {
15764                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15765                        inner,
15766                        out,
15767                    )
15768                }
15769                Self::slashOperatorShares(inner) => {
15770                    <slashOperatorSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
15771                        inner,
15772                        out,
15773                    )
15774                }
15775                Self::strategyManager(inner) => {
15776                    <strategyManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
15777                        inner,
15778                        out,
15779                    )
15780                }
15781                Self::transferOwnership(inner) => {
15782                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15783                        inner,
15784                        out,
15785                    )
15786                }
15787                Self::undelegate(inner) => {
15788                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15789                        inner,
15790                        out,
15791                    )
15792                }
15793                Self::unpause(inner) => {
15794                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15795                }
15796                Self::updateOperatorMetadataURI(inner) => {
15797                    <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_encode_raw(
15798                        inner,
15799                        out,
15800                    )
15801                }
15802                Self::version(inner) => {
15803                    <versionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15804                }
15805            }
15806        }
15807    }
15808    ///Container for all the [`DelegationManager`](self) custom errors.
15809    #[derive(Debug, PartialEq, Eq, Hash)]
15810    pub enum DelegationManagerErrors {
15811        #[allow(missing_docs)]
15812        ActivelyDelegated(ActivelyDelegated),
15813        #[allow(missing_docs)]
15814        CallerCannotUndelegate(CallerCannotUndelegate),
15815        #[allow(missing_docs)]
15816        CurrentlyPaused(CurrentlyPaused),
15817        #[allow(missing_docs)]
15818        FullySlashed(FullySlashed),
15819        #[allow(missing_docs)]
15820        InputAddressZero(InputAddressZero),
15821        #[allow(missing_docs)]
15822        InputArrayLengthMismatch(InputArrayLengthMismatch),
15823        #[allow(missing_docs)]
15824        InputArrayLengthZero(InputArrayLengthZero),
15825        #[allow(missing_docs)]
15826        InvalidNewPausedStatus(InvalidNewPausedStatus),
15827        #[allow(missing_docs)]
15828        InvalidPermissions(InvalidPermissions),
15829        #[allow(missing_docs)]
15830        InvalidShortString(InvalidShortString),
15831        #[allow(missing_docs)]
15832        InvalidSignature(InvalidSignature),
15833        #[allow(missing_docs)]
15834        InvalidSnapshotOrdering(InvalidSnapshotOrdering),
15835        #[allow(missing_docs)]
15836        NotActivelyDelegated(NotActivelyDelegated),
15837        #[allow(missing_docs)]
15838        OnlyAllocationManager(OnlyAllocationManager),
15839        #[allow(missing_docs)]
15840        OnlyEigenPodManager(OnlyEigenPodManager),
15841        #[allow(missing_docs)]
15842        OnlyPauser(OnlyPauser),
15843        #[allow(missing_docs)]
15844        OnlyStrategyManagerOrEigenPodManager(OnlyStrategyManagerOrEigenPodManager),
15845        #[allow(missing_docs)]
15846        OnlyUnpauser(OnlyUnpauser),
15847        #[allow(missing_docs)]
15848        OperatorNotRegistered(OperatorNotRegistered),
15849        #[allow(missing_docs)]
15850        OperatorsCannotUndelegate(OperatorsCannotUndelegate),
15851        #[allow(missing_docs)]
15852        SaltSpent(SaltSpent),
15853        #[allow(missing_docs)]
15854        SignatureExpired(SignatureExpired),
15855        #[allow(missing_docs)]
15856        StringTooLong(StringTooLong),
15857        #[allow(missing_docs)]
15858        WithdrawalDelayNotElapsed(WithdrawalDelayNotElapsed),
15859        #[allow(missing_docs)]
15860        WithdrawalNotQueued(WithdrawalNotQueued),
15861        #[allow(missing_docs)]
15862        WithdrawerNotCaller(WithdrawerNotCaller),
15863    }
15864    #[automatically_derived]
15865    impl DelegationManagerErrors {
15866        /// All the selectors of this enum.
15867        ///
15868        /// Note that the selectors might not be in the same order as the variants.
15869        /// No guarantees are made about the order of the selectors.
15870        ///
15871        /// Prefer using `SolInterface` methods instead.
15872        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15873            [8u8, 25u8, 189u8, 205u8],
15874            [17u8, 72u8, 26u8, 148u8],
15875            [35u8, 216u8, 113u8, 165u8],
15876            [37u8, 236u8, 108u8, 31u8],
15877            [40u8, 206u8, 241u8, 164u8],
15878            [42u8, 55u8, 28u8, 126u8],
15879            [48u8, 90u8, 39u8, 169u8],
15880            [53u8, 49u8, 50u8, 68u8],
15881            [60u8, 147u8, 52u8, 70u8],
15882            [67u8, 113u8, 74u8, 253u8],
15883            [88u8, 68u8, 52u8, 212u8],
15884            [115u8, 99u8, 33u8, 118u8],
15885            [117u8, 223u8, 81u8, 220u8],
15886            [119u8, 229u8, 106u8, 6u8],
15887            [121u8, 72u8, 33u8, 255u8],
15888            [121u8, 108u8, 197u8, 37u8],
15889            [132u8, 10u8, 72u8, 213u8],
15890            [135u8, 201u8, 210u8, 25u8],
15891            [139u8, 170u8, 87u8, 159u8],
15892            [142u8, 81u8, 153u8, 168u8],
15893            [147u8, 45u8, 148u8, 247u8],
15894            [165u8, 199u8, 196u8, 69u8],
15895            [179u8, 81u8, 43u8, 12u8],
15896            [198u8, 29u8, 202u8, 93u8],
15897            [200u8, 78u8, 153u8, 132u8],
15898            [241u8, 236u8, 245u8, 194u8],
15899        ];
15900    }
15901    #[automatically_derived]
15902    impl alloy_sol_types::SolInterface for DelegationManagerErrors {
15903        const NAME: &'static str = "DelegationManagerErrors";
15904        const MIN_DATA_LENGTH: usize = 0usize;
15905        const COUNT: usize = 26usize;
15906        #[inline]
15907        fn selector(&self) -> [u8; 4] {
15908            match self {
15909                Self::ActivelyDelegated(_) => {
15910                    <ActivelyDelegated as alloy_sol_types::SolError>::SELECTOR
15911                }
15912                Self::CallerCannotUndelegate(_) => {
15913                    <CallerCannotUndelegate as alloy_sol_types::SolError>::SELECTOR
15914                }
15915                Self::CurrentlyPaused(_) => {
15916                    <CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR
15917                }
15918                Self::FullySlashed(_) => {
15919                    <FullySlashed as alloy_sol_types::SolError>::SELECTOR
15920                }
15921                Self::InputAddressZero(_) => {
15922                    <InputAddressZero as alloy_sol_types::SolError>::SELECTOR
15923                }
15924                Self::InputArrayLengthMismatch(_) => {
15925                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
15926                }
15927                Self::InputArrayLengthZero(_) => {
15928                    <InputArrayLengthZero as alloy_sol_types::SolError>::SELECTOR
15929                }
15930                Self::InvalidNewPausedStatus(_) => {
15931                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::SELECTOR
15932                }
15933                Self::InvalidPermissions(_) => {
15934                    <InvalidPermissions as alloy_sol_types::SolError>::SELECTOR
15935                }
15936                Self::InvalidShortString(_) => {
15937                    <InvalidShortString as alloy_sol_types::SolError>::SELECTOR
15938                }
15939                Self::InvalidSignature(_) => {
15940                    <InvalidSignature as alloy_sol_types::SolError>::SELECTOR
15941                }
15942                Self::InvalidSnapshotOrdering(_) => {
15943                    <InvalidSnapshotOrdering as alloy_sol_types::SolError>::SELECTOR
15944                }
15945                Self::NotActivelyDelegated(_) => {
15946                    <NotActivelyDelegated as alloy_sol_types::SolError>::SELECTOR
15947                }
15948                Self::OnlyAllocationManager(_) => {
15949                    <OnlyAllocationManager as alloy_sol_types::SolError>::SELECTOR
15950                }
15951                Self::OnlyEigenPodManager(_) => {
15952                    <OnlyEigenPodManager as alloy_sol_types::SolError>::SELECTOR
15953                }
15954                Self::OnlyPauser(_) => {
15955                    <OnlyPauser as alloy_sol_types::SolError>::SELECTOR
15956                }
15957                Self::OnlyStrategyManagerOrEigenPodManager(_) => {
15958                    <OnlyStrategyManagerOrEigenPodManager as alloy_sol_types::SolError>::SELECTOR
15959                }
15960                Self::OnlyUnpauser(_) => {
15961                    <OnlyUnpauser as alloy_sol_types::SolError>::SELECTOR
15962                }
15963                Self::OperatorNotRegistered(_) => {
15964                    <OperatorNotRegistered as alloy_sol_types::SolError>::SELECTOR
15965                }
15966                Self::OperatorsCannotUndelegate(_) => {
15967                    <OperatorsCannotUndelegate as alloy_sol_types::SolError>::SELECTOR
15968                }
15969                Self::SaltSpent(_) => <SaltSpent as alloy_sol_types::SolError>::SELECTOR,
15970                Self::SignatureExpired(_) => {
15971                    <SignatureExpired as alloy_sol_types::SolError>::SELECTOR
15972                }
15973                Self::StringTooLong(_) => {
15974                    <StringTooLong as alloy_sol_types::SolError>::SELECTOR
15975                }
15976                Self::WithdrawalDelayNotElapsed(_) => {
15977                    <WithdrawalDelayNotElapsed as alloy_sol_types::SolError>::SELECTOR
15978                }
15979                Self::WithdrawalNotQueued(_) => {
15980                    <WithdrawalNotQueued as alloy_sol_types::SolError>::SELECTOR
15981                }
15982                Self::WithdrawerNotCaller(_) => {
15983                    <WithdrawerNotCaller as alloy_sol_types::SolError>::SELECTOR
15984                }
15985            }
15986        }
15987        #[inline]
15988        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15989            Self::SELECTORS.get(i).copied()
15990        }
15991        #[inline]
15992        fn valid_selector(selector: [u8; 4]) -> bool {
15993            Self::SELECTORS.binary_search(&selector).is_ok()
15994        }
15995        #[inline]
15996        #[allow(non_snake_case)]
15997        fn abi_decode_raw(
15998            selector: [u8; 4],
15999            data: &[u8],
16000            validate: bool,
16001        ) -> alloy_sol_types::Result<Self> {
16002            static DECODE_SHIMS: &[fn(
16003                &[u8],
16004                bool,
16005            ) -> alloy_sol_types::Result<DelegationManagerErrors>] = &[
16006                {
16007                    fn SignatureExpired(
16008                        data: &[u8],
16009                        validate: bool,
16010                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16011                        <SignatureExpired as alloy_sol_types::SolError>::abi_decode_raw(
16012                                data,
16013                                validate,
16014                            )
16015                            .map(DelegationManagerErrors::SignatureExpired)
16016                    }
16017                    SignatureExpired
16018                },
16019                {
16020                    fn OnlyStrategyManagerOrEigenPodManager(
16021                        data: &[u8],
16022                        validate: bool,
16023                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16024                        <OnlyStrategyManagerOrEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw(
16025                                data,
16026                                validate,
16027                            )
16028                            .map(
16029                                DelegationManagerErrors::OnlyStrategyManagerOrEigenPodManager,
16030                            )
16031                    }
16032                    OnlyStrategyManagerOrEigenPodManager
16033                },
16034                {
16035                    fn OnlyAllocationManager(
16036                        data: &[u8],
16037                        validate: bool,
16038                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16039                        <OnlyAllocationManager as alloy_sol_types::SolError>::abi_decode_raw(
16040                                data,
16041                                validate,
16042                            )
16043                            .map(DelegationManagerErrors::OnlyAllocationManager)
16044                    }
16045                    OnlyAllocationManager
16046                },
16047                {
16048                    fn OperatorNotRegistered(
16049                        data: &[u8],
16050                        validate: bool,
16051                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16052                        <OperatorNotRegistered as alloy_sol_types::SolError>::abi_decode_raw(
16053                                data,
16054                                validate,
16055                            )
16056                            .map(DelegationManagerErrors::OperatorNotRegistered)
16057                    }
16058                    OperatorNotRegistered
16059                },
16060                {
16061                    fn FullySlashed(
16062                        data: &[u8],
16063                        validate: bool,
16064                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16065                        <FullySlashed as alloy_sol_types::SolError>::abi_decode_raw(
16066                                data,
16067                                validate,
16068                            )
16069                            .map(DelegationManagerErrors::FullySlashed)
16070                    }
16071                    FullySlashed
16072                },
16073                {
16074                    fn InvalidSnapshotOrdering(
16075                        data: &[u8],
16076                        validate: bool,
16077                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16078                        <InvalidSnapshotOrdering as alloy_sol_types::SolError>::abi_decode_raw(
16079                                data,
16080                                validate,
16081                            )
16082                            .map(DelegationManagerErrors::InvalidSnapshotOrdering)
16083                    }
16084                    InvalidSnapshotOrdering
16085                },
16086                {
16087                    fn StringTooLong(
16088                        data: &[u8],
16089                        validate: bool,
16090                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16091                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw(
16092                                data,
16093                                validate,
16094                            )
16095                            .map(DelegationManagerErrors::StringTooLong)
16096                    }
16097                    StringTooLong
16098                },
16099                {
16100                    fn SaltSpent(
16101                        data: &[u8],
16102                        validate: bool,
16103                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16104                        <SaltSpent as alloy_sol_types::SolError>::abi_decode_raw(
16105                                data,
16106                                validate,
16107                            )
16108                            .map(DelegationManagerErrors::SaltSpent)
16109                    }
16110                    SaltSpent
16111                },
16112                {
16113                    fn CallerCannotUndelegate(
16114                        data: &[u8],
16115                        validate: bool,
16116                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16117                        <CallerCannotUndelegate as alloy_sol_types::SolError>::abi_decode_raw(
16118                                data,
16119                                validate,
16120                            )
16121                            .map(DelegationManagerErrors::CallerCannotUndelegate)
16122                    }
16123                    CallerCannotUndelegate
16124                },
16125                {
16126                    fn InputArrayLengthMismatch(
16127                        data: &[u8],
16128                        validate: bool,
16129                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16130                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
16131                                data,
16132                                validate,
16133                            )
16134                            .map(DelegationManagerErrors::InputArrayLengthMismatch)
16135                    }
16136                    InputArrayLengthMismatch
16137                },
16138                {
16139                    fn WithdrawerNotCaller(
16140                        data: &[u8],
16141                        validate: bool,
16142                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16143                        <WithdrawerNotCaller as alloy_sol_types::SolError>::abi_decode_raw(
16144                                data,
16145                                validate,
16146                            )
16147                            .map(DelegationManagerErrors::WithdrawerNotCaller)
16148                    }
16149                    WithdrawerNotCaller
16150                },
16151                {
16152                    fn InputAddressZero(
16153                        data: &[u8],
16154                        validate: bool,
16155                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16156                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw(
16157                                data,
16158                                validate,
16159                            )
16160                            .map(DelegationManagerErrors::InputAddressZero)
16161                    }
16162                    InputAddressZero
16163                },
16164                {
16165                    fn OnlyPauser(
16166                        data: &[u8],
16167                        validate: bool,
16168                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16169                        <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw(
16170                                data,
16171                                validate,
16172                            )
16173                            .map(DelegationManagerErrors::OnlyPauser)
16174                    }
16175                    OnlyPauser
16176                },
16177                {
16178                    fn ActivelyDelegated(
16179                        data: &[u8],
16180                        validate: bool,
16181                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16182                        <ActivelyDelegated as alloy_sol_types::SolError>::abi_decode_raw(
16183                                data,
16184                                validate,
16185                            )
16186                            .map(DelegationManagerErrors::ActivelyDelegated)
16187                    }
16188                    ActivelyDelegated
16189                },
16190                {
16191                    fn OnlyUnpauser(
16192                        data: &[u8],
16193                        validate: bool,
16194                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16195                        <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw(
16196                                data,
16197                                validate,
16198                            )
16199                            .map(DelegationManagerErrors::OnlyUnpauser)
16200                    }
16201                    OnlyUnpauser
16202                },
16203                {
16204                    fn InputArrayLengthZero(
16205                        data: &[u8],
16206                        validate: bool,
16207                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16208                        <InputArrayLengthZero as alloy_sol_types::SolError>::abi_decode_raw(
16209                                data,
16210                                validate,
16211                            )
16212                            .map(DelegationManagerErrors::InputArrayLengthZero)
16213                    }
16214                    InputArrayLengthZero
16215                },
16216                {
16217                    fn CurrentlyPaused(
16218                        data: &[u8],
16219                        validate: bool,
16220                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16221                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw(
16222                                data,
16223                                validate,
16224                            )
16225                            .map(DelegationManagerErrors::CurrentlyPaused)
16226                    }
16227                    CurrentlyPaused
16228                },
16229                {
16230                    fn WithdrawalNotQueued(
16231                        data: &[u8],
16232                        validate: bool,
16233                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16234                        <WithdrawalNotQueued as alloy_sol_types::SolError>::abi_decode_raw(
16235                                data,
16236                                validate,
16237                            )
16238                            .map(DelegationManagerErrors::WithdrawalNotQueued)
16239                    }
16240                    WithdrawalNotQueued
16241                },
16242                {
16243                    fn InvalidSignature(
16244                        data: &[u8],
16245                        validate: bool,
16246                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16247                        <InvalidSignature as alloy_sol_types::SolError>::abi_decode_raw(
16248                                data,
16249                                validate,
16250                            )
16251                            .map(DelegationManagerErrors::InvalidSignature)
16252                    }
16253                    InvalidSignature
16254                },
16255                {
16256                    fn OperatorsCannotUndelegate(
16257                        data: &[u8],
16258                        validate: bool,
16259                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16260                        <OperatorsCannotUndelegate as alloy_sol_types::SolError>::abi_decode_raw(
16261                                data,
16262                                validate,
16263                            )
16264                            .map(DelegationManagerErrors::OperatorsCannotUndelegate)
16265                    }
16266                    OperatorsCannotUndelegate
16267                },
16268                {
16269                    fn InvalidPermissions(
16270                        data: &[u8],
16271                        validate: bool,
16272                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16273                        <InvalidPermissions as alloy_sol_types::SolError>::abi_decode_raw(
16274                                data,
16275                                validate,
16276                            )
16277                            .map(DelegationManagerErrors::InvalidPermissions)
16278                    }
16279                    InvalidPermissions
16280                },
16281                {
16282                    fn NotActivelyDelegated(
16283                        data: &[u8],
16284                        validate: bool,
16285                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16286                        <NotActivelyDelegated as alloy_sol_types::SolError>::abi_decode_raw(
16287                                data,
16288                                validate,
16289                            )
16290                            .map(DelegationManagerErrors::NotActivelyDelegated)
16291                    }
16292                    NotActivelyDelegated
16293                },
16294                {
16295                    fn InvalidShortString(
16296                        data: &[u8],
16297                        validate: bool,
16298                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16299                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw(
16300                                data,
16301                                validate,
16302                            )
16303                            .map(DelegationManagerErrors::InvalidShortString)
16304                    }
16305                    InvalidShortString
16306                },
16307                {
16308                    fn InvalidNewPausedStatus(
16309                        data: &[u8],
16310                        validate: bool,
16311                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16312                        <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw(
16313                                data,
16314                                validate,
16315                            )
16316                            .map(DelegationManagerErrors::InvalidNewPausedStatus)
16317                    }
16318                    InvalidNewPausedStatus
16319                },
16320                {
16321                    fn OnlyEigenPodManager(
16322                        data: &[u8],
16323                        validate: bool,
16324                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16325                        <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw(
16326                                data,
16327                                validate,
16328                            )
16329                            .map(DelegationManagerErrors::OnlyEigenPodManager)
16330                    }
16331                    OnlyEigenPodManager
16332                },
16333                {
16334                    fn WithdrawalDelayNotElapsed(
16335                        data: &[u8],
16336                        validate: bool,
16337                    ) -> alloy_sol_types::Result<DelegationManagerErrors> {
16338                        <WithdrawalDelayNotElapsed as alloy_sol_types::SolError>::abi_decode_raw(
16339                                data,
16340                                validate,
16341                            )
16342                            .map(DelegationManagerErrors::WithdrawalDelayNotElapsed)
16343                    }
16344                    WithdrawalDelayNotElapsed
16345                },
16346            ];
16347            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16348                return Err(
16349                    alloy_sol_types::Error::unknown_selector(
16350                        <Self as alloy_sol_types::SolInterface>::NAME,
16351                        selector,
16352                    ),
16353                );
16354            };
16355            DECODE_SHIMS[idx](data, validate)
16356        }
16357        #[inline]
16358        fn abi_encoded_size(&self) -> usize {
16359            match self {
16360                Self::ActivelyDelegated(inner) => {
16361                    <ActivelyDelegated as alloy_sol_types::SolError>::abi_encoded_size(
16362                        inner,
16363                    )
16364                }
16365                Self::CallerCannotUndelegate(inner) => {
16366                    <CallerCannotUndelegate as alloy_sol_types::SolError>::abi_encoded_size(
16367                        inner,
16368                    )
16369                }
16370                Self::CurrentlyPaused(inner) => {
16371                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(
16372                        inner,
16373                    )
16374                }
16375                Self::FullySlashed(inner) => {
16376                    <FullySlashed as alloy_sol_types::SolError>::abi_encoded_size(inner)
16377                }
16378                Self::InputAddressZero(inner) => {
16379                    <InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(
16380                        inner,
16381                    )
16382                }
16383                Self::InputArrayLengthMismatch(inner) => {
16384                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
16385                        inner,
16386                    )
16387                }
16388                Self::InputArrayLengthZero(inner) => {
16389                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encoded_size(
16390                        inner,
16391                    )
16392                }
16393                Self::InvalidNewPausedStatus(inner) => {
16394                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encoded_size(
16395                        inner,
16396                    )
16397                }
16398                Self::InvalidPermissions(inner) => {
16399                    <InvalidPermissions as alloy_sol_types::SolError>::abi_encoded_size(
16400                        inner,
16401                    )
16402                }
16403                Self::InvalidShortString(inner) => {
16404                    <InvalidShortString as alloy_sol_types::SolError>::abi_encoded_size(
16405                        inner,
16406                    )
16407                }
16408                Self::InvalidSignature(inner) => {
16409                    <InvalidSignature as alloy_sol_types::SolError>::abi_encoded_size(
16410                        inner,
16411                    )
16412                }
16413                Self::InvalidSnapshotOrdering(inner) => {
16414                    <InvalidSnapshotOrdering as alloy_sol_types::SolError>::abi_encoded_size(
16415                        inner,
16416                    )
16417                }
16418                Self::NotActivelyDelegated(inner) => {
16419                    <NotActivelyDelegated as alloy_sol_types::SolError>::abi_encoded_size(
16420                        inner,
16421                    )
16422                }
16423                Self::OnlyAllocationManager(inner) => {
16424                    <OnlyAllocationManager as alloy_sol_types::SolError>::abi_encoded_size(
16425                        inner,
16426                    )
16427                }
16428                Self::OnlyEigenPodManager(inner) => {
16429                    <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encoded_size(
16430                        inner,
16431                    )
16432                }
16433                Self::OnlyPauser(inner) => {
16434                    <OnlyPauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
16435                }
16436                Self::OnlyStrategyManagerOrEigenPodManager(inner) => {
16437                    <OnlyStrategyManagerOrEigenPodManager as alloy_sol_types::SolError>::abi_encoded_size(
16438                        inner,
16439                    )
16440                }
16441                Self::OnlyUnpauser(inner) => {
16442                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
16443                }
16444                Self::OperatorNotRegistered(inner) => {
16445                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encoded_size(
16446                        inner,
16447                    )
16448                }
16449                Self::OperatorsCannotUndelegate(inner) => {
16450                    <OperatorsCannotUndelegate as alloy_sol_types::SolError>::abi_encoded_size(
16451                        inner,
16452                    )
16453                }
16454                Self::SaltSpent(inner) => {
16455                    <SaltSpent as alloy_sol_types::SolError>::abi_encoded_size(inner)
16456                }
16457                Self::SignatureExpired(inner) => {
16458                    <SignatureExpired as alloy_sol_types::SolError>::abi_encoded_size(
16459                        inner,
16460                    )
16461                }
16462                Self::StringTooLong(inner) => {
16463                    <StringTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner)
16464                }
16465                Self::WithdrawalDelayNotElapsed(inner) => {
16466                    <WithdrawalDelayNotElapsed as alloy_sol_types::SolError>::abi_encoded_size(
16467                        inner,
16468                    )
16469                }
16470                Self::WithdrawalNotQueued(inner) => {
16471                    <WithdrawalNotQueued as alloy_sol_types::SolError>::abi_encoded_size(
16472                        inner,
16473                    )
16474                }
16475                Self::WithdrawerNotCaller(inner) => {
16476                    <WithdrawerNotCaller as alloy_sol_types::SolError>::abi_encoded_size(
16477                        inner,
16478                    )
16479                }
16480            }
16481        }
16482        #[inline]
16483        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16484            match self {
16485                Self::ActivelyDelegated(inner) => {
16486                    <ActivelyDelegated as alloy_sol_types::SolError>::abi_encode_raw(
16487                        inner,
16488                        out,
16489                    )
16490                }
16491                Self::CallerCannotUndelegate(inner) => {
16492                    <CallerCannotUndelegate as alloy_sol_types::SolError>::abi_encode_raw(
16493                        inner,
16494                        out,
16495                    )
16496                }
16497                Self::CurrentlyPaused(inner) => {
16498                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(
16499                        inner,
16500                        out,
16501                    )
16502                }
16503                Self::FullySlashed(inner) => {
16504                    <FullySlashed as alloy_sol_types::SolError>::abi_encode_raw(
16505                        inner,
16506                        out,
16507                    )
16508                }
16509                Self::InputAddressZero(inner) => {
16510                    <InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(
16511                        inner,
16512                        out,
16513                    )
16514                }
16515                Self::InputArrayLengthMismatch(inner) => {
16516                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
16517                        inner,
16518                        out,
16519                    )
16520                }
16521                Self::InputArrayLengthZero(inner) => {
16522                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encode_raw(
16523                        inner,
16524                        out,
16525                    )
16526                }
16527                Self::InvalidNewPausedStatus(inner) => {
16528                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encode_raw(
16529                        inner,
16530                        out,
16531                    )
16532                }
16533                Self::InvalidPermissions(inner) => {
16534                    <InvalidPermissions as alloy_sol_types::SolError>::abi_encode_raw(
16535                        inner,
16536                        out,
16537                    )
16538                }
16539                Self::InvalidShortString(inner) => {
16540                    <InvalidShortString as alloy_sol_types::SolError>::abi_encode_raw(
16541                        inner,
16542                        out,
16543                    )
16544                }
16545                Self::InvalidSignature(inner) => {
16546                    <InvalidSignature as alloy_sol_types::SolError>::abi_encode_raw(
16547                        inner,
16548                        out,
16549                    )
16550                }
16551                Self::InvalidSnapshotOrdering(inner) => {
16552                    <InvalidSnapshotOrdering as alloy_sol_types::SolError>::abi_encode_raw(
16553                        inner,
16554                        out,
16555                    )
16556                }
16557                Self::NotActivelyDelegated(inner) => {
16558                    <NotActivelyDelegated as alloy_sol_types::SolError>::abi_encode_raw(
16559                        inner,
16560                        out,
16561                    )
16562                }
16563                Self::OnlyAllocationManager(inner) => {
16564                    <OnlyAllocationManager as alloy_sol_types::SolError>::abi_encode_raw(
16565                        inner,
16566                        out,
16567                    )
16568                }
16569                Self::OnlyEigenPodManager(inner) => {
16570                    <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encode_raw(
16571                        inner,
16572                        out,
16573                    )
16574                }
16575                Self::OnlyPauser(inner) => {
16576                    <OnlyPauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
16577                }
16578                Self::OnlyStrategyManagerOrEigenPodManager(inner) => {
16579                    <OnlyStrategyManagerOrEigenPodManager as alloy_sol_types::SolError>::abi_encode_raw(
16580                        inner,
16581                        out,
16582                    )
16583                }
16584                Self::OnlyUnpauser(inner) => {
16585                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encode_raw(
16586                        inner,
16587                        out,
16588                    )
16589                }
16590                Self::OperatorNotRegistered(inner) => {
16591                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encode_raw(
16592                        inner,
16593                        out,
16594                    )
16595                }
16596                Self::OperatorsCannotUndelegate(inner) => {
16597                    <OperatorsCannotUndelegate as alloy_sol_types::SolError>::abi_encode_raw(
16598                        inner,
16599                        out,
16600                    )
16601                }
16602                Self::SaltSpent(inner) => {
16603                    <SaltSpent as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
16604                }
16605                Self::SignatureExpired(inner) => {
16606                    <SignatureExpired as alloy_sol_types::SolError>::abi_encode_raw(
16607                        inner,
16608                        out,
16609                    )
16610                }
16611                Self::StringTooLong(inner) => {
16612                    <StringTooLong as alloy_sol_types::SolError>::abi_encode_raw(
16613                        inner,
16614                        out,
16615                    )
16616                }
16617                Self::WithdrawalDelayNotElapsed(inner) => {
16618                    <WithdrawalDelayNotElapsed as alloy_sol_types::SolError>::abi_encode_raw(
16619                        inner,
16620                        out,
16621                    )
16622                }
16623                Self::WithdrawalNotQueued(inner) => {
16624                    <WithdrawalNotQueued as alloy_sol_types::SolError>::abi_encode_raw(
16625                        inner,
16626                        out,
16627                    )
16628                }
16629                Self::WithdrawerNotCaller(inner) => {
16630                    <WithdrawerNotCaller as alloy_sol_types::SolError>::abi_encode_raw(
16631                        inner,
16632                        out,
16633                    )
16634                }
16635            }
16636        }
16637    }
16638    ///Container for all the [`DelegationManager`](self) events.
16639    #[derive(Debug, PartialEq, Eq, Hash)]
16640    pub enum DelegationManagerEvents {
16641        #[allow(missing_docs)]
16642        DelegationApproverUpdated(DelegationApproverUpdated),
16643        #[allow(missing_docs)]
16644        DepositScalingFactorUpdated(DepositScalingFactorUpdated),
16645        #[allow(missing_docs)]
16646        Initialized(Initialized),
16647        #[allow(missing_docs)]
16648        OperatorMetadataURIUpdated(OperatorMetadataURIUpdated),
16649        #[allow(missing_docs)]
16650        OperatorRegistered(OperatorRegistered),
16651        #[allow(missing_docs)]
16652        OperatorSharesDecreased(OperatorSharesDecreased),
16653        #[allow(missing_docs)]
16654        OperatorSharesIncreased(OperatorSharesIncreased),
16655        #[allow(missing_docs)]
16656        OperatorSharesSlashed(OperatorSharesSlashed),
16657        #[allow(missing_docs)]
16658        OwnershipTransferred(OwnershipTransferred),
16659        #[allow(missing_docs)]
16660        Paused(Paused),
16661        #[allow(missing_docs)]
16662        SlashingWithdrawalCompleted(SlashingWithdrawalCompleted),
16663        #[allow(missing_docs)]
16664        SlashingWithdrawalQueued(SlashingWithdrawalQueued),
16665        #[allow(missing_docs)]
16666        StakerDelegated(StakerDelegated),
16667        #[allow(missing_docs)]
16668        StakerForceUndelegated(StakerForceUndelegated),
16669        #[allow(missing_docs)]
16670        StakerUndelegated(StakerUndelegated),
16671        #[allow(missing_docs)]
16672        Unpaused(Unpaused),
16673    }
16674    #[automatically_derived]
16675    impl DelegationManagerEvents {
16676        /// All the selectors of this enum.
16677        ///
16678        /// Note that the selectors might not be in the same order as the variants.
16679        /// No guarantees are made about the order of the selectors.
16680        ///
16681        /// Prefer using `SolInterface` methods instead.
16682        pub const SELECTORS: &'static [[u8; 32usize]] = &[
16683            [
16684                2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8,
16685                126u8, 242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8,
16686                3u8, 74u8, 133u8, 49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8,
16687            ],
16688            [
16689                30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8,
16690                24u8, 142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8,
16691                171u8, 58u8, 157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8,
16692            ],
16693            [
16694                31u8, 64u8, 64u8, 8u8, 137u8, 39u8, 78u8, 208u8, 123u8, 36u8, 132u8,
16695                94u8, 80u8, 84u8, 168u8, 122u8, 12u8, 171u8, 150u8, 158u8, 177u8, 39u8,
16696                122u8, 175u8, 230u8, 26u8, 227u8, 82u8, 231u8, 195u8, 42u8, 0u8,
16697            ],
16698            [
16699                38u8, 178u8, 170u8, 226u8, 101u8, 22u8, 232u8, 113u8, 158u8, 245u8, 14u8,
16700                162u8, 246u8, 131u8, 26u8, 46u8, 251u8, 212u8, 227u8, 125u8, 204u8,
16701                223u8, 15u8, 105u8, 54u8, 178u8, 123u8, 192u8, 142u8, 121u8, 62u8, 48u8,
16702            ],
16703            [
16704                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8,
16705                2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8,
16706                228u8, 152u8, 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
16707            ],
16708            [
16709                105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8,
16710                221u8, 129u8, 84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8,
16711                200u8, 50u8, 170u8, 255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8,
16712            ],
16713            [
16714                119u8, 59u8, 84u8, 192u8, 77u8, 117u8, 111u8, 204u8, 94u8, 103u8, 129u8,
16715                17u8, 247u8, 215u8, 48u8, 222u8, 59u8, 233u8, 129u8, 146u8, 0u8, 7u8,
16716                153u8, 238u8, 227u8, 214u8, 55u8, 22u8, 5u8, 90u8, 135u8, 198u8,
16717            ],
16718            [
16719                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
16720                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
16721                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
16722            ],
16723            [
16724                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
16725                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
16726                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
16727            ],
16728            [
16729                139u8, 233u8, 50u8, 186u8, 197u8, 69u8, 97u8, 242u8, 114u8, 96u8, 249u8,
16730                84u8, 99u8, 217u8, 184u8, 171u8, 55u8, 224u8, 107u8, 40u8, 66u8, 229u8,
16731                238u8, 36u8, 4u8, 21u8, 124u8, 193u8, 61u8, 246u8, 235u8, 143u8,
16732            ],
16733            [
16734                164u8, 83u8, 219u8, 97u8, 42u8, 245u8, 158u8, 85u8, 33u8, 214u8, 171u8,
16735                146u8, 132u8, 220u8, 62u8, 45u8, 6u8, 175u8, 40u8, 110u8, 177u8, 177u8,
16736                183u8, 183u8, 113u8, 252u8, 228u8, 113u8, 108u8, 25u8, 242u8, 193u8,
16737            ],
16738            [
16739                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8,
16740                188u8, 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8,
16741                11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
16742            ],
16743            [
16744                195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8,
16745                116u8, 91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8,
16746                85u8, 156u8, 210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8,
16747            ],
16748            [
16749                221u8, 97u8, 31u8, 78u8, 246u8, 63u8, 67u8, 133u8, 241u8, 117u8, 108u8,
16750                134u8, 206u8, 31u8, 31u8, 56u8, 154u8, 144u8, 19u8, 186u8, 111u8, 160u8,
16751                125u8, 171u8, 168u8, 82u8, 130u8, 145u8, 188u8, 45u8, 60u8, 48u8,
16752            ],
16753            [
16754                240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8,
16755                30u8, 148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8,
16756                113u8, 19u8, 14u8, 15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8,
16757            ],
16758            [
16759                254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8,
16760                191u8, 201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8,
16761                169u8, 226u8, 183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8,
16762            ],
16763        ];
16764    }
16765    #[automatically_derived]
16766    impl alloy_sol_types::SolEventInterface for DelegationManagerEvents {
16767        const NAME: &'static str = "DelegationManagerEvents";
16768        const COUNT: usize = 16usize;
16769        fn decode_raw_log(
16770            topics: &[alloy_sol_types::Word],
16771            data: &[u8],
16772            validate: bool,
16773        ) -> alloy_sol_types::Result<Self> {
16774            match topics.first().copied() {
16775                Some(
16776                    <DelegationApproverUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16777                ) => {
16778                    <DelegationApproverUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
16779                            topics,
16780                            data,
16781                            validate,
16782                        )
16783                        .map(Self::DelegationApproverUpdated)
16784                }
16785                Some(
16786                    <DepositScalingFactorUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16787                ) => {
16788                    <DepositScalingFactorUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
16789                            topics,
16790                            data,
16791                            validate,
16792                        )
16793                        .map(Self::DepositScalingFactorUpdated)
16794                }
16795                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16796                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
16797                            topics,
16798                            data,
16799                            validate,
16800                        )
16801                        .map(Self::Initialized)
16802                }
16803                Some(
16804                    <OperatorMetadataURIUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16805                ) => {
16806                    <OperatorMetadataURIUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
16807                            topics,
16808                            data,
16809                            validate,
16810                        )
16811                        .map(Self::OperatorMetadataURIUpdated)
16812                }
16813                Some(
16814                    <OperatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16815                ) => {
16816                    <OperatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
16817                            topics,
16818                            data,
16819                            validate,
16820                        )
16821                        .map(Self::OperatorRegistered)
16822                }
16823                Some(
16824                    <OperatorSharesDecreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16825                ) => {
16826                    <OperatorSharesDecreased as alloy_sol_types::SolEvent>::decode_raw_log(
16827                            topics,
16828                            data,
16829                            validate,
16830                        )
16831                        .map(Self::OperatorSharesDecreased)
16832                }
16833                Some(
16834                    <OperatorSharesIncreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16835                ) => {
16836                    <OperatorSharesIncreased as alloy_sol_types::SolEvent>::decode_raw_log(
16837                            topics,
16838                            data,
16839                            validate,
16840                        )
16841                        .map(Self::OperatorSharesIncreased)
16842                }
16843                Some(
16844                    <OperatorSharesSlashed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16845                ) => {
16846                    <OperatorSharesSlashed as alloy_sol_types::SolEvent>::decode_raw_log(
16847                            topics,
16848                            data,
16849                            validate,
16850                        )
16851                        .map(Self::OperatorSharesSlashed)
16852                }
16853                Some(
16854                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16855                ) => {
16856                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
16857                            topics,
16858                            data,
16859                            validate,
16860                        )
16861                        .map(Self::OwnershipTransferred)
16862                }
16863                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16864                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(
16865                            topics,
16866                            data,
16867                            validate,
16868                        )
16869                        .map(Self::Paused)
16870                }
16871                Some(
16872                    <SlashingWithdrawalCompleted as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16873                ) => {
16874                    <SlashingWithdrawalCompleted as alloy_sol_types::SolEvent>::decode_raw_log(
16875                            topics,
16876                            data,
16877                            validate,
16878                        )
16879                        .map(Self::SlashingWithdrawalCompleted)
16880                }
16881                Some(
16882                    <SlashingWithdrawalQueued as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16883                ) => {
16884                    <SlashingWithdrawalQueued as alloy_sol_types::SolEvent>::decode_raw_log(
16885                            topics,
16886                            data,
16887                            validate,
16888                        )
16889                        .map(Self::SlashingWithdrawalQueued)
16890                }
16891                Some(<StakerDelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16892                    <StakerDelegated as alloy_sol_types::SolEvent>::decode_raw_log(
16893                            topics,
16894                            data,
16895                            validate,
16896                        )
16897                        .map(Self::StakerDelegated)
16898                }
16899                Some(
16900                    <StakerForceUndelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16901                ) => {
16902                    <StakerForceUndelegated as alloy_sol_types::SolEvent>::decode_raw_log(
16903                            topics,
16904                            data,
16905                            validate,
16906                        )
16907                        .map(Self::StakerForceUndelegated)
16908                }
16909                Some(
16910                    <StakerUndelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16911                ) => {
16912                    <StakerUndelegated as alloy_sol_types::SolEvent>::decode_raw_log(
16913                            topics,
16914                            data,
16915                            validate,
16916                        )
16917                        .map(Self::StakerUndelegated)
16918                }
16919                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16920                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(
16921                            topics,
16922                            data,
16923                            validate,
16924                        )
16925                        .map(Self::Unpaused)
16926                }
16927                _ => {
16928                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
16929                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
16930                        log: alloy_sol_types::private::Box::new(
16931                            alloy_sol_types::private::LogData::new_unchecked(
16932                                topics.to_vec(),
16933                                data.to_vec().into(),
16934                            ),
16935                        ),
16936                    })
16937                }
16938            }
16939        }
16940    }
16941    #[automatically_derived]
16942    impl alloy_sol_types::private::IntoLogData for DelegationManagerEvents {
16943        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
16944            match self {
16945                Self::DelegationApproverUpdated(inner) => {
16946                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16947                }
16948                Self::DepositScalingFactorUpdated(inner) => {
16949                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16950                }
16951                Self::Initialized(inner) => {
16952                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16953                }
16954                Self::OperatorMetadataURIUpdated(inner) => {
16955                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16956                }
16957                Self::OperatorRegistered(inner) => {
16958                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16959                }
16960                Self::OperatorSharesDecreased(inner) => {
16961                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16962                }
16963                Self::OperatorSharesIncreased(inner) => {
16964                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16965                }
16966                Self::OperatorSharesSlashed(inner) => {
16967                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16968                }
16969                Self::OwnershipTransferred(inner) => {
16970                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16971                }
16972                Self::Paused(inner) => {
16973                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16974                }
16975                Self::SlashingWithdrawalCompleted(inner) => {
16976                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16977                }
16978                Self::SlashingWithdrawalQueued(inner) => {
16979                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16980                }
16981                Self::StakerDelegated(inner) => {
16982                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16983                }
16984                Self::StakerForceUndelegated(inner) => {
16985                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16986                }
16987                Self::StakerUndelegated(inner) => {
16988                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16989                }
16990                Self::Unpaused(inner) => {
16991                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16992                }
16993            }
16994        }
16995        fn into_log_data(self) -> alloy_sol_types::private::LogData {
16996            match self {
16997                Self::DelegationApproverUpdated(inner) => {
16998                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16999                }
17000                Self::DepositScalingFactorUpdated(inner) => {
17001                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17002                }
17003                Self::Initialized(inner) => {
17004                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17005                }
17006                Self::OperatorMetadataURIUpdated(inner) => {
17007                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17008                }
17009                Self::OperatorRegistered(inner) => {
17010                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17011                }
17012                Self::OperatorSharesDecreased(inner) => {
17013                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17014                }
17015                Self::OperatorSharesIncreased(inner) => {
17016                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17017                }
17018                Self::OperatorSharesSlashed(inner) => {
17019                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17020                }
17021                Self::OwnershipTransferred(inner) => {
17022                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17023                }
17024                Self::Paused(inner) => {
17025                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17026                }
17027                Self::SlashingWithdrawalCompleted(inner) => {
17028                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17029                }
17030                Self::SlashingWithdrawalQueued(inner) => {
17031                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17032                }
17033                Self::StakerDelegated(inner) => {
17034                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17035                }
17036                Self::StakerForceUndelegated(inner) => {
17037                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17038                }
17039                Self::StakerUndelegated(inner) => {
17040                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17041                }
17042                Self::Unpaused(inner) => {
17043                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17044                }
17045            }
17046        }
17047    }
17048    use alloy::contract as alloy_contract;
17049    /**Creates a new wrapper around an on-chain [`DelegationManager`](self) contract instance.
17050
17051See the [wrapper's documentation](`DelegationManagerInstance`) for more details.*/
17052    #[inline]
17053    pub const fn new<
17054        T: alloy_contract::private::Transport + ::core::clone::Clone,
17055        P: alloy_contract::private::Provider<T, N>,
17056        N: alloy_contract::private::Network,
17057    >(
17058        address: alloy_sol_types::private::Address,
17059        provider: P,
17060    ) -> DelegationManagerInstance<T, P, N> {
17061        DelegationManagerInstance::<T, P, N>::new(address, provider)
17062    }
17063    /**Deploys this contract using the given `provider` and constructor arguments, if any.
17064
17065Returns a new instance of the contract, if the deployment was successful.
17066
17067For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17068    #[inline]
17069    pub fn deploy<
17070        T: alloy_contract::private::Transport + ::core::clone::Clone,
17071        P: alloy_contract::private::Provider<T, N>,
17072        N: alloy_contract::private::Network,
17073    >(
17074        provider: P,
17075        _strategyManager: alloy::sol_types::private::Address,
17076        _eigenPodManager: alloy::sol_types::private::Address,
17077        _allocationManager: alloy::sol_types::private::Address,
17078        _pauserRegistry: alloy::sol_types::private::Address,
17079        _permissionController: alloy::sol_types::private::Address,
17080        _MIN_WITHDRAWAL_DELAY: u32,
17081        _version: alloy::sol_types::private::String,
17082    ) -> impl ::core::future::Future<
17083        Output = alloy_contract::Result<DelegationManagerInstance<T, P, N>>,
17084    > {
17085        DelegationManagerInstance::<
17086            T,
17087            P,
17088            N,
17089        >::deploy(
17090            provider,
17091            _strategyManager,
17092            _eigenPodManager,
17093            _allocationManager,
17094            _pauserRegistry,
17095            _permissionController,
17096            _MIN_WITHDRAWAL_DELAY,
17097            _version,
17098        )
17099    }
17100    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17101and constructor arguments, if any.
17102
17103This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17104the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17105    #[inline]
17106    pub fn deploy_builder<
17107        T: alloy_contract::private::Transport + ::core::clone::Clone,
17108        P: alloy_contract::private::Provider<T, N>,
17109        N: alloy_contract::private::Network,
17110    >(
17111        provider: P,
17112        _strategyManager: alloy::sol_types::private::Address,
17113        _eigenPodManager: alloy::sol_types::private::Address,
17114        _allocationManager: alloy::sol_types::private::Address,
17115        _pauserRegistry: alloy::sol_types::private::Address,
17116        _permissionController: alloy::sol_types::private::Address,
17117        _MIN_WITHDRAWAL_DELAY: u32,
17118        _version: alloy::sol_types::private::String,
17119    ) -> alloy_contract::RawCallBuilder<T, P, N> {
17120        DelegationManagerInstance::<
17121            T,
17122            P,
17123            N,
17124        >::deploy_builder(
17125            provider,
17126            _strategyManager,
17127            _eigenPodManager,
17128            _allocationManager,
17129            _pauserRegistry,
17130            _permissionController,
17131            _MIN_WITHDRAWAL_DELAY,
17132            _version,
17133        )
17134    }
17135    /**A [`DelegationManager`](self) instance.
17136
17137Contains type-safe methods for interacting with an on-chain instance of the
17138[`DelegationManager`](self) contract located at a given `address`, using a given
17139provider `P`.
17140
17141If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
17142documentation on how to provide it), the `deploy` and `deploy_builder` methods can
17143be used to deploy a new instance of the contract.
17144
17145See the [module-level documentation](self) for all the available methods.*/
17146    #[derive(Clone)]
17147    pub struct DelegationManagerInstance<T, P, N = alloy_contract::private::Ethereum> {
17148        address: alloy_sol_types::private::Address,
17149        provider: P,
17150        _network_transport: ::core::marker::PhantomData<(N, T)>,
17151    }
17152    #[automatically_derived]
17153    impl<T, P, N> ::core::fmt::Debug for DelegationManagerInstance<T, P, N> {
17154        #[inline]
17155        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
17156            f.debug_tuple("DelegationManagerInstance").field(&self.address).finish()
17157        }
17158    }
17159    /// Instantiation and getters/setters.
17160    #[automatically_derived]
17161    impl<
17162        T: alloy_contract::private::Transport + ::core::clone::Clone,
17163        P: alloy_contract::private::Provider<T, N>,
17164        N: alloy_contract::private::Network,
17165    > DelegationManagerInstance<T, P, N> {
17166        /**Creates a new wrapper around an on-chain [`DelegationManager`](self) contract instance.
17167
17168See the [wrapper's documentation](`DelegationManagerInstance`) for more details.*/
17169        #[inline]
17170        pub const fn new(
17171            address: alloy_sol_types::private::Address,
17172            provider: P,
17173        ) -> Self {
17174            Self {
17175                address,
17176                provider,
17177                _network_transport: ::core::marker::PhantomData,
17178            }
17179        }
17180        /**Deploys this contract using the given `provider` and constructor arguments, if any.
17181
17182Returns a new instance of the contract, if the deployment was successful.
17183
17184For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17185        #[inline]
17186        pub async fn deploy(
17187            provider: P,
17188            _strategyManager: alloy::sol_types::private::Address,
17189            _eigenPodManager: alloy::sol_types::private::Address,
17190            _allocationManager: alloy::sol_types::private::Address,
17191            _pauserRegistry: alloy::sol_types::private::Address,
17192            _permissionController: alloy::sol_types::private::Address,
17193            _MIN_WITHDRAWAL_DELAY: u32,
17194            _version: alloy::sol_types::private::String,
17195        ) -> alloy_contract::Result<DelegationManagerInstance<T, P, N>> {
17196            let call_builder = Self::deploy_builder(
17197                provider,
17198                _strategyManager,
17199                _eigenPodManager,
17200                _allocationManager,
17201                _pauserRegistry,
17202                _permissionController,
17203                _MIN_WITHDRAWAL_DELAY,
17204                _version,
17205            );
17206            let contract_address = call_builder.deploy().await?;
17207            Ok(Self::new(contract_address, call_builder.provider))
17208        }
17209        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17210and constructor arguments, if any.
17211
17212This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17213the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17214        #[inline]
17215        pub fn deploy_builder(
17216            provider: P,
17217            _strategyManager: alloy::sol_types::private::Address,
17218            _eigenPodManager: alloy::sol_types::private::Address,
17219            _allocationManager: alloy::sol_types::private::Address,
17220            _pauserRegistry: alloy::sol_types::private::Address,
17221            _permissionController: alloy::sol_types::private::Address,
17222            _MIN_WITHDRAWAL_DELAY: u32,
17223            _version: alloy::sol_types::private::String,
17224        ) -> alloy_contract::RawCallBuilder<T, P, N> {
17225            alloy_contract::RawCallBuilder::new_raw_deploy(
17226                provider,
17227                [
17228                    &BYTECODE[..],
17229                    &alloy_sol_types::SolConstructor::abi_encode(
17230                        &constructorCall {
17231                            _strategyManager,
17232                            _eigenPodManager,
17233                            _allocationManager,
17234                            _pauserRegistry,
17235                            _permissionController,
17236                            _MIN_WITHDRAWAL_DELAY,
17237                            _version,
17238                        },
17239                    )[..],
17240                ]
17241                    .concat()
17242                    .into(),
17243            )
17244        }
17245        /// Returns a reference to the address.
17246        #[inline]
17247        pub const fn address(&self) -> &alloy_sol_types::private::Address {
17248            &self.address
17249        }
17250        /// Sets the address.
17251        #[inline]
17252        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
17253            self.address = address;
17254        }
17255        /// Sets the address and returns `self`.
17256        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
17257            self.set_address(address);
17258            self
17259        }
17260        /// Returns a reference to the provider.
17261        #[inline]
17262        pub const fn provider(&self) -> &P {
17263            &self.provider
17264        }
17265    }
17266    impl<T, P: ::core::clone::Clone, N> DelegationManagerInstance<T, &P, N> {
17267        /// Clones the provider and returns a new instance with the cloned provider.
17268        #[inline]
17269        pub fn with_cloned_provider(self) -> DelegationManagerInstance<T, P, N> {
17270            DelegationManagerInstance {
17271                address: self.address,
17272                provider: ::core::clone::Clone::clone(&self.provider),
17273                _network_transport: ::core::marker::PhantomData,
17274            }
17275        }
17276    }
17277    /// Function calls.
17278    #[automatically_derived]
17279    impl<
17280        T: alloy_contract::private::Transport + ::core::clone::Clone,
17281        P: alloy_contract::private::Provider<T, N>,
17282        N: alloy_contract::private::Network,
17283    > DelegationManagerInstance<T, P, N> {
17284        /// Creates a new call builder using this contract instance's provider and address.
17285        ///
17286        /// Note that the call can be any function call, not just those defined in this
17287        /// contract. Prefer using the other methods for building type-safe contract calls.
17288        pub fn call_builder<C: alloy_sol_types::SolCall>(
17289            &self,
17290            call: &C,
17291        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
17292            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
17293        }
17294        ///Creates a new call builder for the [`DELEGATION_APPROVAL_TYPEHASH`] function.
17295        pub fn DELEGATION_APPROVAL_TYPEHASH(
17296            &self,
17297        ) -> alloy_contract::SolCallBuilder<T, &P, DELEGATION_APPROVAL_TYPEHASHCall, N> {
17298            self.call_builder(
17299                &DELEGATION_APPROVAL_TYPEHASHCall {
17300                },
17301            )
17302        }
17303        ///Creates a new call builder for the [`allocationManager`] function.
17304        pub fn allocationManager(
17305            &self,
17306        ) -> alloy_contract::SolCallBuilder<T, &P, allocationManagerCall, N> {
17307            self.call_builder(&allocationManagerCall {})
17308        }
17309        ///Creates a new call builder for the [`beaconChainETHStrategy`] function.
17310        pub fn beaconChainETHStrategy(
17311            &self,
17312        ) -> alloy_contract::SolCallBuilder<T, &P, beaconChainETHStrategyCall, N> {
17313            self.call_builder(&beaconChainETHStrategyCall {})
17314        }
17315        ///Creates a new call builder for the [`calculateDelegationApprovalDigestHash`] function.
17316        pub fn calculateDelegationApprovalDigestHash(
17317            &self,
17318            staker: alloy::sol_types::private::Address,
17319            operator: alloy::sol_types::private::Address,
17320            approver: alloy::sol_types::private::Address,
17321            approverSalt: alloy::sol_types::private::FixedBytes<32>,
17322            expiry: alloy::sol_types::private::primitives::aliases::U256,
17323        ) -> alloy_contract::SolCallBuilder<
17324            T,
17325            &P,
17326            calculateDelegationApprovalDigestHashCall,
17327            N,
17328        > {
17329            self.call_builder(
17330                &calculateDelegationApprovalDigestHashCall {
17331                    staker,
17332                    operator,
17333                    approver,
17334                    approverSalt,
17335                    expiry,
17336                },
17337            )
17338        }
17339        ///Creates a new call builder for the [`calculateWithdrawalRoot`] function.
17340        pub fn calculateWithdrawalRoot(
17341            &self,
17342            withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
17343        ) -> alloy_contract::SolCallBuilder<T, &P, calculateWithdrawalRootCall, N> {
17344            self.call_builder(
17345                &calculateWithdrawalRootCall {
17346                    withdrawal,
17347                },
17348            )
17349        }
17350        ///Creates a new call builder for the [`completeQueuedWithdrawal`] function.
17351        pub fn completeQueuedWithdrawal(
17352            &self,
17353            withdrawal: <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
17354            tokens: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
17355            receiveAsTokens: bool,
17356        ) -> alloy_contract::SolCallBuilder<T, &P, completeQueuedWithdrawalCall, N> {
17357            self.call_builder(
17358                &completeQueuedWithdrawalCall {
17359                    withdrawal,
17360                    tokens,
17361                    receiveAsTokens,
17362                },
17363            )
17364        }
17365        ///Creates a new call builder for the [`completeQueuedWithdrawals`] function.
17366        pub fn completeQueuedWithdrawals(
17367            &self,
17368            withdrawals: alloy::sol_types::private::Vec<
17369                <IDelegationManagerTypes::Withdrawal as alloy::sol_types::SolType>::RustType,
17370            >,
17371            tokens: alloy::sol_types::private::Vec<
17372                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
17373            >,
17374            receiveAsTokens: alloy::sol_types::private::Vec<bool>,
17375        ) -> alloy_contract::SolCallBuilder<T, &P, completeQueuedWithdrawalsCall, N> {
17376            self.call_builder(
17377                &completeQueuedWithdrawalsCall {
17378                    withdrawals,
17379                    tokens,
17380                    receiveAsTokens,
17381                },
17382            )
17383        }
17384        ///Creates a new call builder for the [`convertToDepositShares`] function.
17385        pub fn convertToDepositShares(
17386            &self,
17387            staker: alloy::sol_types::private::Address,
17388            strategies: alloy::sol_types::private::Vec<
17389                alloy::sol_types::private::Address,
17390            >,
17391            withdrawableShares: alloy::sol_types::private::Vec<
17392                alloy::sol_types::private::primitives::aliases::U256,
17393            >,
17394        ) -> alloy_contract::SolCallBuilder<T, &P, convertToDepositSharesCall, N> {
17395            self.call_builder(
17396                &convertToDepositSharesCall {
17397                    staker,
17398                    strategies,
17399                    withdrawableShares,
17400                },
17401            )
17402        }
17403        ///Creates a new call builder for the [`cumulativeWithdrawalsQueued`] function.
17404        pub fn cumulativeWithdrawalsQueued(
17405            &self,
17406            staker: alloy::sol_types::private::Address,
17407        ) -> alloy_contract::SolCallBuilder<T, &P, cumulativeWithdrawalsQueuedCall, N> {
17408            self.call_builder(
17409                &cumulativeWithdrawalsQueuedCall {
17410                    staker,
17411                },
17412            )
17413        }
17414        ///Creates a new call builder for the [`decreaseDelegatedShares`] function.
17415        pub fn decreaseDelegatedShares(
17416            &self,
17417            staker: alloy::sol_types::private::Address,
17418            curDepositShares: alloy::sol_types::private::primitives::aliases::U256,
17419            beaconChainSlashingFactorDecrease: u64,
17420        ) -> alloy_contract::SolCallBuilder<T, &P, decreaseDelegatedSharesCall, N> {
17421            self.call_builder(
17422                &decreaseDelegatedSharesCall {
17423                    staker,
17424                    curDepositShares,
17425                    beaconChainSlashingFactorDecrease,
17426                },
17427            )
17428        }
17429        ///Creates a new call builder for the [`delegateTo`] function.
17430        pub fn delegateTo(
17431            &self,
17432            operator: alloy::sol_types::private::Address,
17433            approverSignatureAndExpiry: <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
17434            approverSalt: alloy::sol_types::private::FixedBytes<32>,
17435        ) -> alloy_contract::SolCallBuilder<T, &P, delegateToCall, N> {
17436            self.call_builder(
17437                &delegateToCall {
17438                    operator,
17439                    approverSignatureAndExpiry,
17440                    approverSalt,
17441                },
17442            )
17443        }
17444        ///Creates a new call builder for the [`delegatedTo`] function.
17445        pub fn delegatedTo(
17446            &self,
17447            staker: alloy::sol_types::private::Address,
17448        ) -> alloy_contract::SolCallBuilder<T, &P, delegatedToCall, N> {
17449            self.call_builder(&delegatedToCall { staker })
17450        }
17451        ///Creates a new call builder for the [`delegationApprover`] function.
17452        pub fn delegationApprover(
17453            &self,
17454            operator: alloy::sol_types::private::Address,
17455        ) -> alloy_contract::SolCallBuilder<T, &P, delegationApproverCall, N> {
17456            self.call_builder(&delegationApproverCall { operator })
17457        }
17458        ///Creates a new call builder for the [`delegationApproverSaltIsSpent`] function.
17459        pub fn delegationApproverSaltIsSpent(
17460            &self,
17461            delegationApprover: alloy::sol_types::private::Address,
17462            salt: alloy::sol_types::private::FixedBytes<32>,
17463        ) -> alloy_contract::SolCallBuilder<
17464            T,
17465            &P,
17466            delegationApproverSaltIsSpentCall,
17467            N,
17468        > {
17469            self.call_builder(
17470                &delegationApproverSaltIsSpentCall {
17471                    delegationApprover,
17472                    salt,
17473                },
17474            )
17475        }
17476        ///Creates a new call builder for the [`depositScalingFactor`] function.
17477        pub fn depositScalingFactor(
17478            &self,
17479            staker: alloy::sol_types::private::Address,
17480            strategy: alloy::sol_types::private::Address,
17481        ) -> alloy_contract::SolCallBuilder<T, &P, depositScalingFactorCall, N> {
17482            self.call_builder(
17483                &depositScalingFactorCall {
17484                    staker,
17485                    strategy,
17486                },
17487            )
17488        }
17489        ///Creates a new call builder for the [`domainSeparator`] function.
17490        pub fn domainSeparator(
17491            &self,
17492        ) -> alloy_contract::SolCallBuilder<T, &P, domainSeparatorCall, N> {
17493            self.call_builder(&domainSeparatorCall {})
17494        }
17495        ///Creates a new call builder for the [`eigenPodManager`] function.
17496        pub fn eigenPodManager(
17497            &self,
17498        ) -> alloy_contract::SolCallBuilder<T, &P, eigenPodManagerCall, N> {
17499            self.call_builder(&eigenPodManagerCall {})
17500        }
17501        ///Creates a new call builder for the [`getDepositedShares`] function.
17502        pub fn getDepositedShares(
17503            &self,
17504            staker: alloy::sol_types::private::Address,
17505        ) -> alloy_contract::SolCallBuilder<T, &P, getDepositedSharesCall, N> {
17506            self.call_builder(&getDepositedSharesCall { staker })
17507        }
17508        ///Creates a new call builder for the [`getOperatorShares`] function.
17509        pub fn getOperatorShares(
17510            &self,
17511            operator: alloy::sol_types::private::Address,
17512            strategies: alloy::sol_types::private::Vec<
17513                alloy::sol_types::private::Address,
17514            >,
17515        ) -> alloy_contract::SolCallBuilder<T, &P, getOperatorSharesCall, N> {
17516            self.call_builder(
17517                &getOperatorSharesCall {
17518                    operator,
17519                    strategies,
17520                },
17521            )
17522        }
17523        ///Creates a new call builder for the [`getOperatorsShares`] function.
17524        pub fn getOperatorsShares(
17525            &self,
17526            operators: alloy::sol_types::private::Vec<
17527                alloy::sol_types::private::Address,
17528            >,
17529            strategies: alloy::sol_types::private::Vec<
17530                alloy::sol_types::private::Address,
17531            >,
17532        ) -> alloy_contract::SolCallBuilder<T, &P, getOperatorsSharesCall, N> {
17533            self.call_builder(
17534                &getOperatorsSharesCall {
17535                    operators,
17536                    strategies,
17537                },
17538            )
17539        }
17540        ///Creates a new call builder for the [`getQueuedWithdrawal`] function.
17541        pub fn getQueuedWithdrawal(
17542            &self,
17543            withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
17544        ) -> alloy_contract::SolCallBuilder<T, &P, getQueuedWithdrawalCall, N> {
17545            self.call_builder(
17546                &getQueuedWithdrawalCall {
17547                    withdrawalRoot,
17548                },
17549            )
17550        }
17551        ///Creates a new call builder for the [`getQueuedWithdrawalRoots`] function.
17552        pub fn getQueuedWithdrawalRoots(
17553            &self,
17554            staker: alloy::sol_types::private::Address,
17555        ) -> alloy_contract::SolCallBuilder<T, &P, getQueuedWithdrawalRootsCall, N> {
17556            self.call_builder(
17557                &getQueuedWithdrawalRootsCall {
17558                    staker,
17559                },
17560            )
17561        }
17562        ///Creates a new call builder for the [`getQueuedWithdrawals`] function.
17563        pub fn getQueuedWithdrawals(
17564            &self,
17565            staker: alloy::sol_types::private::Address,
17566        ) -> alloy_contract::SolCallBuilder<T, &P, getQueuedWithdrawalsCall, N> {
17567            self.call_builder(&getQueuedWithdrawalsCall { staker })
17568        }
17569        ///Creates a new call builder for the [`getSlashableSharesInQueue`] function.
17570        pub fn getSlashableSharesInQueue(
17571            &self,
17572            operator: alloy::sol_types::private::Address,
17573            strategy: alloy::sol_types::private::Address,
17574        ) -> alloy_contract::SolCallBuilder<T, &P, getSlashableSharesInQueueCall, N> {
17575            self.call_builder(
17576                &getSlashableSharesInQueueCall {
17577                    operator,
17578                    strategy,
17579                },
17580            )
17581        }
17582        ///Creates a new call builder for the [`getWithdrawableShares`] function.
17583        pub fn getWithdrawableShares(
17584            &self,
17585            staker: alloy::sol_types::private::Address,
17586            strategies: alloy::sol_types::private::Vec<
17587                alloy::sol_types::private::Address,
17588            >,
17589        ) -> alloy_contract::SolCallBuilder<T, &P, getWithdrawableSharesCall, N> {
17590            self.call_builder(
17591                &getWithdrawableSharesCall {
17592                    staker,
17593                    strategies,
17594                },
17595            )
17596        }
17597        ///Creates a new call builder for the [`increaseDelegatedShares`] function.
17598        pub fn increaseDelegatedShares(
17599            &self,
17600            staker: alloy::sol_types::private::Address,
17601            strategy: alloy::sol_types::private::Address,
17602            prevDepositShares: alloy::sol_types::private::primitives::aliases::U256,
17603            addedShares: alloy::sol_types::private::primitives::aliases::U256,
17604        ) -> alloy_contract::SolCallBuilder<T, &P, increaseDelegatedSharesCall, N> {
17605            self.call_builder(
17606                &increaseDelegatedSharesCall {
17607                    staker,
17608                    strategy,
17609                    prevDepositShares,
17610                    addedShares,
17611                },
17612            )
17613        }
17614        ///Creates a new call builder for the [`initialize`] function.
17615        pub fn initialize(
17616            &self,
17617            initialOwner: alloy::sol_types::private::Address,
17618            initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
17619        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
17620            self.call_builder(
17621                &initializeCall {
17622                    initialOwner,
17623                    initialPausedStatus,
17624                },
17625            )
17626        }
17627        ///Creates a new call builder for the [`isDelegated`] function.
17628        pub fn isDelegated(
17629            &self,
17630            staker: alloy::sol_types::private::Address,
17631        ) -> alloy_contract::SolCallBuilder<T, &P, isDelegatedCall, N> {
17632            self.call_builder(&isDelegatedCall { staker })
17633        }
17634        ///Creates a new call builder for the [`isOperator`] function.
17635        pub fn isOperator(
17636            &self,
17637            operator: alloy::sol_types::private::Address,
17638        ) -> alloy_contract::SolCallBuilder<T, &P, isOperatorCall, N> {
17639            self.call_builder(&isOperatorCall { operator })
17640        }
17641        ///Creates a new call builder for the [`minWithdrawalDelayBlocks`] function.
17642        pub fn minWithdrawalDelayBlocks(
17643            &self,
17644        ) -> alloy_contract::SolCallBuilder<T, &P, minWithdrawalDelayBlocksCall, N> {
17645            self.call_builder(&minWithdrawalDelayBlocksCall {})
17646        }
17647        ///Creates a new call builder for the [`modifyOperatorDetails`] function.
17648        pub fn modifyOperatorDetails(
17649            &self,
17650            operator: alloy::sol_types::private::Address,
17651            newDelegationApprover: alloy::sol_types::private::Address,
17652        ) -> alloy_contract::SolCallBuilder<T, &P, modifyOperatorDetailsCall, N> {
17653            self.call_builder(
17654                &modifyOperatorDetailsCall {
17655                    operator,
17656                    newDelegationApprover,
17657                },
17658            )
17659        }
17660        ///Creates a new call builder for the [`operatorShares`] function.
17661        pub fn operatorShares(
17662            &self,
17663            operator: alloy::sol_types::private::Address,
17664            strategy: alloy::sol_types::private::Address,
17665        ) -> alloy_contract::SolCallBuilder<T, &P, operatorSharesCall, N> {
17666            self.call_builder(
17667                &operatorSharesCall {
17668                    operator,
17669                    strategy,
17670                },
17671            )
17672        }
17673        ///Creates a new call builder for the [`owner`] function.
17674        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
17675            self.call_builder(&ownerCall {})
17676        }
17677        ///Creates a new call builder for the [`pause`] function.
17678        pub fn pause(
17679            &self,
17680            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
17681        ) -> alloy_contract::SolCallBuilder<T, &P, pauseCall, N> {
17682            self.call_builder(&pauseCall { newPausedStatus })
17683        }
17684        ///Creates a new call builder for the [`pauseAll`] function.
17685        pub fn pauseAll(
17686            &self,
17687        ) -> alloy_contract::SolCallBuilder<T, &P, pauseAllCall, N> {
17688            self.call_builder(&pauseAllCall {})
17689        }
17690        ///Creates a new call builder for the [`paused_0`] function.
17691        pub fn paused_0(
17692            &self,
17693            index: u8,
17694        ) -> alloy_contract::SolCallBuilder<T, &P, paused_0Call, N> {
17695            self.call_builder(&paused_0Call { index })
17696        }
17697        ///Creates a new call builder for the [`paused_1`] function.
17698        pub fn paused_1(
17699            &self,
17700        ) -> alloy_contract::SolCallBuilder<T, &P, paused_1Call, N> {
17701            self.call_builder(&paused_1Call {})
17702        }
17703        ///Creates a new call builder for the [`pauserRegistry`] function.
17704        pub fn pauserRegistry(
17705            &self,
17706        ) -> alloy_contract::SolCallBuilder<T, &P, pauserRegistryCall, N> {
17707            self.call_builder(&pauserRegistryCall {})
17708        }
17709        ///Creates a new call builder for the [`pendingWithdrawals`] function.
17710        pub fn pendingWithdrawals(
17711            &self,
17712            withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
17713        ) -> alloy_contract::SolCallBuilder<T, &P, pendingWithdrawalsCall, N> {
17714            self.call_builder(
17715                &pendingWithdrawalsCall {
17716                    withdrawalRoot,
17717                },
17718            )
17719        }
17720        ///Creates a new call builder for the [`permissionController`] function.
17721        pub fn permissionController(
17722            &self,
17723        ) -> alloy_contract::SolCallBuilder<T, &P, permissionControllerCall, N> {
17724            self.call_builder(&permissionControllerCall {})
17725        }
17726        ///Creates a new call builder for the [`queueWithdrawals`] function.
17727        pub fn queueWithdrawals(
17728            &self,
17729            params: alloy::sol_types::private::Vec<
17730                <IDelegationManagerTypes::QueuedWithdrawalParams as alloy::sol_types::SolType>::RustType,
17731            >,
17732        ) -> alloy_contract::SolCallBuilder<T, &P, queueWithdrawalsCall, N> {
17733            self.call_builder(&queueWithdrawalsCall { params })
17734        }
17735        ///Creates a new call builder for the [`queuedWithdrawals`] function.
17736        pub fn queuedWithdrawals(
17737            &self,
17738            withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
17739        ) -> alloy_contract::SolCallBuilder<T, &P, queuedWithdrawalsCall, N> {
17740            self.call_builder(
17741                &queuedWithdrawalsCall {
17742                    withdrawalRoot,
17743                },
17744            )
17745        }
17746        ///Creates a new call builder for the [`redelegate`] function.
17747        pub fn redelegate(
17748            &self,
17749            newOperator: alloy::sol_types::private::Address,
17750            newOperatorApproverSig: <ISignatureUtilsMixinTypes::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
17751            approverSalt: alloy::sol_types::private::FixedBytes<32>,
17752        ) -> alloy_contract::SolCallBuilder<T, &P, redelegateCall, N> {
17753            self.call_builder(
17754                &redelegateCall {
17755                    newOperator,
17756                    newOperatorApproverSig,
17757                    approverSalt,
17758                },
17759            )
17760        }
17761        ///Creates a new call builder for the [`registerAsOperator`] function.
17762        pub fn registerAsOperator(
17763            &self,
17764            initDelegationApprover: alloy::sol_types::private::Address,
17765            allocationDelay: u32,
17766            metadataURI: alloy::sol_types::private::String,
17767        ) -> alloy_contract::SolCallBuilder<T, &P, registerAsOperatorCall, N> {
17768            self.call_builder(
17769                &registerAsOperatorCall {
17770                    initDelegationApprover,
17771                    allocationDelay,
17772                    metadataURI,
17773                },
17774            )
17775        }
17776        ///Creates a new call builder for the [`renounceOwnership`] function.
17777        pub fn renounceOwnership(
17778            &self,
17779        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
17780            self.call_builder(&renounceOwnershipCall {})
17781        }
17782        ///Creates a new call builder for the [`slashOperatorShares`] function.
17783        pub fn slashOperatorShares(
17784            &self,
17785            operator: alloy::sol_types::private::Address,
17786            strategy: alloy::sol_types::private::Address,
17787            prevMaxMagnitude: u64,
17788            newMaxMagnitude: u64,
17789        ) -> alloy_contract::SolCallBuilder<T, &P, slashOperatorSharesCall, N> {
17790            self.call_builder(
17791                &slashOperatorSharesCall {
17792                    operator,
17793                    strategy,
17794                    prevMaxMagnitude,
17795                    newMaxMagnitude,
17796                },
17797            )
17798        }
17799        ///Creates a new call builder for the [`strategyManager`] function.
17800        pub fn strategyManager(
17801            &self,
17802        ) -> alloy_contract::SolCallBuilder<T, &P, strategyManagerCall, N> {
17803            self.call_builder(&strategyManagerCall {})
17804        }
17805        ///Creates a new call builder for the [`transferOwnership`] function.
17806        pub fn transferOwnership(
17807            &self,
17808            newOwner: alloy::sol_types::private::Address,
17809        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
17810            self.call_builder(&transferOwnershipCall { newOwner })
17811        }
17812        ///Creates a new call builder for the [`undelegate`] function.
17813        pub fn undelegate(
17814            &self,
17815            staker: alloy::sol_types::private::Address,
17816        ) -> alloy_contract::SolCallBuilder<T, &P, undelegateCall, N> {
17817            self.call_builder(&undelegateCall { staker })
17818        }
17819        ///Creates a new call builder for the [`unpause`] function.
17820        pub fn unpause(
17821            &self,
17822            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
17823        ) -> alloy_contract::SolCallBuilder<T, &P, unpauseCall, N> {
17824            self.call_builder(&unpauseCall { newPausedStatus })
17825        }
17826        ///Creates a new call builder for the [`updateOperatorMetadataURI`] function.
17827        pub fn updateOperatorMetadataURI(
17828            &self,
17829            operator: alloy::sol_types::private::Address,
17830            metadataURI: alloy::sol_types::private::String,
17831        ) -> alloy_contract::SolCallBuilder<T, &P, updateOperatorMetadataURICall, N> {
17832            self.call_builder(
17833                &updateOperatorMetadataURICall {
17834                    operator,
17835                    metadataURI,
17836                },
17837            )
17838        }
17839        ///Creates a new call builder for the [`version`] function.
17840        pub fn version(&self) -> alloy_contract::SolCallBuilder<T, &P, versionCall, N> {
17841            self.call_builder(&versionCall {})
17842        }
17843    }
17844    /// Event filters.
17845    #[automatically_derived]
17846    impl<
17847        T: alloy_contract::private::Transport + ::core::clone::Clone,
17848        P: alloy_contract::private::Provider<T, N>,
17849        N: alloy_contract::private::Network,
17850    > DelegationManagerInstance<T, P, N> {
17851        /// Creates a new event filter using this contract instance's provider and address.
17852        ///
17853        /// Note that the type can be any event, not just those defined in this contract.
17854        /// Prefer using the other methods for building type-safe event filters.
17855        pub fn event_filter<E: alloy_sol_types::SolEvent>(
17856            &self,
17857        ) -> alloy_contract::Event<T, &P, E, N> {
17858            alloy_contract::Event::new_sol(&self.provider, &self.address)
17859        }
17860        ///Creates a new event filter for the [`DelegationApproverUpdated`] event.
17861        pub fn DelegationApproverUpdated_filter(
17862            &self,
17863        ) -> alloy_contract::Event<T, &P, DelegationApproverUpdated, N> {
17864            self.event_filter::<DelegationApproverUpdated>()
17865        }
17866        ///Creates a new event filter for the [`DepositScalingFactorUpdated`] event.
17867        pub fn DepositScalingFactorUpdated_filter(
17868            &self,
17869        ) -> alloy_contract::Event<T, &P, DepositScalingFactorUpdated, N> {
17870            self.event_filter::<DepositScalingFactorUpdated>()
17871        }
17872        ///Creates a new event filter for the [`Initialized`] event.
17873        pub fn Initialized_filter(
17874            &self,
17875        ) -> alloy_contract::Event<T, &P, Initialized, N> {
17876            self.event_filter::<Initialized>()
17877        }
17878        ///Creates a new event filter for the [`OperatorMetadataURIUpdated`] event.
17879        pub fn OperatorMetadataURIUpdated_filter(
17880            &self,
17881        ) -> alloy_contract::Event<T, &P, OperatorMetadataURIUpdated, N> {
17882            self.event_filter::<OperatorMetadataURIUpdated>()
17883        }
17884        ///Creates a new event filter for the [`OperatorRegistered`] event.
17885        pub fn OperatorRegistered_filter(
17886            &self,
17887        ) -> alloy_contract::Event<T, &P, OperatorRegistered, N> {
17888            self.event_filter::<OperatorRegistered>()
17889        }
17890        ///Creates a new event filter for the [`OperatorSharesDecreased`] event.
17891        pub fn OperatorSharesDecreased_filter(
17892            &self,
17893        ) -> alloy_contract::Event<T, &P, OperatorSharesDecreased, N> {
17894            self.event_filter::<OperatorSharesDecreased>()
17895        }
17896        ///Creates a new event filter for the [`OperatorSharesIncreased`] event.
17897        pub fn OperatorSharesIncreased_filter(
17898            &self,
17899        ) -> alloy_contract::Event<T, &P, OperatorSharesIncreased, N> {
17900            self.event_filter::<OperatorSharesIncreased>()
17901        }
17902        ///Creates a new event filter for the [`OperatorSharesSlashed`] event.
17903        pub fn OperatorSharesSlashed_filter(
17904            &self,
17905        ) -> alloy_contract::Event<T, &P, OperatorSharesSlashed, N> {
17906            self.event_filter::<OperatorSharesSlashed>()
17907        }
17908        ///Creates a new event filter for the [`OwnershipTransferred`] event.
17909        pub fn OwnershipTransferred_filter(
17910            &self,
17911        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
17912            self.event_filter::<OwnershipTransferred>()
17913        }
17914        ///Creates a new event filter for the [`Paused`] event.
17915        pub fn Paused_filter(&self) -> alloy_contract::Event<T, &P, Paused, N> {
17916            self.event_filter::<Paused>()
17917        }
17918        ///Creates a new event filter for the [`SlashingWithdrawalCompleted`] event.
17919        pub fn SlashingWithdrawalCompleted_filter(
17920            &self,
17921        ) -> alloy_contract::Event<T, &P, SlashingWithdrawalCompleted, N> {
17922            self.event_filter::<SlashingWithdrawalCompleted>()
17923        }
17924        ///Creates a new event filter for the [`SlashingWithdrawalQueued`] event.
17925        pub fn SlashingWithdrawalQueued_filter(
17926            &self,
17927        ) -> alloy_contract::Event<T, &P, SlashingWithdrawalQueued, N> {
17928            self.event_filter::<SlashingWithdrawalQueued>()
17929        }
17930        ///Creates a new event filter for the [`StakerDelegated`] event.
17931        pub fn StakerDelegated_filter(
17932            &self,
17933        ) -> alloy_contract::Event<T, &P, StakerDelegated, N> {
17934            self.event_filter::<StakerDelegated>()
17935        }
17936        ///Creates a new event filter for the [`StakerForceUndelegated`] event.
17937        pub fn StakerForceUndelegated_filter(
17938            &self,
17939        ) -> alloy_contract::Event<T, &P, StakerForceUndelegated, N> {
17940            self.event_filter::<StakerForceUndelegated>()
17941        }
17942        ///Creates a new event filter for the [`StakerUndelegated`] event.
17943        pub fn StakerUndelegated_filter(
17944            &self,
17945        ) -> alloy_contract::Event<T, &P, StakerUndelegated, N> {
17946            self.event_filter::<StakerUndelegated>()
17947        }
17948        ///Creates a new event filter for the [`Unpaused`] event.
17949        pub fn Unpaused_filter(&self) -> alloy_contract::Event<T, &P, Unpaused, N> {
17950            self.event_filter::<Unpaused>()
17951        }
17952    }
17953}